1.什么是Mybatis-plus?
Mybatis-plus是mybatis的增强版,一般对单表进行增删改查,如果要自己要构造条件进行增删改查的话,就要用条件构造器进行封装条件。
2.Service CRUD接口
以下的增删改查是没有用到条件构造
1.增加:
// 插入一条记录(选择字段,策略插入)
boolean save(T entity);
// 插入(批量)
boolean saveBatch(Collection<T> entityList);
2.删除:
// 根据 ID 删除
boolean removeById(Serializable id);
// 根据 columnMap 条件,删除记录
boolean removeByMap(Map<String, Object> columnMap);
Map<字段名,值>
3.修改
// 根据 ID 选择修改
boolean updateById(T entity);
// 根据ID 批量更新
boolean updateBatchById(Collection<T> entityList);
例子:Student studen = new Student();
student.setId(1); 根据这个id进行修改
student.setName("aa"); 将原来的name的属性,改成aa
4.
查询
// 根据 ID 查询
T getById(Serializable id); 只查询一条记录
查询多条记录
// 查询所有
List<T> list();
// 查询列表
List<T> list(Wrapper<T> queryWrapper);
// 查询(根据ID 批量查询)
Collection<T> listByIds(Collection<? extends Serializable> idList);
/ 查询(根据 columnMap 条件)
Collection<T> listByMap(Map<String, Object> columnMap);
例子:map
3.条件构造器,可以根据自己要想要构造的条件进行增删改查
步骤:
1.QueryWrapper<实体类> qw = new QueryWrapper<> ();
2.再将qw放入要进行增删改查的操作中
以下例子是baseMapper
组装条件查询
删除也是用querywrapper
使用querywrapper修改信息
对比上一张图片
只要求查询几个字段
使用updatewrapper实现修改功能
4. wrapper,一些常用的条件,大部分都是返回多条语句
allEq:以map为参数条件
allEq:以map为参数条件,再加一个参数时,当null2IsNull是ture时,我们设置字段的值为null时,会做为条件。
allEq(Map<R, V> params, boolean null2IsNull)
eq:等于=,封装当个条件("列名",值),有多个eq时用and拼接
例子:查询名字等于李四的
select * from student where name = “李四”
ne:不等于("列名",值)
例子:查询名字不是张三 的
in,后面是值列表,再列表内的都是符合条件的
用list集合作为参数
notln
5.例子:lambda表达式:条件构造器的条件是通用的
更新:
LambdaUpdateWrapper<ModuleTest> updateWrapper = new LambdaUpdateWrapper<>();
updateWrapper.set(ModuleTest::getName, "2324");
updateWrapper.eq(ModuleTest::getId, 1);
service.update(updateWrapper);
将id为1的的姓名改为2324
查询:
LambdaQueryWrapper<实体类> lambda= new LambdaQueryWrapper<实体类>();
lambda.eq(实体类::get实体类字段, 入参)
.orderByAsc(实体类::get实体类字段)
.select(实体类::get实体类字段, 实体类::get实体类字段);
总结:
一、LambdaQueryWrapper<>
二、QueryWrapper<实体>().lambda()
三、Wrappers.<实体>lambdaQuery()
四、LambdaQueryChainWrapper<实体>(xxxxMapper)
总共有四种lambda表达式,前三种的操作都差不多,只有第四种可以进行链式查询方式
例如:
@Test
void TestLambdaQueryChainWrapper() {
//1、eq查询单条
User one = new LambdaQueryChainWrapper<>(userMapper)
.eq(User::getName, "liangd1")
.one();
System.out.println("UserOne:" + one);
//2、查询list
List<User> users = new LambdaQueryChainWrapper<>(userMapper)
.eq(User::getName, "zcx")
.list();
System.out.println("UserList:" + users);
//3、模糊查询
List<User> LikeList = new LambdaQueryChainWrapper<>(userMapper)
.like(User::getEmail, "test")
.list();
System.out.println("LikeUser:" + LikeList);
}