小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
crud业务中难免会有列的自增、自减,如果项目中集成的是mybatis-plus的话不做任何修改大概只有两种方案
- 使用
UpdateWrapper
拼接 - 直接写原生sql到xml中
但是两种方法都不优雅,因为都需要写死列名字(如果优雅我还写啥文章。。。)
那么我就尝试能够实现自定义的LambdaUpdateWrapper
1 | xml复制代码<dependency> |
源码分析
1 | java复制代码public LambdaUpdateWrapper<T> set(boolean condition, SFunction<T, ?> column, Object val) { |
可以看到非常简单
相当于把 SFunction
转成 数据库字段名,然后拼接字符串,比如说有个User
有个属性name
set(true, User::getName, 'new name')
转出来的sql应该是set name = 'new name'
那么我们也可以依葫芦画瓢,直接继承LambdaUpdateWrapper
代码实现
1 | java复制代码public class MyLambdaUpdateWrapper<T> extends LambdaUpdateWrapper<T> { |
在service中调用代码如下
1 | java复制代码MyLambdaUpdateWrapper<AgentInfo> updateWrapper = new MyLambdaUpdateWrapper(AgentInfo.class); |
本文转载自: 掘金