国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(三)自定義SQL、分頁實現(xiàn)(PaginationInterceptor )、更新和刪除詳細方法

這篇具有很好參考價值的文章主要介紹了Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(三)自定義SQL、分頁實現(xiàn)(PaginationInterceptor )、更新和刪除詳細方法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

學(xué)習(xí)視頻:【編程不良人】Mybatis-Plus整合SpringBoot實戰(zhàn)教程,提高的你開發(fā)效率,后端人員必備!

自定義SQL

自定義mapper文件是為了應(yīng)對一些更復(fù)雜的查詢場景,首先先配置映射路徑

mybatis-plus:
  mapper-locations: com/mp/dao/xml/*

由于這里的mapper文件放在java文件夾中,所以要在pom.xml里進行配置

<build>
  <resources>
      <resource>
          <!-- xml放在java目錄下-->
          <directory>src/main/java</directory>
          <includes>
              <include>**/*.xml</include>
          </includes>
      </resource>
      <!--指定資源的位置(xml放在resources下,可以不用指定)-->
      <resource>
          <directory>src/main/java</directory>
      </resource>
  </resources>
</build>
  • mapper

    public interface UserMapper extends BaseMapper<User> {
        List<User> selectAll(@Param(Constants.WRAPPER) Wrapper<User> wrapper);
    }
    
    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
    <mapper namespace="com.mp.dao.UserMapper">
        <select id="selectAll" resultType="com.mp.entity.User">
            select * FROM `mp_user` ${ew.customSqlSegment}
        </select>
    </mapper>
    
  • 測試

    @Test
        public void selectMy() {
            LambdaQueryWrapper<User> lambda= Wrappers.<User>lambdaQuery();
            lambda.likeRight(User::getName,"劉")
                    .and(lqw->lqw.lt(User::getAge,30)
                            .or().isNotNull(User::getEmail));
            List<User> userList = userMapper.selectAll(lambda);
            userList.forEach(System.out::println);
        }
    

分頁

在MyBatis Plus中,物理分頁內(nèi)存分頁是兩種不同的分頁方式。

物理分頁【推薦】是在數(shù)據(jù)庫層面進行分頁操作,通過SQL語句的LIMITOFFSET關(guān)鍵字來實現(xiàn)。這種分頁方式直接在數(shù)據(jù)庫中進行數(shù)據(jù)的截取和返回,因此適用于大數(shù)據(jù)量的分頁查詢。

內(nèi)存分頁【了解】是在應(yīng)用程序內(nèi)存中進行分頁操作,即先將所有數(shù)據(jù)查詢出來,然后在內(nèi)存中進行分頁處理。這種分頁方式適用于數(shù)據(jù)量較小的情況,因為需要將所有數(shù)據(jù)加載到內(nèi)存中,可能會導(dǎo)致內(nèi)存占用過高。

  • 配置插件

    @Configuration
    public class MybatisPlusConfig {
        @Bean
        public PaginationInterceptor paginationInterceptor() {
            return new PaginationInterceptor();
        }
    }
    
  • 分頁實現(xiàn)

    @Test
    public void selectPage() {
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.ge("age", 30);
        Page<User> page = new Page<User>(1, 2,false);// fasle指的是不查詢總記錄數(shù),提高性能
    //        IPage<User> iPage = userMapper.selectPage(page, queryWrapper);
    //        List<User> userList = iPage.getRecords();
    		// selectMapsPage 
        IPage<Map<String, Object>> iPage = userMapper.selectMapsPage(page, queryWrapper);
        System.out.println("總頁數(shù) = " + iPage.getPages());
        System.out.println("總記錄數(shù) = " + iPage.getTotal());
        List<Map<String, Object>> userList = iPage.getRecords();
        userList.forEach(System.out::println);
    }
    
  • 自定義分頁

    • UserMapper

      IPage<User> selectUserPage(Page<User> page, @Param(Constants.WRAPPER) Wrapper<User> wrapper);
      }
      
    • UserMapper.xml

      <select id="selectUserPage" resultType="com.mp.entity.User">
          select * from mp_user ${ew.customSqlSegment}
      </select>
      
    • 測試文章來源地址http://www.zghlxwxcb.cn/news/detail-773724.html

      @Test
      public void selectMyPage() {
          QueryWrapper<User> queryWrapper = new QueryWrapper<>();
          queryWrapper.ge("age", 30);
          Page<User> page = new Page<User>(1, 2);
          IPage<User> iPage = userMapper.selectUserPage(page, queryWrapper);
          System.out.println("總頁數(shù) = " + iPage.getPages());
          System.out.println("總記錄數(shù) = " + iPage.getTotal());
          List<User> userList = iPage.getRecords();
          userList.forEach(System.out::println);
      }
      

Update,更新方法詳解

@Test
public void updateById() {
    User user = new User();
    user.setUserId(3L);
    user.setAge(28);
    user.setEmail("xiao@163.com");
    // 傳入實體對象作為參數(shù),自動根據(jù)id字段定位對應(yīng)的記錄,根據(jù)其他set的值進行更新
    int rows = userMapper.updateById(user);
    System.out.println("rows = " + rows);
}
/**
 * 條件構(gòu)造器更新
 */
@Test
public void updateByWrapper() {
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
    updateWrapper.eq("name", "小剛").eq("age", 18); // where條件
    // set更新條件
    User user = new User();
    user.setAge(28);
    user.setEmail("xiao@163.com");
    // 傳入實體對象作為參數(shù),自動根據(jù)id字段定位對應(yīng)的記錄,根據(jù)其他set的值進行更新
    int rows = userMapper.update(user, updateWrapper);
    System.out.println("rows = " + rows);
}
/**
 * 快速更新少量字段
 */
@Test
public void updateByWrapper2() {
    UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
    updateWrapper.eq("name", "李剛").eq("age", 29).set("age", 30);
    int rows = userMapper.update(null,updateWrapper);
    System.out.println("rows = " + rows);
}
/**
 * lambda表達式
 */
@Test
public void updateByWrapper3() {
    LambdaUpdateWrapper<User> lambdaUpdate = Wrappers.lambdaUpdate();
    lambdaUpdate.eq(User::getName, "小剛").eq(User::getAge, 28).set(User::getAge, 31);
    int rows = userMapper.update(null,lambdaUpdate);
    System.out.println("rows = " + rows);
}

/**
 * lambda表達式鏈式調(diào)用
 */
@Test
public void updateByWrapper4() {
    boolean update = new LambdaUpdateChainWrapper<User>(userMapper)
            .eq(User::getName, "小剛").eq(User::getAge, 31).set(User::getAge,28).update();
    System.out.println("update = " + update);
}

Delete 刪除

@Test
public void deleteById() {
    int rows = userMapper.deleteById(1739970502337392641L);
    System.out.println("rows = " + rows);
}

@Test
public void deleteByMap() {
    Map<String,Object> map = new HashMap<>();
    map.put("name", "小剛");
    map.put("age", "25");
    // DELETE FROM mp_user WHERE name = ? AND age = ?
    int rows = userMapper.deleteByMap(map);
    System.out.println("rows = " + rows);
}

@Test
public void deleteBatchIds() {
    int rows = userMapper.deleteBatchIds(Arrays.asList(121111123010L, 126372731123L, 127381787813L));
    // 相當(dāng)于 where id in(?,?,?)
    System.out.println("rows = " + rows);
}

@Test
public void deleteByWrapper() {
    LambdaQueryWrapper<User> lambdaQuery = Wrappers.lambdaQuery();
    lambdaQuery.eq(User::getAge, 28)
            .or().gt(User::getAge, 41);
    int rows = userMapper.delete(lambdaQuery);
    System.out.println("rows = " + rows);
}

到了這里,關(guān)于Spring Boot學(xué)習(xí)隨筆- 集成MyBatis-Plus(三)自定義SQL、分頁實現(xiàn)(PaginationInterceptor )、更新和刪除詳細方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 從零開始學(xué)Spring Boot系列-集成MyBatis-Plus

    從零開始學(xué)Spring Boot系列-集成MyBatis-Plus

    在Spring Boot應(yīng)用開發(fā)中,MyBatis-Plus是一個強大且易于使用的MyBatis增強工具,它提供了很多實用的功能,如代碼生成器、條件構(gòu)造器、分頁插件等,極大地簡化了MyBatis的使用和配置。本篇文章將指導(dǎo)大家如何在Spring Boot項目中集成MyBatis-Plus。 首先,確保你已經(jīng)安裝了Java開發(fā)環(huán)

    2024年04月08日
    瀏覽(74)
  • spring boot集成mybatis-plus——Mybatis Plus 批量 Insert_新增數(shù)據(jù)(圖文講解)

    spring boot集成mybatis-plus——Mybatis Plus 批量 Insert_新增數(shù)據(jù)(圖文講解)

    ?更新時間 2023-01-10 16:02:58 大家好,我是小哈。 本小節(jié)中,我們將學(xué)習(xí)如何通過 Mybatis Plus 實現(xiàn) MySQL 批量插入數(shù)據(jù)。 先拋出一個問題:假設(shè)老板給你下了個任務(wù),向數(shù)據(jù)庫中添加 100 萬條數(shù)據(jù),并且不能耗時太久! 通常來說,我們向 MySQL 中新增一條記錄,SQL 語句類似如下:

    2024年02月04日
    瀏覽(27)
  • spring boot集成mybatis-plus——Mybatis Plus 新增數(shù)據(jù)并返回主鍵 ID(圖文講解)

    spring boot集成mybatis-plus——Mybatis Plus 新增數(shù)據(jù)并返回主鍵 ID(圖文講解)

    ?更新時間 2023-01-10 15:37:37 大家好,我是小哈。 本小節(jié)中,我們將學(xué)習(xí)如何通過 Mybatis Plus 框架給數(shù)據(jù)庫表新增數(shù)據(jù),主要內(nèi)容思維導(dǎo)圖如下: Mybatis Plus 新增數(shù)據(jù)思維導(dǎo)圖 為了演示新增數(shù)據(jù),在前面小節(jié)中,我們已經(jīng)定義好了一個用于測試的用戶表, 執(zhí)行腳本如下: 定義一

    2024年02月02日
    瀏覽(40)
  • spring boot集成mybatis-plus——Mybatis Plus 多表聯(lián)查(包含分頁關(guān)聯(lián)查詢,圖文講解)...

    spring boot集成mybatis-plus——Mybatis Plus 多表聯(lián)查(包含分頁關(guān)聯(lián)查詢,圖文講解)...

    ?更新時間 2023-01-03 21:41:38 大家好,我是小哈。 本小節(jié)中,我們將學(xué)習(xí)如何通過 Mybatis Plus 實現(xiàn) 多表關(guān)聯(lián)查詢 ,以及 分頁關(guān)聯(lián)查詢 。 本文以 查詢用戶所下訂單 ,來演示 Mybatis Plus 的關(guān)聯(lián)查詢,數(shù)據(jù)庫表除了前面小節(jié)中已經(jīng)定義好的用戶表外,再額外創(chuàng)建一張訂單表,然后

    2024年02月01日
    瀏覽(25)
  • Spring Boot入門(14):使用Mybatis-Plus輕松實現(xiàn)高效自定義SQL操作!

    ? ? ? ? 在上幾期,我們既講了如何整合Mybatis-Plus進行數(shù)據(jù)庫的增刪改查,也講解了如何使用MP的 Wrapper 構(gòu)造器,但若是遇到復(fù)雜業(yè)務(wù)邏輯,如多表聯(lián)查、動態(tài)拼接條件等,這些操作往往會讓代碼變得冗長且難以維護。但是,有了Mybatis-Plus這個優(yōu)秀的框架,我們可以輕松實現(xiàn)

    2024年02月10日
    瀏覽(25)
  • Spring Boot入門(14):使用Mybatis-Plus執(zhí)行自定義SQL | 超級詳細,建議收藏

    ? ? ? ? 在上幾期,我們既講了如何整合Mybatis-Plus進行數(shù)據(jù)庫的增刪改查,也講解了如何使用MP的 Wrapper 構(gòu)造器,但若是遇到復(fù)雜業(yè)務(wù)邏輯,如多表聯(lián)查、動態(tài)拼接條件等,這些操作往往會讓代碼變得冗長且難以維護。但是,有了Mybatis-Plus這個優(yōu)秀的框架,我們可以輕松實現(xiàn)

    2024年02月12日
    瀏覽(19)
  • Spring Boot學(xué)習(xí)隨筆- 集成JSP模板(配置視圖解析器)、整合Mybatis(@MapperScan注解的使用)

    Spring Boot學(xué)習(xí)隨筆- 集成JSP模板(配置視圖解析器)、整合Mybatis(@MapperScan注解的使用)

    學(xué)習(xí)視頻:【編程不良人】2021年SpringBoot最新最全教程 在main創(chuàng)建webapp,然后創(chuàng)建index.jsp進行測試,在訪問之前需要進行一個設(shè)置,否則springboot是找不到j(luò)sp頁面的 修改jsp無需重啟應(yīng)用 數(shù)據(jù)庫訪問框架:hibernate、jpa、mybatis【主流】 SpringBoot(微框架) = Spring(工廠) + SpringMV

    2024年02月05日
    瀏覽(58)
  • Spring Boot整合MyBatis-Plus

    Spring Boot整合MyBatis-Plus

    引言 在現(xiàn)代軟件開發(fā)中,我們經(jīng)常需要處理大量的數(shù)據(jù)。為了有效地管理這些數(shù)據(jù),我們需要使用一些強大的框架。其中,Spring Boot和MyBatis-Plus是兩個非常流行的框架。Spring Boot是一個基于Spring的開源Java框架,可以用于創(chuàng)建獨立的、生產(chǎn)級別的Spring應(yīng)用。MyBatis-Plus是一個MyB

    2024年01月19日
    瀏覽(32)
  • Spring Boot 整合MyBatis-Plus

    Spring Boot 整合MyBatis-Plus

    ??前言 本篇博文是關(guān)于Spring Boot 整合MyBatis-Plus的,希望你能夠喜歡?? ??個人主頁:晨犀主頁 ??個人簡介:大家好,我是晨犀,希望我的文章可以幫助到大家,您的滿意是我的動力???? ??歡迎大家:這里是CSDN,我總結(jié)知識的地方,歡迎來到我的博客,感謝大家的觀看??

    2024年02月11日
    瀏覽(31)
  • spring boot mybatis-plus操作實踐

    1、先建一個數(shù)據(jù)表實體類 2、service目錄下新建接口IDeptService,然后擴展mp的IService 3、service目錄的impl目錄下新建類 DeptServiceImpl,擴展mp的ServiceImpl,實現(xiàn)接口IDeptService,然后注冊@Service 注解 4、DeptMapper 接口需要擴展mp的BaseMapper接口 5、調(diào)試一下看看是否可以使用

    2024年02月01日
    瀏覽(24)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包