日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

mybatisplus的详细使用(自动填充,乐观锁,分页,条件查询)

發布時間:2024/9/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mybatisplus的详细使用(自动填充,乐观锁,分页,条件查询) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.自動填充

@Data @EqualsAndHashCode(callSuper = false) @TableName("t_user") public class User implements Serializable {private static final long serialVersionUID = 1L;@TableId(value = "id", type = IdType.AUTO)private Integer id;private String nickname;private String password;private String salt;/*** 注冊時間 */@TableField(fill = FieldFill.INSERT)private Date registerDate;/*** 登錄次數*/private Integer loginCount;@TableField(fill = FieldFill.UPDATE) private Date updateTime;}

注意:@TabelName不能缺,否則填充失敗

@Mapper public interface UserMapper extends BaseMapper<User> {}

按道理不需要加@Mapper,但不知道為什么不加會報錯
實現接口:

@Component//注解不要忘記,表示交給Spring容器管理 //用于自動填充的工具類,規定必須要實現這個接口 public class MyMetaObjectHandler implements MetaObjectHandler { @Overridepublic void insertFill(MetaObject metaObject) {this.setFieldValByName("registerDate",new Date(),metaObject);this.setFieldValByName("updateTime",new Date(),metaObject);//當使用mybatis plus實現添加操作時會執行這個方法} @Overridepublic void updateFill(MetaObject metaObject) {this.setFieldValByName("updateTime",new Date(),metaObject); }}

測試添加:

@Autowiredprivate UserMapper userMapper;@Testpublic void updateUser(){User user = new User();user.setId(2);user.setSalt("3241341");userMapper.updateById(user); // User u2 = new User(); // u2.setId(33); // u2.setNickname("小紅"); // u2.setPassword("12341"); // u2.setSalt("efswagq"); // userMapper.insert(u2);}

運行插入:

更新:

2.樂觀鎖

數據庫中添加版本號:

version

添加插件:

@Configuration @MapperScan("按需修改") public class MybatisPlusConfig {/*** 舊版*/@Beanpublic OptimisticLockerInterceptor optimisticLockerInterceptor() {return new OptimisticLockerInterceptor();}/*** 新版*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new OptimisticLockerInnerInterceptor());return mybatisPlusInterceptor;} }

在實體類的字段上加上@Version注解
@Version
private Integer version;

支持的數據類型只有:int,Integer,long,Long,Date,Timestamp,LocalDateTime
整數類型下 newVersion = oldVersion + 1
newVersion 會回寫到 entity 中
僅支持 updateById(id) 與 update(entity, wrapper) 方法
在 update(entity, wrapper) 方法下, wrapper 不能復用!!!

可以自動填充的方式設置版本號的默認值。

3.分頁

配置分頁插件:

@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return interceptor;}

測試:

@Testpublic void testPage(){//創建page對象 傳入兩個參數:當前頁和每頁顯示記錄數Page<User>page = new Page<>(1,3);//調用mybatisplus分頁查詢的方法 把分頁所有數據封裝到page對象中userMapper.selectPage(page,null);page.getRecords().forEach(System.out::println);}

配置類上面一定要加@Configuration,否則沒有插件效果

4.條件查詢

@Testpublic void testSelect(){//執行復雜查詢操作QueryWrapper<User> wrapper = new QueryWrapper<>(); // wrapper.ge("age",30);//查詢age>=30的記錄 // List<User> users = userMapper.selectList(wrapper); // System.out.println(users);wrapper.eq("nickname","小明");//nickname=小明的數據List<User> users = userMapper.selectList(wrapper);System.out.println(users);}

輸出:
[User(id=2, nickname=小明, password=123, salt=3241341, registerDate=null, loginCount=null, updateTime=Thu Jul 29 11:28:56 CST 2021, version=null)]

指定查詢的列:

wrapper.select("nickname");List<User> users = userMapper.selectList(wrapper);for(User user:users)System.out.println(user.getNickname());

總結

以上是生活随笔為你收集整理的mybatisplus的详细使用(自动填充,乐观锁,分页,条件查询)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。