MyBatis关于多表查询和分页

MyBatis关于多表查询和分页1.1、一对一查询1.1.2、创建User和Order实体类 User类1.1.3、创建OrderMapper接口1.2、⼀对多查询1.2.1、修改User类1.2.2、创建UserMapper接⼝1.2.3、配置User表对应的映射⽂件1.3、多对多查询1.3.1、建库建表1.3.2、创建SysUser和SysRole实体类2.1、typeHandlers标签2.2、plugins标签2.2.1、拷贝相关jar包2.2.2、在核⼼配置⽂件配置PageHelper插件2.2.
摘要由CSDN通过智能技术生成

1.1、一对一查询

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

1.1.2、创建User和Order实体类 User类

User类
public class User {
    
private Integer id;
private String username; 
private String password;
 //set和get方法 //toString方法 }
Order类
public class Order {
    
private Integer id; 
private Date ordertime; 
private Double total; 
//代表当前订单从属于哪一个客户,注意这个属性     
//原本order表中的uid用User类型的user代替了,表示order表和user表的对应关系
private User user; 
//set和get方法 
//toString方法 
}

1.1.3、创建OrderMapper接口

1.1.4、配置Order表对应的映射文件
OrderMapper.xml

//在selset里面的resultMap属性里面填写resultMap标签的id名
//第一种写法
<resultMap id="orderMap" type="order">
        <!--
        id标签是主键
        column是数据库表里面的列
        property是实体类里面的属性
        -->
        <id column="id" property="id"/>
        <result column="ordertime" property="ordertime"/>
        <result column="total" property="total"/>
        <result column="uid" property="user.id"/>
        <result column="username" property="user.username"/>
        <result column="password" property="user.password"/>
    </resultMap>
//第二种
 <!--常用的方法-->
    <resultMap id="orderMap" type="order">
        <!--
        id标签是主键
        column是数据库表里面的列
        property是实体类里面的属性,填属性名
        association:用于建立一对一的关系
        javaType:指定属性的类型
        -->
        <id column="id" property="id"/>
        <result column="ordertime" property="ordertime"/>
        <result column="total" property="total"/>
        <association property="user" javaType="user">
            <id column="uid" property="id"/>
            <result column
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis是一个开源的持久层框架,它可以帮助我们简化数据库操作的开发。在MyBatis中,一对一分页查询可以通过使用嵌套查询来实现。 首先,我们需要定义两个实体类,分别表示两个表的数据。假设我们有两个表:User和Order,一个用户可以有多个订单,而一个订单只属于一个用户。 在User实体类中,我们需要定义一个List<Order>类型的属性,用于存储该用户的所有订单。 接下来,在Mapper.xml文件中,我们可以使用嵌套查询来实现一对一分页查询。具体步骤如下: 1. 首先,在User的resultMap中定义一个association标签,用于关联User和Order的查询结果。在association标签中,我们可以指定关联的属性名、关联的列名等信息。 2. 然后,在User的select语句中,使用嵌套查询来查询该用户的所有订单。可以使用select标签,并在其中编写查询订单的SQL语句。 3. 最后,在User的select语句中添加分页查询的相关参数,如limit和offset等。 以下是一个示例的Mapper.xml配置: ```xml <!-- 定义User的resultMap --> <resultMap id="userResultMap" type="User"> <id property="id" column="user_id" /> <result property="name" column="user_name" /> <association property="orders" javaType="java.util.List" resultMap="orderResultMap" /> </resultMap> <!-- 定义Order的resultMap --> <resultMap id="orderResultMap" type="Order"> <id property="id" column="order_id" /> <result property="name" column="order_name" /> </resultMap> <!-- 查询用户及其订单 --> <select id="getUserWithOrders" resultMap="userResultMap"> SELECT u.id as user_id, u.name as user_name, o.id as order_id, o.name as order_name FROM user u LEFT JOIN order o ON u.id = o.user_id LIMIT #{offset}, #{limit} </select> ``` 在Java代码中,我们可以通过调用MyBatis的SqlSession的selectList方法来执行查询,并传入分页参数。 ```java List<User> userList = sqlSession.selectList("getUserWithOrders", new RowBounds(offset, limit)); ``` 这样,我们就可以实现一对一分页查询了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值