前言:mybatis-plus是当下大部分公司所应用的与数据库交互的框架,当然与数据库交互的框架还有其他框架,在这篇文章会谈一下自己对mybatis-plus的了解也算是近年来的一段小规模的总结
Mybatis--Plus相关(个人觉得想要了解一门技术还是看官方文档和源码比较靠谱和印象深刻)
Mybatis--Plus官方文档
Mybatis--Plus的github
Mybatis--Plus的Gitee
与mybatis的比较
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的解决了这个问题。因为他是mybatis的一个加强版是基于mybatis开发的,它有着独特的sql处理方式很是方便大大的提高了开发人员的效率,但是也有缺点它的缺点就是不能独立的抽出相应的模块各个层级的耦合性太大。
mybatis---plus的条件构造器
先对条件构造器里面的条件作出一个解释
where WHERE 语句,拼接 + WHERE 条件
and AND 语句,拼接 + AND 字段=值
andNew AND 语句,拼接 + AND (字段=值) (新的括号)
or OR 语句,拼接 + OR 字段=值
orNew OR 语句,拼接 + OR (字段=值)
eq 等于=
allEq 基于 map 内容等于=
ne 不等于<>
gt 大于>
ge 大于等于>=
lt 小于<
le 小于等于<=
like 模糊查询 LIKE
notLike 模糊查询 NOT LIKE
in IN 查询
notIn NOT IN 查询
isNull NULL 值查询
isNotNull IS NOT NULL
groupBy 分组 GROUP BY
having HAVING 关键词
orderBy 排序 ORDER BY
orderAsc ASC 排序 ORDER BY
orderDesc DESC 排序 ORDER BY
exists EXISTS 条件语句
notExists NOT EXISTS 条件语句
between BETWEEN 条件语句
notBetween NOT BETWEEN 条件语句
addFilter 自由拼接 SQL
last 拼接在最后,例如:last("LIMIT 1")
以上是条件构造器里面的条件相当于sql语句中的where后面的一部分。这个是基于service层继承mybatisplus底层service或者mapper继承mybatisplus底层mapper的一个情况。不同的条件构造器有不同的用法。例如:查找用QueryWrapper,更新用UpdateWrapper。
eg(具体用法)
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
private String managerId;
private LocalDateTime createTime;
}
新增
@Test
public void insert(){
User user = new User();
user.setAge(31);
user.setManagerId(1088250446457389058L);
user.setCreateTime(LocalDateTime.now());
int insert = userMapper.insert(user);
System.out.println("影像记录数:"+insert);
}
删除
@Test
public void updateTest3(){
Wrapper<User> wrapper = new Wrapper<>();
wrapper.eq("name","李艺伟").eq("age",26).set("email","update3@email.com");
userMapper.remove(wrapper );
}
更新
@Test
public void updateTest3(){
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","李艺伟").eq("age",26).set("email","update3@email.com");
userMapper.update(null,updateWrapper);
}
查找
/**
* 查询名字中包含'雨'并且年龄小于40
* where name like '%雨%' and age < 40
*/
@Test
public void selectByWrapper(){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.like("name","雨").lt("age",40);
List<User> userList = userMapper.selectList(queryWrapper);
userList.forEach(System.out::println);
}
mybatis----plus的代码生成器
插件扩展
乐观锁插件
乐观锁插件所要做的事情就是:
1、取出记录时,会带上当前版本version值
2、然后更新的时候会将自己的version值跟数据库记录的version值比较
如果相等,则执行更新操作,并将version+1;如果不等,则更新失败
其实实现的需求就是希望在更新记录的时候,希望这条记录没有给其他人更新过
注意:使用乐观锁插件,需要使用@Version注解实体字段,并且数据库中也要有对应映射字段