MybatisPlus基础篇学习笔记(五)------自定义sql及分页查询

原创:兜里的猫

本章目录

  • 自定义sql
  • 分页查询

1. 自定义sql

在dao文件中编写自定义接口,并在方法上使用注解形式注入SQL,如图所示:

第一种:

image

image

第二种

① application.yml加入下面配置

mybatis-plus:mapper-locations: com/ethan/mapper/*

② MemberMapper.java文件

public interface MemberMapper extends BaseMapper<Member> {

    List<Member> selectAllMembers(@Param(Constants.WRAPPER) Wrapper<Member> wrapper);
}

③ 新建MemberMapper.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.ethan.dao.MemberMapper">
    <select id="selectAllMembers" resultType="com.ethan.entity.Member">
        select * from sys_member ${ew.customSqlSegment}
    </select>
</mapper>

==注意select标签的id要与dao接口名称一致。==

④ 代码中方法的调用跟第一种一样。

⑤ 如果出现报错org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ethan.dao.MemberMapper.selectAllMembers,在pom.xml文件中加入如下配置:

<build>      
    <resources>          
        <resource>               
            <directory>src/main/java</directory>               
            <includes>                   
                <include>**/*.xml</include>            
            </includes>
        </resource>
    </resources>
</build>

2. 分页查询

①MP提供的分页方法

首先进行分页插件配置,不配置分页插件,MP提供的分页方法会查全部,分页不生效。

image

下图演示了两种分页返回类型

第一种:以对象的形式输出每页的记录;第二种:以map集合的形式输出每页的记录。

在控制台中大家也能看到分页查询方法会执行两条sql,一条是查询总记录数,一条是查询每页数据;在有些场景中不需要查询总记录数的时候,IPage memberPage = new Page<>(1, 2,false)中第三个参数false为不查询总记录数,默认为true查询总记录数,可通过该参数进行设置。

image

②自定义分页方法

//  MemberMapper.java中添加自定义分页查询接口
    IPage<Member> selectMemberPage(IPage<Member> page, @Param(Constants.WRAPPER) Wrapper<Member> wrapper);
//  MemberMapper.xml中添加select语句
<select id="selectMemberPage" resultType="com.ethan.entity.Member">
        select * from sys_member ${ew.customSqlSegment}
</select>

使用自定的分页查询接口同样也会查询出来,跟MP提供的分页查询方法几乎一样。

image

评论

兜里的猫 : 是md
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×