• Mybatis的多表操作之一对一/多查询


    目录

     Mybatis的多表操作

    1、一对一查询

    数据库中

    mapper包下orderMapper类下

    pojo包下的order类下

    pojo下user类下

    OrderMapper.xml下

     MybatisTest测试代码下

    运行结果

     OrderMap.xml中也可使用

    2、一对多查询

     UserMapper接口下

    UserMapper.xml下

    Mybatis测试下

    运行结果


     Mybatis的多表操作

    1、一对一查询

    一对一查询的模型

    用户表和订单标的关系为,一个用户有多个订单,一个订单只属于一个用户
    一对一查询的需求:查询一个订单,与此同时查询出该订单所属的用户

    测试订单

    数据库中

    mapper包下orderMapper类下

    1. package com_mybatis_table.mapper;
    2. import com_mybatis_table.pojo.Order;
    3. import java.util.List;
    4. public interface OrderMapper {
    5. //查询全部的方法
    6. public List findAll();
    7. }

    pojo包下的order类下

    1. package com_mybatis_table.pojo;
    2. import java.util.Date;
    3. public class Order {
    4. private int id;
    5. private Date ordertime;
    6. private double total;
    7. //当前订单属于哪一个用户
    8. private User user;
    9. public int getId() {
    10. return id;
    11. }
    12. //对应的get和set方法
    13. @Override
    14. public String toString() {
    15. return "Order{" +
    16. "id=" + id +
    17. ", ordertime=" + ordertime +
    18. ", total=" + total +
    19. ", user=" + user +
    20. '}';
    21. }
    22. }

    pojo下user类下

    1. package com_mybatis_table.pojo;
    2. import java.util.Date;
    3. import java.util.List;
    4. public class User {
    5. private int id;
    6. private String username;
    7. private String password;
    8. private Date birthday;
    9. //描述的是当前用户存在哪些订单
    10. private List orderList;
    11. //对应的get和set方法
    12. @Override
    13. public String toString() {
    14. return "User{" +
    15. "id=" + id +
    16. ", username='" + username + '\'' +
    17. ", password='" + password + '\'' +
    18. ", birthday=" + birthday +
    19. '}';
    20. }
    21. }

    OrderMapper.xml下

    1. "1.0" encoding="UTF-8" ?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="com_mybatis_table.mapper.OrderMapper">
    4. <resultMap id="orderMap" type="order">
    5. <id column="oid" property="id">id>
    6. <result column="ordertime" property="ordertime">result>
    7. <result column="total" property="total">result>
    8. result column="uid" property="user.id">result>
    9. <result column="username" property="user.username">result>
    10. <result column="password" property="user.password">result>
    11. <result column="birthday" property="user.birthday">result>
    12. resultMap>
    13. <select id="findAll" resultMap="orderMap">
    14. SELECT *,o.id oid FROM orders o,USER u WHERE o.uid=u.id
    15. select>
    16. mapper>

    sqlMapConfig.xml还是一样的配置,多出了引入OrderMapper.xml

    1. <mappers>
    2. <mapper resource="com_mybatis/mapper/UserMapper_config.xml">mapper>
    3. <mapper resource="com_mybatis/mapper/OrderMapper.xml">mapper>
    4. mappers>

     MybatisTest测试代码下

    1. public class MybatisTest {
    2. @Test
    3. public void test1() throws IOException {
    4. InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
    5. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    6. SqlSession sqlSession = sqlSessionFactory.openSession();
    7. OrderMapper mapper = sqlSession.getMapper(OrderMapper.class);
    8. List orderList = mapper.findAll();
    9. for (Order order : orderList) {
    10. System.out.println(order);
    11. }
    12. sqlSession.close();
    13. }
    14. }

    运行结果

    查询操作运行结果

     OrderMap.xml中也可使用

    1. <resultMap id="orderMap" type="order">
    2. <id column="oid" property="id">id>
    3. <result column="ordertime" property="ordertime">result>
    4. <result column="total" property="total">result>
    5. <association property="user" javaType="user">
    6. <id column="uid" property="id">id>
    7. <result column="username" property="username">result>
    8. <result column="password" property="password">result>
    9. <result column="birthday" property="birthday">result>
    10. association>
    11. resultMap>

    单独的分离出来,结果也是一致的。

    2、一对多查询

    一对多查询的模型

    用户表和订单表的关系为,一个用户有多个订单,一个订单只属于一个用户
    一对多查询的需求:查询一个用户,与此同时查询出该用户具有的订单

     UserMapper接口下

    1. package com_mybatis_table.mapper;
    2. import com_mybatis_table.pojo.User;
    3. import java.util.List;
    4. public interface UserMapper {
    5. public List findAll();
    6. }

    UserMapper.xml下

    1. "1.0" encoding="UTF-8" ?>
    2. mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    3. <mapper namespace="com_mybatis_table.mapper.UserMapper">
    4. <resultMap id="userMap" type="user">
    5. <id column="uid" property="id">id>
    6. <result column="username" property="username">result>
    7. <result column="password" property="password">result>
    8. <result column="birthday" property="birthday">result>
    9. <collection property="orderList" ofType="order">
    10. <id column="oid" property="id">id>
    11. <result column="ordertime" property="ordertime">result>
    12. <result column="total" property="total">result>
    13. collection>
    14. resultMap>
    15. <select id="findAll" resultMap="userMap">
    16. SELECT *,o.id oid FROM USER u,orders o WHERE u.id=o.uid
    17. select>
    18. mapper>

    Mybatis测试下

    1. @Test
    2. public void test2() throws IOException {
    3. InputStream resourceAsStream = Resources.getResourceAsStream("sqlMapConfig.xml");
    4. SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(resourceAsStream);
    5. SqlSession sqlSession = sqlSessionFactory.openSession();
    6. UserMapper mapper = sqlSession.getMapper(UserMapper.class);
    7. List userList = mapper.findAll();
    8. for (User user : userList) {
    9. System.out.println(user);
    10. }
    11. sqlSession.close();
    12. }

    运行结果

  • 相关阅读:
    css--内外边距、 盒子模型、位置、浮动
    【开源毕设】前后端分离,基于 Vue 和 SpringBoot 的假日旅社管理系统
    利用Hugging Face中的模型进行句子相似性实践
    接口测试新手入门全流程
    WebGPT VS WebGPU
    追寻红色记忆、晋国文明之思考毕业季研学营
    window便捷使用技巧(LTS)
    图解-排序算法-选排
    期末前端web大作业——HTML+CSS+JavaScript仿京东购物商城网页制作(7页)
    信息收集笔记(一)
  • 原文地址:https://blog.csdn.net/weixin_60719453/article/details/126481648