Mybatis plus分页插件使用的几种方式

第一种:使用Page进行分页

Mybatis plus分页插件使用的几种方式

  • pom文件导入依赖,版本号根据自己使用的版本
 <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.0.1</version>
            <exclusions>
                <exclusion>
                    <artifactId>tomcat-jdbc</artifactId>
                    <groupId>org.apache.tomcat</groupId>
                </exclusion>
            </exclusions>
        </dependency>

2.使用Page传入相应参数,直接上代码,

  • 实体类 使用MP根据表自动生成
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
public class CoreRole implements Serializable {

    private static final long serialVersionUID = 1L;

    @TableId(value = "ID", type = IdType.AUTO)
    private Long id;

    /**
     * 角色编码
     */
    @TableField("CODE")
    private String code;

    /**
     * 角色名称
     */
    @TableField("NAME")
    private String name;

    /**
     * 创建时间
     */
    @TableField("CREATE_TIME")
    private Date createTime;

    /**
     * 1 可以配置 2 固定权限角色
     */
    @TableField("TYPE")
    private String type;


}
  • controller
 @PostMapping(MODEL + "/list.json")
    @Function("role.query")
    @ApiOperation(value = "角色管理--角色查询", notes = "角色查询Api")
    public JsonResult<IPage<CoreRole>> list(@RequestBody RoleQuery condtion) {
    	//需要传入当前页和每页数量,自行看源码
        Page<CoreRole> page = new Page<>(condtion.getPageindex(), condtion.getPagesize());
         //高版本不再是Wrapper而是QueryWrapper
        /**
         * 自动根据前端所传字段进行条件查询,这种方式只需要传入所需条件,会自动进行判断,加入前台传入name,后台接收传入之后,sql会自动判辩:select .....from table where name=..
         * CoreRole roleDO = new CoreRole();
         * BeanUtils.copyProperties(condtion, roleDO);
         * QueryWrapper<CoreRole> entityWrapper = new QueryWrapper<CoreRole>(roleDO);
         *
         */
        
        QueryWrapper<CoreRole> entityWrapper = new QueryWrapper<CoreRole>();
        String name = condtion.getName();
        String code = condtion.getCode();
        String type = condtion.getType();
        //QueryWrapper中封装了很多sql条件查询,比如sql中的in,between等判断条件都可以使用
        
        if (name != null) {
            entityWrapper.like("name", name);
            // entityWrapper.in();
            //entityWrapper.between();
        }
        if (code != null) {
            entityWrapper.like("code", code);
        }
        if (type != null) {
            entityWrapper.like("type", type);
        }
        IPage<CoreRole> allRoles = coreRoleService.getAllRoles(page, entityWrapper);

        return JsonResult.success(allRoles);
    }
  • service
public interface ICoreRoleService extends IService<CoreRole> {
    IPage<CoreRole> getAllRoles(Page<CoreRole> page, QueryWrapper queryWrapper);
}
  • Impl实现层,mapper层次需要继承basemapper才能使用selectPage分页方法
@Service
public class CoreRoleServiceImpl extends ServiceImpl<CoreRoleMapper, CoreRole> implements ICoreRoleService {
   @Override
    public IPage<CoreRole> getAllRoles(Page<CoreRole> page, QueryWrapper queryWrapper) {
        return baseMapper.selectPage(page, queryWrapper);
    }

}
  • mapper层 需要继承BaseMapper,里面封装增删改查的方法
    public interface CoreRoleMapper extends bas<CoreRole> { // }

上述代码打印出来的sql:SELECT ID,CODE,NAME,CREATE_TIME AS createTime,TYPE FROM core_role WHERE name LIKE ?//我前台只传了name;


个人觉得使用Mybatis plus很方便,如果只是一张表不需要联表查询直接使用自带封装的方法就能进行增删改查,使用BaseMapper里面封装的一些方法即可,列selectList,update,updateById等;还有另外一种方式有时间再更新。这只是个人使用心得,做个笔记,并没有深究,小白一枚不喜勿喷,有喜欢探讨的朋友可以一起探讨研究!