天天看點

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就會對分頁有進一步的了解。

繼續閱讀