**
一、mybatis-plus简介: **
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,在 Mybatis 的基础上只做增强不做改变,为简化开发、提高效率而生。这是官方给的定义,关于mybatis-plus的更多介绍及特性,可以参考mybatis-plus官网。那么它是怎么增强的呢?其实就是它已经封装好了一些crud方法,我们不需要再写xml了,直接调用这些方法就行,就类似于JPA。在这里的是基于mp3.0版本来进行讲解的,2.0和3.0的使用差不多,只是一些API的名字不同而已。
二、spring整合mybatis-plus:
com.baomidou
mybatis-plus
3.0.3
com.baomidou
mybatis-plus-boot-starter
3.3.1.tmp
以及相关数据库的环境配置,和mybatis整合springboot是一样的
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql:///数据库名?useUnicode=true&characterEncoding=utf8
jdbc.username=#
jdbc.password=#
三、mp示例 构造一个对象,加上相关的mp的注解:
文章图片
一般作用待entity上的常用注解包括:
@TableName,用value来进行标记表名
@TableId,用于标记主键。且可以指定主键的类型。官网常用的有
文章图片
@TableField(exist = false),这个标记一般用来排除那些不是数据库的字段。
定义玩vo后可以定义dao。继承BaseMapper,这种形式一般是用于单表进行操作的,如果涉及到了复杂化的多表操作还是要进行写SQL的。
这里的泛型即后面想要操作的表对应的对象
public interface EmplopyeeDao extends BaseMapper {
}
public interface EmplopyeeService extends IBaseService {
}
同样如果使用service来继承IBaseService,也可以使用service.方法名进行调用的
常规的一些crud操作:(直接可以用service.方法名即可进行调用)
文章图片
文章图片
文章图片
备注:这个saveOrUpdate方法是根据主键来进行判断的,即数据里面存在改对象的主键对应数据则更新,否则进行添加。
文章图片
get操作一般是用来获取单个的对象:
文章图片
文章图片
针对我们常见的page分页的问题,mp可以这样子使用:
最简单的是直接注入pageBean
@Bean
public PaginationInterceptor paginationInterceptor() {
return new PaginationInterceptor();
}
然后就可以直接使用相关的API进行分页查询了。
文章图片
*四、条件构造器(EntityWrapper):
例如:
分页查询年龄在18 - 50且gender为0、姓名为tom的用户
List employees = emplopyeeDao.selectPage(new Page(1,10),
new EntityWrapper()
.between("age",18,50)
.eq("gender",0)
.eq("last_name","tom")
);
一些常用的wrapper有:(使用方式类似于上面示例,直接调用API就行了)
eq:等于 ne:不等于 between:A,B之间 like:"%值%"
likeLeft:"%值" likeRight:“值%”(用这个主要是为了避免索引失效时) isNull isNotNull
groupBy orderBy
这里重点说一下他的or,and。
例: eq(“id”,1).or().eq(“name”,“老王”)—>id = 1 or name = ‘老王’
例:or(i -> i.eq(“name”, “李白”).ne(“status”, “活着”))—>or (name = ‘李白’ and status <> ‘活着’)
这里就对应在某些SQL中,会需要加or部分进行包装,这里一般在写的时候也会要多加注意的。在2.0版本中是用or()和orNew()的方式来进行SQL的动态拼接
例 :and(i -> i.eq(“name”, “李白”).ne(“status”, “活着”))—>and (name = ‘李白’ and status <> ‘活着’),默认情况下调用多个API的时候,是会在SQL语句中直接加上and的,如果像这种情况需要将某一块进行包裹就要采用这种方式。
五、额外补充: 针对某些情况下,我们希望通过数据库乐观锁的方式来对数据进行操作,就可以使用到mp提供的乐观锁实现
文章图片
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());
return interceptor;
}
然后再对应的vo的某字段属性上面加上
【java基础学习|mybatis-plus的介绍和使用】@Version
private Integer version;
推荐阅读
- springboot框架|Springboot框架(2)--springboot的整合
- eclipse|Spring中的IOC和AOP是什么意思()
- 面试|Android studio连接MySQL并完成简单的登录注册功能
- 学习笔记|MySQL-多表查询-联合查询/子查询
- 学习笔记|MySQL-DQL-条件查询/聚合函数/分组查询/排序查询/分页查询
- 学习笔记|MySQL-约束
- spring|Swagger介绍及使用
- html|swagger2 使用教程
- Java后端|Springboot集成Elasticsearch,爬虫爬取数据,实现简单搜索功能