最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mybatis?plus實(shí)現(xiàn)分頁邏輯刪除

 更新時(shí)間:2022年05月27日 11:25:38   作者:把蘋果咬哭的測試筆記  
這篇文章主要為大家介紹了mybatis?plus實(shí)現(xiàn)分頁邏輯刪除的方式詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

一、分頁

通過mybatis-plus實(shí)現(xiàn)分頁,也是很簡單,插件大法。

1、配置分頁插件

把分頁的插件也配置到統(tǒng)一的配置類里:

@Configuration
// 配置掃描mapper的路徑
@MapperScan("com.pingguo.mpdemo.mapper")
public class MpConfig {
    // 樂觀鎖插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
   // 分頁插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }
}

2、使用分頁

還是在測試類中增加測試方法,這里列了常用到的方法,后面配合前端頁面做分頁功能時(shí)候,都要用上。

    //  測試分頁
    @Test
    void testPaging() {
        // 創(chuàng)建分頁對象,current為當(dāng)前頁數(shù),size為每頁最大記錄數(shù)
        Page<User> pageUser = new Page<>(1, 5);
        // 調(diào)用分頁查詢方法,傳入分頁對象-pageUser,wrapper是構(gòu)造條件對象,這里暫時(shí)寫null
        userMapper.selectPage(pageUser, null);
        System.out.println("當(dāng)前頁:"+ pageUser.getCurrent());
        System.out.println("當(dāng)前頁數(shù)據(jù)list集合:" + pageUser.getRecords());
        System.out.println("每頁顯示記錄數(shù):" + pageUser.getSize());
        System.out.println("總記錄數(shù):" + pageUser.getTotal());
        System.out.println("總頁數(shù):" + pageUser.getPages());
        System.out.println("是否有下一頁:" + pageUser.hasNext());
        System.out.println("是否有上一頁:" + pageUser.hasPrevious());
    }

目前數(shù)據(jù)表共12條數(shù)據(jù),運(yùn)行一下,對比下結(jié)果:

當(dāng)前頁:1
當(dāng)前頁數(shù)據(jù)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)]
每頁顯示記錄數(shù):5
總記錄數(shù):12
總頁數(shù):3
是否有下一頁:true
是否有上一頁:false

二、邏輯刪除

邏輯刪除并不是真正從數(shù)據(jù)表開刪除數(shù)據(jù)記錄,只是通過一個(gè)字段去標(biāo)識出這條記錄被刪除了,比如deleted,0表示未刪除,1表示已刪除。

1、在數(shù)據(jù)表增加deleted字段。

2、實(shí)體類添加注解@TableLogic

在對應(yīng)實(shí)體類里增加屬性,并且加上@TableLogic注解。為了方便,我還加了自動(dòng)填充。

@Data
public class User {
    @TableId(type = IdType.ID_WORKER)
    private Long id;
    private String name;
    ... ...
    @TableLogic   // 加上邏輯刪除注解
    @TableField(fill = FieldFill.INSERT) //為了方便,加了自動(dòng)填充
    private Integer deleted;
}

3、自動(dòng)填充(非必須)

自動(dòng)填充的話,這里也需要增加:

@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); //為了第一次新增就設(shè)置版本值
        this.setFieldValByName("deleted", 0, metaObject); //新增數(shù)據(jù)就默認(rèn)設(shè)置0
    }
}

4、application.properties 加入配置(非必須)

這里默認(rèn)情況下,刪除是1,沒刪除是0。
如果你想改成別的值,那么就要在application.properties 加入配置,換成你需要設(shè)置的值。

mybatis-plus.global-config.db-config.logic-delete-value=100
mybatis-plus.global-config.db-config.logic-not-delete-value=300

5、配置插件

@Configuration
// 配置掃描mapper的路徑
@MapperScan("com.pingguo.mpdemo.mapper")
public class MpConfig {
    // 樂觀鎖插件
    @Bean
    public OptimisticLockerInterceptor optimisticLockerInterceptor() {
        return new OptimisticLockerInterceptor();
    }
    ... ...
    // 邏輯刪除
    @Bean
    public ISqlInjector sqlInjector() {
        return new LogicSqlInjector();
    }
}

6、試一試

因?yàn)橹暗臄?shù)據(jù),都沒有值,我手動(dòng)把id=2的設(shè)置了0,然后去刪除id=2的數(shù)據(jù)。

     // 測試 邏輯刪除
    @Test
     void testLogicDelete() {
        int result = userMapper.deleteById(2L);
        System.out.println(result);
    }

可以看到執(zhí)行的sql其實(shí)是個(gè)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

成功更新。

7、另外

MP查詢數(shù)據(jù)的時(shí)候會自動(dòng)過濾掉被邏輯刪除的數(shù)據(jù)的,不需要我們額外處理。
執(zhí)行查詢試試:

    //    查詢
    @Test
     void findAll() {
        List&lt;User&gt; 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實(shí)現(xiàn)分頁邏輯刪除的詳細(xì)內(nèi)容,更多關(guān)于mybatis plus分頁邏輯刪除的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼分享

    Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼分享

    本文給大家介紹的是如何使用Java實(shí)現(xiàn)查找當(dāng)前字符串最大回文串代碼,非常的簡單實(shí)用,有需要的小伙伴可以參考下
    2016-07-07
  • Hadoop之NameNode Federation圖文詳解

    Hadoop之NameNode Federation圖文詳解

    今天小編就為大家分享一篇關(guān)于Hadoop之NameNode Federation圖文詳解,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • Java集合案例之斗地主游戲

    Java集合案例之斗地主游戲

    這篇文章主要為大家詳細(xì)介紹了Java集合案例之斗地主游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • 解決springboot configuration processor對maven子模塊不起作用的問題

    解決springboot configuration processor對maven子模塊不起作用的問題

    這篇文章主要介紹了解決springboot configuration processor對maven子模塊不起作用的問題,本文通過圖文實(shí)例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-09-09
  • Java中List.of()和Arrays.asList()的區(qū)別及原因分析

    Java中List.of()和Arrays.asList()的區(qū)別及原因分析

    這篇文章主要介紹了Java中List.of()和Arrays.asList()的區(qū)別及原因分析,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • 解決maven?maven.compiler.source和maven.compiler.target的坑

    解決maven?maven.compiler.source和maven.compiler.target的坑

    這篇文章主要介紹了解決maven?maven.compiler.source和maven.compiler.target的坑,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Springboot2.1.6集成activiti7出現(xiàn)登錄驗(yàn)證的實(shí)現(xiàn)

    Springboot2.1.6集成activiti7出現(xiàn)登錄驗(yàn)證的實(shí)現(xiàn)

    這篇文章主要介紹了Springboot2.1.6集成activiti7出現(xiàn)登錄驗(yàn)證的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • JAVA內(nèi)存溢出解決方案圖解

    JAVA內(nèi)存溢出解決方案圖解

    這篇文章主要介紹了JAVA內(nèi)存溢出解決方案圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-10-10
  • java jackson 將對象轉(zhuǎn)json時(shí),忽略子對象的某個(gè)屬性操作

    java jackson 將對象轉(zhuǎn)json時(shí),忽略子對象的某個(gè)屬性操作

    這篇文章主要介紹了java jackson 將對象轉(zhuǎn)json時(shí),忽略子對象的某個(gè)屬性操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-10-10
  • Java在PowerPoint幻燈片中創(chuàng)建散點(diǎn)圖的方法

    Java在PowerPoint幻燈片中創(chuàng)建散點(diǎn)圖的方法

    散點(diǎn)圖是通過兩組數(shù)據(jù)構(gòu)成多個(gè)坐標(biāo)點(diǎn),考察坐標(biāo)點(diǎn)的分布,判斷兩變量之間是否存在某種關(guān)聯(lián)或總結(jié)坐標(biāo)點(diǎn)的分布模式,這篇文章主要介紹了Java如何在PowerPoint幻燈片中創(chuàng)建散點(diǎn)圖,需要的朋友可以參考下
    2023-04-04

最新評論

二连浩特市| 晋宁县| 昆明市| 石楼县| 汤阴县| 舞阳县| 布拖县| 綦江县| 绥宁县| 乐昌市| 贵溪市| 集安市| 疏勒县| 延寿县| 韩城市| 嘉祥县| 全南县| 成安县| 梁平县| 呼伦贝尔市| 吉林省| 芷江| 浦江县| 革吉县| 象山县| 台南县| 米易县| 望奎县| 曲松县| 门源| 屏南县| 彝良县| 横山县| 顺义区| 文成县| 万安县| 延安市| 涞水县| 弋阳县| 柘荣县| 绍兴县|