来分享一下“mybatis-plus Wrapper条件构造器updateForSet更新方式”的完整攻略。
首先,需要说明的是,mybatis-plus是MyBatis的增强工具,在使用过程中比较方便、简单。在进行update操作时,我们常使用的是updateById或者update实体对象的方法,但是这种方式的不足之处是只可以更新指定的列,而不能在不更改其他列的情况下更新部分列。而mybatis-plus的Wrapper条件构造器updateForSet更新方式就可以完美地解决这个问题。
mybatis-plus的Wrapper条件构造器updateForSet更新方式正是通过构造条件来进行更新,增加了灵活性,下面通过两个示例进行详细讲解。
示例 1
假设我们有以下的Teacher表,需要对年龄小于20的记录进行更新,将其所在班级ID改为10:
id | name | age | class_id |
---|---|---|---|
1 | tom | 18 | 1 |
2 | mike | 20 | 2 |
3 | lucy | 19 | 3 |
4 | jenny | 22 | 4 |
我们采用以下的Wrapper构造条件:
Wrapper<Teacher> updateWrapper = new UpdateWrapper<>();
updateWrapper.lambda().lt(Teacher::getAge, 20).set(Teacher::getClassId, 10);
这里的lambda函数用于指定更新条件,lt即小于小于(lessThan),表示年龄小于20;set函数则用于指定更新的内容,将所在班级ID改为10。
最后,我们通过以下方式执行更新操作:
int count = teacherMapper.update(null, updateWrapper);
System.out.println(count);
这里需要注意,update的第一个参数必须传null,否则会报错。更新后结果:
id | name | age | class_id |
---|---|---|---|
1 | tom | 18 | 10 |
2 | mike | 20 | 2 |
3 | lucy | 19 | 10 |
4 | jenny | 22 | 4 |
示例 2
假设我们有以下的Course表,需要对学分大于2且状态为1的记录进行更新,将学分加1:
id | name | credit | status |
---|---|---|---|
1 | English | 3 | 1 |
2 | Math | 2 | 0 |
3 | Music | 1 | 1 |
4 | Sports | 3 | 1 |
我们采用以下的Wrapper构造条件:
Wrapper<Course> updateWrapper = new UpdateWrapper<>();
updateWrapper.lambda().gt(Course::getCredit, 2).eq(Course::getStatus, 1).setSql("credit=credit+1");
这里的lambda函数用于指定更新条件,gt即大于(greaterThan),表示学分大于2;eq即等于(equalTo),表示状态为1;setSql函数用于指定更新内容,将学分加1。
最后,我们通过以下方式执行更新操作:
int count = courseMapper.update(null, updateWrapper);
System.out.println(count);
更新后结果:
id | name | credit | status |
---|---|---|---|
1 | English | 4 | 1 |
2 | Math | 2 | 0 |
3 | Music | 1 | 1 |
4 | Sports | 4 | 1 |
说明:以上仅是示例,请根据实际需求灵活使用Wrapper条件构造器updateForSet更新方式。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mybatis-plus Wrapper条件构造器updateForSet更新方式 - Python技术站