本文共 4100 字,大约阅读时间需要 13 分钟。
什么是MyBatis-Plus? MyBatis-Plus(简称MP)是一个MyBatis的增强工具,提供给我们很多实用的插件。在Mybatis的基础上 只做增强不做改变,为简化我们开发,提高工作效率而生。 MyBatis-Plus的有些什么特性? 侵入:MyBatis-Plus是在MyBatis的基础上增强的,而没有做任何的改变,所以在项目中引入MyBatis Plus 不会对你的现在的MyBatis构架有任何的影响 依赖少:引入MyBatis-Plus要导入什么包呢?仅仅依赖MyBatis与MyBatis-Spring就可以了 损耗小:启动之后,会自动注入基本的CRUD,性能基本无消耗,直接面向对象操作 支持热加载:Mapper对应的XML支持热加载,对于简单的CRUD操作,甚至可以无XML启动 支持代码生成:采用代码或Maven插件可快速生成Mapper、Model、Service、Controller层代码,支持 模板引擎,更 提供了超多的自定义配置让你使用
引入依赖
com.baomidou mybatis-plus-boot-starter 3.1.0 com.baomidou mybatis-plus-extension 3.1.0
替换mybaits 配置
mybatis-plus: typeAliasesPackage: com.hieasy.iposbutteasybi.base.entity mapperLocations: classpath:mappers/**/*.xml configuration: map-underscore-to-camel-case: true default-fetch-size: 500 default-statement-timeout: 80
实体类
import com.alibaba.fastjson.annotation.JSONField;import com.baomidou.mybatisplus.annotation.IdType;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableId;import com.baomidou.mybatisplus.annotation.TableName;import lombok.Data;import java.util.Date;import java.util.Set;@Data@TableName("crm_user")public class User { private static final long serialVersionUID = 1L; @TableId(type = IdType.AUTO) private Integer id; private String userName; private String nickName; private String avatar; /*头像地址*/ private String password; private Integer sex; @JSONField(format = "yyyy-MM-dd") private Date birthday; private String telephone; private String email; private String address; private Integer deleteStatus; /*逻辑删除状态 0 未删除 1 删除*/ private Integer locked;/**是否锁定0 未锁定 1 锁定*/ private String description; @JSONField(format = "yyyy-MM-dd HH:mm:ss") private Date createTime; @JSONField(format = "yyyy-MM-dd HH:mm:ss") private Date updateTime; @TableField(exist = false) private Setroles;}
MyBatis-Plus常用实体类注解
表名注解:@TableName 主键注解:@Tableld 乐观锁标记注解:@Version 字段注解:@TableField 序列主键策略注解:@KeySequence 其中实体无注解化可以如下设置: 当数据库的表字段名是驼峰命名时无需注解处理例如如果实体是CrmUser 这样就不需要写@TableName(“crm_user”)这样的注解 或者全局配置:下划线命名dbColumnUnderline设置为true,大写isCapitalMode设置为true持久层
import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.hieasy.ecrm.entity.User;import org.apache.ibatis.annotations.Mapper;import org.springframework.stereotype.Repository;@Mapper@Repositorypublic interface UserMapper extends BaseMapper{ }
至此就可以使用它自带的一些独特方法
例如:User user=userMapper.selectById(id); ListuserRoles=userRoleMapper.selectList(new QueryWrapper () .eq("user_id", id));
简单的如eq,notin,等等QueryWrapper类,其余太复杂需要单独讲解
先写配置文件
/** * MybatisPlus配置 */@Configurationpublic class MybatisplusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ return new PaginationInterceptor(); }}
配置好之后就可以让它的selectPage方法达到分页查询的效果
例如:@Override public PagefindAllByLike(String searchText, Page pageRequest) throws Exception { QueryWrapper queryWrapper=new QueryWrapper () .eq(StringUtils.isNoneBlank(searchText) ,"concat(user_name,'|','nick_name','|','telephone')", searchText); Page userPage= (Page ) userMapper.selectPage(pageRequest,queryWrapper); return userPage; }
对于多表连接查询mp也提供了分页工具 用法:
dao
public interface UserMapper{ //可以继承或者不继承BaseMapper /** ** 查询 : 根据state状态查询用户列表,分页显示 *
* * @param page * 翻页对象,可以作为 xml 参数直接使用,传递参数 Page 即自动分页 * @param state * 状态 * @return */ ListselectUserList(Pagination page, Integer state);}UserMapper.xml 等同于编写一个普通 list 查询,mybatis-plus 自动替你分页
转载地址:http://mcnab.baihongyu.com/