平时单表查询多了,偶而说要搞个自定义分页,居然第一想法是自己sql写个物理分页,然后查到结果后封装一个分页对象返回给前端,其实mybatis-plus是支持自定义分页的,既然查到了,就在此做个记录,以免以后忘记了好查阅,只上关键部分代码,如下:
// 模拟复杂分页查询,表示查一页,每页两行数据
IPage<UserEntity> userEntityIPage = userService.selectUserByGender(new Page<>(1, 2), gender);
@Service
public class UserService{
@Autowired
private UserMapper userMapper;
// 模拟复杂分页查询
public IPage<UserEntity> selectUserByGender(Page<UserEntity> page,Integer gender){
return userMapper.selectUserByGender(page,gender);
}
}
@Mapper
public interface UserMapper extends BaseMapper<UserEntity> {
// 通过性别分页查询
IPage<UserEntity> selectUserByGender(Page<UserEntity> page, @Param("gender") Integer gender);
}
<?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.hyl.demo.mapper.UserMapper">
<sql id = "entity">
a.id,a.username,a.password,a.gender,a.age,a.create_time
</sql>
<select id="selectUserByGender" resultType="com.hyl.demo.entity.UserEntity">
select <include refid="entity"/> from user a
<where>
<if test="gender != null">
and a.gender = #{gender}
</if>
</where>
</select>
</mapper>
很多东西都体现在细节里,一旦按照自己的写法去封装,恐怕代码复审会被打回,所以各位提升技术视野的同时,多注意记录一些细节总归是好的,共勉!
注:为方便起见,代码属其他文章引用。