MyBatis-Plus提供的selectPage实现联表分页查询

本示例基于SpringBoot,引入依赖mybatis-plus

1.引入依赖

        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.4.3.1</version>
        </dependency>

2.实体类

Course

@Data
public class Course implements Serializable {

    /**
    * 课程ID
    */
    @ApiModelProperty("课程ID")
    @TableId(type = IdType.ASSIGN_ID)
    private String id;
    /**
    * 课程讲师ID
    */
    @ApiModelProperty("课程讲师ID")
    private String teacherId;
    /**
    * 课程专业ID
    */
    @ApiModelProperty("课程专业ID")
    private String subjectId;
    /**
    * 课程专业父级ID
    */
    @ApiModelProperty("课程专业父级ID")
    private String subjectParentId;
    /**
    * 课程标题
    */
    @ApiModelProperty("课程标题")
    private String tit;
    /**
    * 课程销售价格,设置为0则可免费观看
    */
    @ApiModelProperty("课程销售价格,设置为0则可免费观看")
    private BigDecimal price;
    /**
    * 总课时
    */
    @ApiModelProperty("总课时")
    private Integer lessonNum;
    /**
    * 课程封面图片路径
    */
    @ApiModelProperty("课程封面图片路径")
    private String cover;
    /**
    * 销售数量
    */
    @ApiModelProperty("销售数量")
    private Long buyCount;
    /**
    * 浏览数量
    */
    @ApiModelProperty("浏览数量")
    private Long viewCount;
    /**
    * 乐观锁
    */
    @ApiModelProperty("乐观锁")
    private Long version;
    /**
    * 课程状态 Draft未发布  Normal已发布
    */
    @ApiModelProperty("课程状态 Draft未发布  Normal已发布")
    private String status;
    /**
    * 逻辑删除 1(true)已删除, 0(false)未删除
    */
    @ApiModelProperty("逻辑删除 1(true)已删除, 0(false)未删除")
    private Integer isDeleted;
    /**
    * 创建时间
    */
    @ApiModelProperty("创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;
    /**
    * 更新时间
    */
    @ApiModelProperty("更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.UPDATE)
    private LocalDateTime gmtModified;
    /**
    * 课程备注
    */
    @ApiModelProperty("课程备注")
    private String remark;
    /**
    * 是否添加 0 否  1 是
    */
    @ApiModelProperty("是否添加 0 否  1 是")
    private Integer isAdd;

    @TableField(exist = false)
    private Subject subject;


}

Subject

/**
 * 课程科目
 * @TableName edu_subject
 */
@Data
public class Subject {
    /**
     * 课程类别ID
     */
    @TableId(type = IdType.ASSIGN_ID)
    private String id;

    /**
     * 类别名称
     */
    @TableField(value = "title")
    private String title;

    /**
     * 父ID
     */
    private String parentId;

    /**
     * 课程分类的状态 1 正常  0  禁用
     */
    private String statusId;

    /**
     * 备注
     */
    private String remark;

    /**
     * 排序字段
     */

    private int sort;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime gmtCreate;

    /**
     * 更新时间
     */

    @ApiModelProperty(value = "更新时间")
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime gmtModified;
}

3.Mapper

public interface CourseMapper extends BaseMapper<Course>{
    Page<Course> selectByCoursePage(Page<Course> page, @Param("ew") QueryWrapper<Course> wrapper);
}

4.CourseMapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.four.firstPage.mapper.CourseMapper">
    <resultMap id="CourseBaseResultMap" type="com.four.pojo.Course" autoMapping="true">
        <id property="id" column="id"/>
        <association property="subject" javaType="com.four.pojo.Subject" autoMapping="true">
            <id property="id" column="id"></id>
        </association>
    </resultMap>

    <select id="selectByCoursePage" resultMap="CourseBaseResultMap">
        select ec.*,es.title from edu_course ec join edu_subject es on ec.subject_id = es.id
        <where>
            <if test="ew!=null and ew.sqlSegment!= ''">
                and ${ew.sqlSegment}
            </if>
        </where>
    </select>
</mapper>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis-Plus是一个增强版的MyBatis框架,它提供了更方便的数据库操作功能。在进行分页查询时,可以使用MyBatis-Plus提供的LambdaQueryWrapper和Page类来实现。 首先,确保已经准备好数据库结构以及数据,并添加了MyBatis-Plus的依赖。 然后,在配置类中启用MyBatis-Plus的join功能,可以通过在DataScopeSqlInjector类中添加@Mapper注解来实现。 接下来,在实体类中定义需要查询的字段,并生成对应的Mapper接口。 在Service类中,可以使用LambdaQueryWrapper构建查询条件,并调用mapper的selectPage方法进行分页查询。使用Page对象指定分页参数,包括当前页码和每页显示的记录数。 最后,在测试类中调用Service的方法进行查询,并打印结果。 以下是示例代码: ```java // 实体类 @Data public class User { private Long id; private String name; private Integer age; private String email; } // Mapper接口 public interface UserMapper extends BaseMapper<User> { } // Service类 @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public IPage<User> getUserListWithPage(int pageNum, int pageSize) { Page<User> page = new Page<>(pageNum, pageSize); LambdaQueryWrapper<User> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getAge, 20); return baseMapper.selectPage(page, queryWrapper); } } // 测试类 @RunWith(SpringRunner.class) @SpringBootTest public class UserServiceImplTest { @Autowired private UserService userService; @Test public void testGetUserListWithPage() { int pageNum = 1; int pageSize = 10; IPage<User> userPage = userService.getUserListWithPage(pageNum, pageSize); List<User> userList = userPage.getRecords(); for (User user : userList) { System.out.println(user); } } } ``` 以上是使用MyBatis-Plus进行分页查询的方法。如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值