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,但不知道為什么不加會報錯
實現接口:
測試添加:
@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的详细使用(自动填充,乐观锁,分页,条件查询)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu18.04(修改环境变量
- 下一篇: Error creating bean