mybatis-plus Wrapper条件构造器updateForSet更新方式
作者:程序猿吉良吉影 时间:2022-12-30 10:40:19
Wrapper条件构造器updateForSet更新
官方文档:https://baomidou.gitee.io/mybatis-plus-doc/#/wrapper
实体包装器,用于处理 sql 拼接,排序,实体参数查询等!
补充说明: 使用的是数据库字段,不是Java属性!
实体包装器 EntityWrapper 继承 Wrapper
简单示例
翻页查询
public Page<T> selectPage(Page<T> page, EntityWrapper<T> entityWrapper) {
if (null != entityWrapper) {
entityWrapper.orderBy(page.getOrderByField(), page.isAsc());
}
page.setRecords(baseMapper.selectPage(page, entityWrapper));
return page;
}
拼接sql方式 一
@Test
public void testTSQL11() {
/*
* 实体带查询使用方法 输出看结果
*/
EntityWrapper<User> ew = new EntityWrapper<User>();
ew.setEntity(new User(1));
ew.where("user_name={0}", "'zhangsan'").and("id=1")
.orNew("user_status={0}", "0").or("status=1")
.notLike("user_nickname", "notvalue")
.andNew("new=xx").like("hhh", "ddd")
.andNew("pwd=11").isNotNull("n1,n2").isNull("n3")
.groupBy("x1").groupBy("x2,x3")
.having("x1=11").having("x3=433")
.orderBy("dd").orderBy("d1,d2");
System.out.println(ew.getSqlSegment());
}
括号拼接
.isNull("removor").andNew("idCard="+ idCard+" or phone="+ phone)
sql
(removor IS NULL) AND (idCard=666 or phone=15866958266)
拼接sql方式二
int buyCount = selectCount(Condition.create()
.setSqlSelect("sum(quantity)")
.isNull("order_id")
.eq("user_id", 1)
.eq("type", 1)
.in("status", new Integer[]{0, 1})
.eq("product_id", 1)
.between("created_time", startDate, currentDate)
.eq("weal", 1));
更新:updateForSet根据条件更新字段
.updateForSet("hits=hits+1", new EntityWrapper<T>().eq("id", id));
自定义SQL方法如何使用 Wrapper
mapper java接口方法
List<User> selectMyPage(RowBounds rowBounds, @Param("ew") Wrapper<T> wrapper);
mapper xml定义
<select id="selectMyPage" resultType="User">
SELECT * FROM user
<where>
${ew.sqlSegment}
</where>
</select>
关于${ew.sqlSegment} 使用了 $ 不要误以为就会被 sql 注入,请放心使用 mp 内部对 wrapper 进行了字符转义处理!
条件参数说明
查询方式 | 说明 |
---|---|
setSqlSelect | 设置 SELECT 查询字段 |
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") |
注意! xxNew 都是另起 ( ... ) 括号包裹。
mybatis-plus中update更新使用注意事项
update(pojo,Wrapper)方法
封装一个对象mcTemplate,使用update(pojo,Wrapper) ,该方法仅仅修改mcTemplate中不为空的字段,别的字段不更新,在数据库中保持不变,如下:
mcTemplate.setStatus(TemplateStatusEnum.PASSED.getStatus());//待更新的字段
LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper();
lambdaUpdateWrapper.eq(McTemplate::getId,mcTemplate.getId() ); //限定条件
Integer result = mcTemplateMapper.update(mcTemplate, lambdaUpdateWrapper); //更新mcTemplate中不为空的字段
更新的字段比较少
不想封装成一个对象的时候,可以采取便捷方式,该方式同上只会更新设定的字段,对于其他字段不更新。
LambdaUpdateWrapper lambdaUpdateWrapper = new LambdaUpdateWrapper();
lambdaUpdateWrapper.eq(McTemplate::getId,mcTemplate.getId() )
.set(McTemplate::getStatus,1); //更新的值
Integer result = mcTemplateMapper.update(null, lambdaUpdateWrapper);
updateById(mcTemplate)方法
该方法会将所有的字段都更新,在对象mcTemplate中没有的字段,会字段赋值null
int result = mcTemplateMapper.updateById(mcTemplate);
来源:https://blog.csdn.net/weixin_30512027/article/details/83270344
标签:Wrapper,条件构造器,updateForSet,更新
0
投稿
猜你喜欢
Java实现年兽大作战游戏详解
2023-11-08 04:28:05
C#实现的微信网页授权操作逻辑封装示例
2022-08-31 04:30:05
Springboot通过run启动web应用的方法
2021-08-30 01:57:37
C#9.0推出的4个新特性介绍
2021-10-10 07:49:29
Android 清除SharedPreferences 产生的数据(实例代码)
2023-07-06 15:48:52
C#正则表达式转义字符介绍
2022-11-03 01:10:09
Java 实现将List平均分成若干个集合
2023-10-16 21:36:59
Java数组(Array)最全汇总(上篇)
2022-12-19 23:22:30
JavaWeb之Filter过滤器详解
2021-06-30 03:40:55
Android自定义控件案例汇总1(菜单、popupwindow、viewpager)
2021-11-22 14:37:32
Springboot整合Shiro的代码实例
2021-09-03 04:16:52
Java内存溢出案例模拟和原理分析过程
2023-04-09 07:27:48
Android Google AutoService框架使用详解
2023-07-19 22:48:14
springboot整合RabbitMQ 中的 TTL实例代码
2022-04-18 03:12:34
C#写入对象或集合类型数据到xml文件的方法
2022-11-12 17:11:37
详解Spring boot/Spring 统一错误处理方案的使用
2023-11-24 12:56:07
Android自定义view实现圆形进度条效果
2021-09-12 00:30:03
struts中动态方法调用使用通配符
2023-02-01 02:52:43
关于IDEA配置文件字符集的问题
2022-11-01 13:06:44
Android引导页面的简单实现
2023-08-06 04:24:32