天天看点

SpringBoot集成Mybatis-Plus分页多条件查询

1.导包

<!--mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.3.0</version>
        </dependency>
         <!--这里要加plus-extension,不然会有NoClassDefFoundError: org/mybatis/logging/LoggerFactory错误 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
            <version>3.3.0</version>
        </dependency>
           

2.添加分页配置类

@Configuration
@ConditionalOnClass(value = {PaginationInterceptor.class})
public class MyBatisPlusPageConfig {
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}
           

3.写mapper文件,也可以自定义mapper.xml

@Mapper
public interface StudentMapper extends BaseMapper<Student> {
    /**
     * 查询所有学生信息
     * @return
     */
    List<Student> findAll(Page<Student> page, @Param("stu") PageStu pageStu);

}
           

相关的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.hxj.register.mapper.StudentMapper">
    <!--通用查询结果列-->
    <sql id="baseSql">
        id as id,
        stu_id as stuId,
        stu_pwd as stuPwd,
        stu_name as stuName,
        stu_id_card as stuIdCard,
        stu_mail as stuMail,
        stu_in_school as stuInSchool,
        stu_dormitory as stuDormitory,
        stu_one_card as stuOneCard,
        stu_bedding as stuBedding,
        stu_train_uniform as stuTrainUniform,
        major_id as majorId,
        major_name as majorName
    </sql>
    <sql id="baseQuerySql">
        <if test="stu.stuId != null and stu.stuId != ''">
            AND stu_id = #{stu.stuId}
        </if>
        <if test="stu.stuName != null and stu.stuName != ''">
            AND stu_name like concat('%',#{stu.stuName},'%')
        </if>
        <if test="stu.stuDormitory != null and stu.stuDormitory != ''">
            AND stu_dormitory like concat('%',#{stu.stuDormitory},'%')
        </if>
        <if test="stu.majorName != null and stu.majorName != ''">
            AND major_name like concat('%',#{stu.majorName},'%')
        </if>
    </sql>
    <!--查询所有学生的信息-->
    <select id="findAll" resultType="com.hxj.register.pojo.Student">
        select <include refid="baseSql"></include> from student_info where 1=1
        <include refid="baseQuerySql"></include>
        order by stu_id desc
    </select>
</mapper>
           

4.pojo类文件要加表名【数据库表和类名不一致】

@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "student_info")
public class Student implements Serializable {
      @TableId(type = IdType.AUTO)
      private Integer id;
      private Integer stuId;
      private String stuPwd;
      private String stuName;
      private String stuIdCard;
      private String stuMail;
      private Date stuInSchool;
      private String stuDormitory;
      private boolean stuOneCard;
      private boolean stuBedding;
      private boolean stuTrainUniform;
      private String majorId;
      private String majorName;
      private boolean delFlag;
}
           

5.使用StudentMapper 就可以直接调用方法了

这里的studentMapper里面封装了很多方法,分页查询,查询单个,条件封装查询什么的,可以去搜看Mybatis-plus的条件封装QueryWrapper,用了QueryWrapper的话很多时候就不用了写sql语句了。

@Service
public class StudentServiceImpl implements StudentService {
    @Resource
    private StudentMapper studentMapper;
    /**
     * 多条件分页查询返数据
     * @param pageStu
     * @return
     */
    @Override
    public PageResult page(PageStu pageStu) {
        Page<Student> queryPage = new Page<>(pageStu.getCurrentPage(),pageStu.getPageSize());
        List<Student> pages = studentMapper.pages(queryPage, pageStu);
        return new PageResult((long)pages.size(), pages);
    }

}
           

6.提示

如果你没看懂该文章,因为文章中的一些文件是自定义的,在我另一个博客文章里面有mybatis的多条件分页查询/pageHelper,看完mybatis这篇文章再来看这个mybatisplus就会对分页有进一步的理解。

继续阅读