条件构造器咱们讲述queryWrapper和updateWrapper的用法、关系、以及强大之处,但是在具体的项目当中使用EntityWrapper 也可以来实现,本篇文章就来说一下 EntityWrapper;
首先 我们来说一下AbstractWrapper:
QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类
用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件
注意: entity 生成的 where 条件与 使用各个 api 生成的 where 条件没有任何关联行为;
下面是wapper的关系继承图:
wapper介绍 :
Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper
QueryWrapper : Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作
但是在具体的项目当中基本得CRUD我觉得 用EntityWrapper 更文方便些,下面是一些例子:
1 比如说我们去更新某个实体:
String id = request.getParameter("id");
System.out.println(params);
String title = request.getParameter("title");
System.out.println(title);
QdAdTestEntity qdAdTestEntity = new QdAdTestEntity();
qdAdTestEntity.setTitle((String)params.get("title"));
boolean update = qdAdTestService.update(qdAdTestEntity, new EntityWrapper<QdAdTestEntity>().eq("id", params.get("id")));
还有一种较为简单的方法,就是前端传递过来的就是这一个将要更新的实体类:
这时我们直接使用一句话就可以完成:
boolean update = qdAdTestService.update(qdAdTestEntity, new EntityWrapper<QdAdTestEntity>().eq("id", qdAdTestEntity.get("id")));
这样也会去更新相应的实体
2 当我们想要去查询某个列表时候:
首先是单纯的列表,没有什么条件
List<User> list = qdGoodsCategoryService.selectList(new EntityWrapper<>());
当然 new EntityWrapper也可以写null
当需要某些条件去查询的时候:
如我们要去查询 姓名是张丹的所有人,则可以写为如下实例:
List<User> list = qdGoodsCategoryService.selectList(new User,new EntityWrapper<User>().eq("name","张丹"));
这样 就可以查询出来想要的结果,当然如果想要更多的条件拼接可以去官网查看,
下面是官网地址:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper
3 增加某条记录 我们可以直接将前端传递过来的实体进行insert,如下:
userService.insert(user);
4 删除,对于删除来说,以前的写法都是单个的去删除,但是这儿可以将前端传递过来的id集合进行批量的删除,具体如下:
System.out.println(ids);
UserService.deleteBatchIds(Arrays.asList(ids));
这样即可批量的删除
注: 我们现在写的这些方法都是mybatis-puls自己提供的,在相应的service,dao,mapper 当中是没有对于的方法和sql的,所以说大大的减轻了我们开发的压力;
但是从实现上来讲,要注意以下极几点(springBoot项目来说):
**在编写实体类时,实现Serializable接口,用@TableName("user") 申明表明,用@TableId来声明主键
**在编写Dao 时要继承BaseMapper<T>,泛型T 就写你相应的实体类型
**在编写service的实现类的时候,除了要实现相应的service接口,还要继承
extends ServiceImpl<S,T> S--就是你编写的相应的Dao,T--就是相应的实体类
这就是在springBoot项目当中需要去注意的内容
以上就是用EntityWrapper基本得增删改查,要是想要了解其他的条件构造可以去官网查看:
官网地址:https://mp.baomidou.com/guide/wrapper.html#abstractwrapper