MyBatis复杂映射开发之一对一查询

一对一查询需求

用户表和订单表的关系为:一个用户可以有多个订单,一个订单只能从属于一个用户

一对一查询需求:查询一个订单,同时查询出该订单所对应的用户

对应的sql语句: select * from orders o,user u where o.uid=u.id

查询结果如下:

id ordertime total uid id username password birthday 1 2022-03-17 17:15:33 3000 1 1 lucy 123 2022-03-17 17:15:56 2 2022-03-17 17:15:33 4000 1 1 lucy 123 2022-03-17 17:15:56 3 2022-03-17 17:15:33 5000 2 2 tom 123 2022-03-17 17:15:56

需求分析

具体实现

  • User
/**
 * 用户信息
 *
 * @name: User
 * @author: terwer
 * @date: 2022-05-08 17:41
 */
class User {
    var id: Int? = null
    var username: String? = null
    override fun toString(): String {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                '}'
    }
}
/**
 * 用户信息
 *
 * @name: User
 * @author: terwer
 * @date: 2022-03-17 17:41
 **/
public class User {
    private Integer id;
    private String username;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                '}';
    }
}
  • Order
/**
 * 订单
 *
 * @name: Order
 * @author: terwer
 * @date: 2022-05-08 17:42
 */
class Order {
    var id: Int? = null
    var orderTime: String? = null
    var total: Double? = null

    // 代表当前订单属于哪一个用户
    var user: User? = null
    override fun toString(): String {
        return "Order{" +
                "id=" + id +
                ", orderTime='" + orderTime + '\'' +
                ", total=" + total +
                ", user=" + user +
                '}'
    }
}
/**
 * 订单
 *
 * @name: Order
 * @author: terwer
 * @date: 2022-03-17 17:42
 **/
public class Order {
    private Integer id;
    private String orderTime;
    private Double total;

    // 代表当前订单属于哪一个用户
    private User user;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getOrderTime() {
        return orderTime;
    }

    public void setOrderTime(String orderTime) {
        this.orderTime = orderTime;
    }

    public Double getTotal() {
        return total;
    }

    public void setTotal(Double total) {
        this.total = total;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    @Override
    public String toString() {
        return "Order{" +
                "id=" + id +
                ", orderTime='" + orderTime + '\'' +
                ", total=" + total +
                ", user=" + user +
                '}';
    }
}
/**
 * 订单映射
 *
 * @name: IUserMapper
 * @author: terwer
 * @date: 2022-05-08 17:54
 */
interface OrderMapper {
    /**
     * 查询订单同时查询订单所属用户
     * @return
     */
    fun findOrderAndUser(): List?

}
/**
 * 订单映射
 *
 * @name: IUserMapper
 * @author: terwer
 * @date: 2022-03-17 17:54
 **/
public interface OrderMapper {
    /**
     * 查询订单同时查询订单所属用户
     * @return
     */
    public List findOrderAndUser();
}

        select * from orders o,user u where o.uid=u.id

另外一种配置方法


        select * from orders o,user u where o.uid=u.id

@Test
@Throws(IOException::class)
fun test1() {
    val resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml")
    val sqlSessionFactory = SqlSessionFactoryBuilder().build(resourceAsStream)
    val sqlSession = sqlSessionFactory.openSession()
    val orderMapper = sqlSession.getMapper(OrderMapper::class.java)
    val orderList = orderMapper.findOrderAndUser()
    for (order in orderList) {
        println(order)
    }
}
@Test
public void test1() throws IOException {
    InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
    SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);

    SqlSession sqlSession = sqlSessionFactory.openSession();
    OrderMapper orderMapper = sqlSession.getMapper(OrderMapper.class);

    List orderList = orderMapper.findOrderAndUser();
    for (Order order : orderList) {
        System.out.println(order);
    }
}

文章更新历史
2022/05/08 feat:新增Kotlin支持

Original: https://www.cnblogs.com/tangyouwei/p/mybatis-complex-mapping-development-one-to-one-query.html
Author: 灯塔下的守望者
Title: MyBatis复杂映射开发之一对一查询

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/570311/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • .NET Core 微服务架构 Steeltoe 使用(基于 Spring Cloud)

    阅读目录: 1. Spring Cloud Eureka 注册服务及调用 2. Spring Cloud Hystrix 断路器 3. Spring Cloud Hystrix 指…

    Java 2023年5月29日
    071
  • mybatis-延迟加载

    本文主要介绍下mybatis的延迟加载,从原理上介绍下怎么使用、有什么好处能规避什么问题。延迟加载一般用于级联查询(级联查询可以将主表不能直接查询的数据使用自定义映射规则调用字表来…

    Java 2023年6月9日
    083
  • 搬砖_kafka的一些命令

    有关kafka的一些命令 kafka查看当前消费组消费到哪个offset cd /opt/kafka/bin #即进&#x516…

    Java 2023年6月7日
    0105
  • Java面向对象(五)

    Java面向对象(五) Java面向对象(五) – 十六、面向对象特征之三: 多态性 16.1 多态性的定义: 16.2 多态性的使用: 16.3 多态典型例题 十七、…

    Java 2023年6月9日
    071
  • 10分钟搞定让你困惑的 Jenkins 环境变量

    前言 Jenkins, DevOps 技术栈的核心之一,CI/CD 离不开编写 Pipeline 脚本,上手 Jenkins ,简单查一下文档,你就应该不会被 agent,stag…

    Java 2023年6月5日
    071
  • Spring Security踩坑记录(静态资源放行异常)

    转自:https://blog.csdn.net/qq_34204490/article/details/110005404 Springboot + Spring-Securit…

    Java 2023年5月30日
    081
  • 线程同步的情景之一

    从本篇文章开始,我将陆续介绍多线程中会遇到的三种情况。 情景一:此茅坑有主了 大锤:”我擦,居然一个茅坑有两个人在用。” 大锤:”啊,忍不住了,…

    Java 2023年5月30日
    075
  • java8函数式接口 Supplier

    java8函数式接口 Supplier函数式接口(Functional Interface)是JDK 8中新增的特性,其实也是lambda表达式编程模式中的一个很重要的构成。我们先…

    Java 2023年6月7日
    071
  • JVM-方法区

    方法区 JAVA技术交流群:737698533 方法区是运行时数据区的最后一个内容,Method Area 栈,堆,方法区中的交互关系 方法区简述 方法区(Method Area)…

    Java 2023年6月6日
    088
  • element-image组件,大图预览始终从第一张图开始,不能定位当前图片位置解决方案

    转载:https://blog.csdn.net/x11819130/article/details/101779426 Original: https://www.cnblogs…

    Java 2023年6月5日
    098
  • jenkins升级2.249版本后 节点(Node)配置的启动方式中没有Launch agent via Java Web Star

    选择【lanch agent by connecting it to the master】这个选项时–默认选项,报错如下 Either WebSocket mode …

    Java 2023年5月29日
    086
  • Jenkins持续集成入门到精通(进阶篇)

    视频参考:https://www.bilibili.com/video/BV1Vp4y1b7ZN?p=51 Jenkins+Docker+SpringCloud持续集成流程说明 大…

    Java 2023年6月8日
    098
  • 关于提问

    A 和 B 对话如下: A: xx 产品,一个月一个版本,只包含一个小功能,培训销售的工作跟不上怎么办?培训工作跟不上,研发做的功能前端都不知道,那做了有什么用?为什么不规划成大版…

    Java 2023年6月16日
    099
  • SpringMvc(一)-初识

    1、环境搭建 1.1 jar包 4.3.18.RELEASE org.springframework spring-web ${spring.version} org.spring…

    Java 2023年6月15日
    067
  • 一文读懂位运算

    在计算机程序中所有的数都是以二进制形式存储的。位运算就是直接对整数在二进制进行计算操作。作为一名程序员掌握位运算的基本使用是很重要的,而对于算法程序员来说,位运算的灵活使用能够更灵…

    Java 2023年6月7日
    058
  • 终端直接执行.java文件

    1、首先编译java文件 javac xx.java 「最好先建一个空文件夹,把xx.java文件放入」 2、然后执行 java xx 「这样就会直接执行了,不需要使用Idea,e…

    Java 2023年6月6日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球