1.@ 根據(jù)id更新
1
2
3
4
|
User user = new User(); user.setUserId( 1 ); user.setAge( 29 ); userMapper.updateById(user); |
2.@ 條件構(gòu)造器作為參數(shù)進(jìn)行更新
1
2
3
4
5
6
|
//把名字為rhb的用戶年齡更新為18,其他屬性不變 UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq( "name" , "rhb" ); User user = new User(); user.setAge( 18 ); userMapper.update(user, updateWrapper); |
@ 假設(shè)只更新一個(gè)字段在使用updateWrapper 的構(gòu)造器中也需要構(gòu)造一個(gè)實(shí)體對(duì)象,這樣比較麻煩。可以使用updateWrapper的set方法
1
2
3
4
|
//只更新一個(gè)屬性,把名字為rhb的用戶年齡更新為18,其他屬性不變 UpdateWrapper<User> updateWrapper = new UpdateWrapper<>(); updateWrapper.eq( "name" , "rhb" ).set( "age" , 18 ); userMapper.update( null , updateWrapper); |
3.@ lambda構(gòu)造器
1
2
3
|
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>(); lambdaUpdateWrapper.eq(User::getName, "rhb" ).set(User::getAge, 18 ); Integer rows = userMapper.update( null , lambdaUpdateWrapper); |
mybatisplus update語(yǔ)句為null時(shí)沒(méi)有拼接上去
我有一個(gè)設(shè)置頁(yè)面,數(shù)據(jù)庫(kù)就相當(dāng)于是key和value的樣子,當(dāng)value為空的時(shí)候用updatebyId就變成了
1
|
update param where key=? |
就沒(méi)有set就會(huì)報(bào)語(yǔ)法錯(cuò)誤
這個(gè)出現(xiàn)的場(chǎng)景是如果數(shù)據(jù)庫(kù)本來(lái)改自己有值更新 null時(shí)不會(huì)有問(wèn)題,當(dāng)數(shù)據(jù)庫(kù)也是null時(shí)更新就不會(huì)拼接set
數(shù)據(jù)庫(kù)有值時(shí)update null
數(shù)據(jù)庫(kù)也為空時(shí)的更新
然后查解決方案:mybatisplus為null的時(shí)候不會(huì)拼接,可配置一個(gè)策略u(píng)pdateStrategy = FieldStrategy.IGNORED無(wú)論是啥都會(huì)拼接 但是還是會(huì)有問(wèn)題,指定下類型就可以了 最后經(jīng)測(cè)試有兩種方案可行
1
2
3
|
@TableField (value = "PARAMVAL" ,updateStrategy = FieldStrategy.IGNORED,jdbcType = JdbcType.VARCHAR) //@TableField(value = "PARAMVAL",jdbcType = JdbcType.VARCHAR, fill = FieldFill.UPDATE) private String paramVal; |
以上兩種方案均可
到此這篇關(guān)于mybatis-plus update更新操作的三種方式(小結(jié))的文章就介紹到這了,更多相關(guān)mybatis-plus update更新 內(nèi)容請(qǐng)搜索服務(wù)器之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持服務(wù)器之家!
原文鏈接:https://blog.csdn.net/weixin_44162337/article/details/107828366