1. 分页查询
方案一:MyBatis XML
MyBatis 内置的使用方式,步骤如下:
① 创建 AdminUserMapper.xml
文件,编写两个 SQL 查询语句:
<?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="cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper">
<select id="selectPage01List"
resultType="cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO" >
SELECT * FROM system_users
<where>
<if test="reqVO.username != null and reqVO.username !=''">
AND username LIKE CONCAT('%',#{reqVO.username},'%')
</if>
<if test="reqVO.createTime != null">
AND create_time BETWEEN #{reqVO.createTime[0]}, #{reqVO.createTime[1]},
</if>
<if test="reqVO.status != null">
AND status = #{reqVO.status}
</if>
</where>
ORDER BY id DESC
LIMIT #{reqVO.pageNo}, #{reqVO.pageSize}
</select>
<select id="selectPage01Count" resultType="Long" >
SELECT COUNT(1) FROM system_users
<where>
<if test="reqVO.username != null and reqVO.username !=''">
AND username LIKE CONCAT('%',#{reqVO.username},'%')
</if>
<if test="reqVO.createTime != null">
AND create_time BETWEEN #{reqVO.createTime[0]}, #{reqVO.createTime[1]},
</if>
<if test="reqVO.status != null">
AND status = #{reqVO.status}
</if>
</where>
</select>
</mapper>
② 在 AdminUserMapper 创建这两 SQL 对应的方法:
@Mapper
public interface AdminUserMapper extends BaseMapperX<AdminUserDO> {
/**
* 查询分页的列表
*/
List<AdminUserDO> selectPage01List(@Param("reqVO") UserPageReqVO reqVO);
/**
* 查询分页的条数
*/
Long selectPage01Count(@Param("reqVO") UserPageReqVO reqVO);
}
其中 UserPageReqVO.java (opens new window)是分页查询的请求 VO。
③ 在 AdminUserServiceImplService 层,调用这两个方法,实现分页查询:
@Service
@Slf4j
public class AdminUserServiceImpl implements AdminUserService {
@Override
public PageResult<AdminUserDO> getUserPage(UserPageReqVO reqVO) {
return new PageResult<>(
userMapper.selectPage01List(reqVO),
userMapper.selectPage01Count(reqVO)
);
}
}
④ 简单调用下,可以在 IDEA 控制台看到 2 条 SQL:
方案二:MyBatis Plus XML
MyBatis Plus 拓展的使用方式,可以简化只需要写一条 SQL,步骤如下:
① 创建 AdminUserMapper.xml
文件,只编写一个 SQL 查询语句:
<?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="cn.iocoder.yudao.module.system.dal.mysql.user.AdminUserMapper">
<select id="selectPage02"
resultType="cn.iocoder.yudao.modul