<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
通過mybatis-plus實現分頁,也是很簡單,外掛大法。
把分頁的外掛也設定到統一的設定類裡:
@Configuration // 設定掃描mapper的路徑 @MapperScan("com.pingguo.mpdemo.mapper") public class MpConfig { // 樂觀鎖外掛 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } // 分頁外掛 @Bean public PaginationInterceptor paginationInterceptor() { return new PaginationInterceptor(); } }
還是在測試類中增加測試方法,這裡列了常用到的方法,後面配合前端頁面做分頁功能時候,都要用上。
// 測試分頁 @Test void testPaging() { // 建立分頁物件,current為當前頁數,size為每頁最大記錄數 Page<User> pageUser = new Page<>(1, 5); // 呼叫分頁查詢方法,傳入分頁物件-pageUser,wrapper是構造條件物件,這裡暫時寫null userMapper.selectPage(pageUser, null); System.out.println("當前頁:"+ pageUser.getCurrent()); System.out.println("當前頁資料list集合:" + pageUser.getRecords()); System.out.println("每頁顯示記錄數:" + pageUser.getSize()); System.out.println("總記錄數:" + pageUser.getTotal()); System.out.println("總頁數:" + pageUser.getPages()); System.out.println("是否有下一頁:" + pageUser.hasNext()); System.out.println("是否有上一頁:" + pageUser.hasPrevious()); }
目前資料表共12條資料,執行一下,對比下結果:
當前頁:1 當前頁資料list集合:[User(id=2, name=修改名稱222, age=19, email=pingguotest1@pingguo.com, createTime=Thu Dec 24 23:27:20 CST 2020, updateTime=Thu Dec 24 23:27:23 CST 2020, version=null), User(id=3, name=wesson3, age=20, email=pingguotest1@pingguo.com, createTime=Wed Dec 23 23:27:32 CST 2020, updateTime=Thu Dec 24 23:27:36 CST 2020, version=null), User(id=4, name=daxiong, age=22, email=pingguotest1@pingguo.com, createTime=null, updateTime=Fri Dec 25 00:55:02 CST 2020, version=null), User(id=5, name=wesson5, age=20, email=pingguotest1@pingguo.com, createTime=null, updateTime=null, version=null), User(id=1342322873243996161, name=李白6, age=66, email=laowang@123.com, createTime=Fri Dec 25 12:14:47 CST 2020, updateTime=Fri Dec 25 15:43:11 CST 2020, version=2)] 每頁顯示記錄數:5 總記錄數:12 總頁數:3 是否有下一頁:true 是否有上一頁:false
邏輯刪除並不是真正從資料表開刪除資料記錄,只是通過一個欄位去標識出這條記錄被刪除了,比如deleted
,0表示未刪除,1表示已刪除。
在對應實體類裡增加屬性,並且加上@TableLogic
註解。為了方便,我還加了自動填充。
@Data public class User { @TableId(type = IdType.ID_WORKER) private Long id; private String name; ... ... @TableLogic // 加上邏輯刪除註解 @TableField(fill = FieldFill.INSERT) //為了方便,加了自動填充 private Integer deleted; }
自動填充的話,這裡也需要增加:
@Component //此註解表示 將其交給spring去管理 public class MyMetaObjectHandler implements MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { this.setFieldValByName("createTime", new Date(), metaObject); this.setFieldValByName("updateTime", new Date(), metaObject); this.setFieldValByName("version", 0, metaObject); //為了第一次新增就設定版本值 this.setFieldValByName("deleted", 0, metaObject); //新增資料就預設設定0 } }
這裡預設情況下,刪除是1,沒刪除是0。
如果你想改成別的值,那麼就要在application.properties 加入設定,換成你需要設定的值。
mybatis-plus.global-config.db-config.logic-delete-value=100 mybatis-plus.global-config.db-config.logic-not-delete-value=300
@Configuration // 設定掃描mapper的路徑 @MapperScan("com.pingguo.mpdemo.mapper") public class MpConfig { // 樂觀鎖外掛 @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); } ... ... // 邏輯刪除 @Bean public ISqlInjector sqlInjector() { return new LogicSqlInjector(); } }
因為之前的資料,都沒有值,我手動把id=2的設定了0,然後去刪除id=2的資料。
// 測試 邏輯刪除 @Test void testLogicDelete() { int result = userMapper.deleteById(2L); System.out.println(result); }
可以看到執行的sql其實是個update
JDBC Connection [HikariProxyConnection@2144912729 wrapping com.mysql.cj.jdbc.ConnectionImpl@44c13103] will not be managed by Spring ==> Preparing: UPDATE user SET deleted=1 WHERE id=? AND deleted=0 ==> Parameters: 2(Long) <== Updates: 1 Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@10f19647] 1
成功更新。
MP查詢資料的時候會自動過濾掉被邏輯刪除的資料的,不需要我們額外處理。
執行查詢試試:
// 查詢 @Test void findAll() { List<User> users = userMapper.selectList(null); System.out.println(users); }
SELECT id,name,age,email,create_time,update_time,version,deleted FROM user WHERE deleted=0
以上就是mybatis plus實現分頁邏輯刪除的詳細內容,更多關於mybatis plus分頁邏輯刪除的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45