Mybatis-Plus-快速整合

Mybatis-Plus

依賴
  • 依賴選擇

    <!-- 最新版本 -->
    <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.5.5</version>
    </dependency>
    
配置
分頁
  • 分頁攔截器配置

    @Configuration
    @MapperScan("scan.your.mapper.package")
    public class MybatisPlusConfig {/*** 添加分頁插件*/@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor() {MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));//如果配置多個插件,切記分頁最后添加//interceptor.addInnerInterceptor(new PaginationInnerInterceptor()); 如果有多數據源可以不配具體類型 否則都建議配上具體的DbTypereturn interceptor;}
    }
    
連接
  • 連接配置

    spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/redis_api?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC&useServerPrepStmts=trueusername: rootpassword: root # mybatis-plus 配置
    mybatis-plus:global-config:db-config:table-underline: falseconfiguration:map-underscore-to-camel-case: truelog-impl: org.apache.ibatis.logging.stdout.StdOutImpltype-aliases-package: com.example.redisapi.domainmapper-locations: classpath:com/example/redisapi/mapper/*Mapper.xml
自動填充
  • 實現

    @Slf4j
    @Component
    public class MyMetaObjectHandler implements MetaObjectHandler {@Overridepublic void insertFill(MetaObject metaObject) {log.info("start insert fill ....");// 或者this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推薦)   }@Overridepublic void updateFill(MetaObject metaObject) {log.info("start update fill ....");this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推薦)  }
    }
    
  • 實體類字段配置

    @TableName("sys_user")
    public class User {@TableId(value="id",type=IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableField(.. fill = FieldFill.INSERT_UPDATE)private LocalDateTime createTime;@TableField(.. fill = FieldFill.INSERT)private LocalDateTime updateTime;
    }
    
  • 框架自帶,用于說明

    public enum FieldFill {/*** 默認不處理*/DEFAULT,/*** 插入填充字段*/INSERT,/*** 更新填充字段*/UPDATE,/*** 插入和更新填充字段*/INSERT_UPDATE
    }
    
Mapper
  • 實現方式

    public interface UserMapper extends BaseMapper<User> {}
    
Service
  • 接口

    public interface LoginService {ResultVO<String> login(String username, String password) throws JsonProcessingException;
    }
  • 實現類方式

    @Service
    public class LoginServiceImpl extends ServiceImpl<LoginMapper, Login>implements LoginService {}
    
主鍵自增配置
  • 在實體類的id列標注

    @TableName("sys_user")
    public class User {@TableId(value="id",type=IdType.AUTO)private Long id;private String name;private Integer age;private String email;
    }
    

    注意: 如果出現配置了數據庫的自動增長,出現一段很長的數據時,需要通過show create table xxx,先備份原有的數據,這時,在表結構上可能會出現自增的起始id值,只要將這個值刪除即可,就會按照數據庫表中的最后一個值進行數據自增。

邏輯刪除
  • 數據庫字段id_deleted

  • 實體類字段通過注解映射

    @TableName("sys_user")
    public class User {@TableId(value="id",type=IdType.AUTO)private Long id;private String name;private Integer age;private String email;@TableLogic@TableField("is_deleted")private Integer deleted;
    }
    
分頁實現
  • 自定義mapper方法實現分頁

    • mapper

      IPage<UserVo> selectPageVo(IPage<?> page, Integer state);
      // or (class MyPage extends Ipage<UserVo>{ private Integer state; })
      MyPage selectPageVo(MyPage page);
      // or
      List<UserVo> selectPageVo(IPage<UserVo> page, Integer state);
      
    • xml

      <!-- 根據mapper 的返回,會自動拼接 limit -->
      <select id="selectPageVo" resultType="xxx.xxx.xxx.UserVo">SELECT id,name FROM user WHERE state=#{state}
      </select>
      
  • 調用方法

    @Override
    public ResultVO listProducts(ProductVO productVO) {LambdaQueryWrapper<Products> queryWrapper = new LambdaQueryWrapper<>();// 1: 名稱queryWrapper.like(productVO.getName() != null, Products::getName, productVO.getName());queryWrapper.orderByAsc(Products::getPrice);// 這兩部是實現分頁的核心Page<Products> productsPage = new Page<>(productVO.getPageNum(), productVO.getPageSize());// pageInfo 是分頁后的結果,用于直接返回到前端IPage<Products> pageInfo = productsMapper.selectPage(productsPage, queryWrapper);if (pageInfo != null) {return ResultVO.success("商品列表獲取成功", pageInfo);}return ResultVO.fail("獲取商品列表失敗");
    }
    

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/711690.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/711690.shtml
英文地址,請注明出處:http://en.pswp.cn/news/711690.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

易毅出席成套低溫烘干裝備在發酵行業的節能創新應用

演講嘉賓&#xff1a;易毅 總經理 廣東芬藍環境科技有限公司 演講題目&#xff1a;成套低溫烘干裝備在發酵行業領域的節能創新應用 會議簡介 “十四五”規劃中提出&#xff0c;提高工業、能源領城智能化與信息化融合&#xff0c;明確“低碳經濟”新的戰略目標&#xff0c;熱…

Unity2023.1.19_Socket-TCP_ 服務端與客戶端通訊基礎

Unity2023.1.19_Socket-TCP_ 服務端與客戶端通訊基礎 目錄 Unity2023.1.19_Socket-TCP_ 服務端與客戶端通訊基礎

python-分享篇-根據出生日期判斷你的星座出生日期判斷生肖

文章目錄 根據出生日期判斷你的星座出生日期判斷生肖 根據出生日期判斷你的星座 sdate[20,19,21,20,21,22,23,23,23,24,23,22] # 星座判斷列表 conts [摩羯座,水瓶座,雙魚座,白羊座,金牛座,雙子座,巨蟹座,獅子座,處女座,天秤座,天蝎座,射手座,摩羯座] signs[?,?,?,?,?…

測試計劃(詳細版)

測試計劃Testing plan&#xff0c;描述了要進行的測試活動的范圍、方法、資源和進度的文檔&#xff1b;是對整個信息系統應用軟件組裝測試和確認測試。 [1] 它確定測試項、被測特性、測試任務、誰執行任務、各種可能的風險。測試計劃可以有效預防計劃的風險&#xff0c;保障計…

JPEG support not enabled.

報錯&#xff1a; ECCODES ERROR : JPEG support not enabled. ECCODES ERROR : unable to get values as double array (Functionality not enabled) ECCODES ERROR : Unable to create iterator bFunctionality not enabled 在linux中運行python代碼的時候報錯了&…

Baumer工業相機堡盟工業相機如何聯合GAPI SDK和OpenCV實現相機圖像將圖像轉換為Mat格式再轉為Bitmap圖像進行顯示(C#)

Baumer工業相機堡盟工業相機如何聯合GAPI SDK和OpenCV實現相機圖像將圖像轉換為Mat圖像格式再轉為Bitmap圖像進行顯示&#xff08;C#&#xff09; Baumer工業相機Baumer工業相機的圖像轉換為OpenCV的Mat圖像的技術背景代碼分析第一步&#xff1a;先引用OpenCV庫第二步&#xff…

貪心 Leetcode 56 合并區間

合并區間 Leetcode 56 學習記錄自代碼隨想錄 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1…

C++的繼承和多態

繼承和多態 繼承繼承的權限繼承的子父類訪問派生類的默認成員函數菱形繼承&#xff08;C獨有&#xff09;【了解】虛擬繼承什么是菱形繼承&#xff1f;菱形繼承的問題是什么&#xff1f;什么是菱形虛擬繼承&#xff1f;如何解決數據冗余和二義性的繼承和組合的區別&#xff1f;…

揭秘Android Tombstone:崩潰位置的秘密研究-Crash Location

由于一些工作原因&#xff0c;最近對Android系統發生crash的Tombstone展開了一定的研究。 這里我談一下關于對于Android Libstagefright 整數溢出漏洞的crash Tombstone的研究。看一下在包含整數溢出功能的MP4文件從PC傳輸進Android的時候造成的Tombstone0_0。 1、研究頭部信…

雙通道 40V 160mΩ車規級高側電源開關帶診斷功能反向電池保護功能

概述 PC8916是雙通道、高功率具有集成NMOS功率FET的開關&#xff0c;以及電荷泵。該設備集成了高級 保護功能&#xff0c;例如負載電流限制&#xff0c;通過功率限制進行過載主動管理帶可配置閉鎖的超溫停機。全面診斷和高精度電流感應這些功能實現了對負載的智能控制。有源漏…

[C++] 統計程序耗時

一、簡介 使用clock()函數記錄程序開始、結束時間戳。然后將開始結束時間戳差除以CLOCKS_PER_SEC得到程序的耗用的時間&#xff08;秒數&#xff09;。 二、代碼示例 #include <iostream> #include <time.h> #include <math.h> int main(int, char **) {clo…

JetPack 5.1編譯mish_cuda

1.查看jetpack版本:sudo jtop 自帶的就有cuda11.4和cudnn8.X以及python3.8,我的cudnn就沒有是后期自己安裝的 2.安裝torch PyTorch for Jetson - Announcements - NVIDIA Developer Forums 選擇對應的cuda版本和torch版本,我下載的是:torch-2.1.0a0+41361538.nv23.06-cp…

ETL數據倉庫的使用方式

一、ETL的過程 在 ETL 過程中&#xff0c;數據從源系統中抽取&#xff08;Extract&#xff09;&#xff0c;經過各種轉換&#xff08;Transform&#xff09;操作&#xff0c;最后加載&#xff08;Load&#xff09;到目標數據倉庫中。以下是 ETL 數倉流程的基本步驟&#xff1a…

2024中國5G隨身WiFi十大品牌排行榜,20245G隨身口碑排行榜,5G隨身WiFi2024最新款!5G隨身WiFi推薦測評

【中國品牌網中國3C質量評測中心權威榜單聯合發布】 第一名&#xff1a;格行5G隨身WiFi&#xff1a; 優點&#xff1a;隨身WiFi行業的頭部和領跑品牌&#xff0c;15年專業物聯網行業經驗&#xff0c;格行在技術研發、產品創新和客戶服務方面具有很高的口碑&#xff0c;被業內…

通過一篇文章讓你了解數據結構和算法的重要性

通過一篇文章讓你了解數據結構和算法的重要性 前言一、 什么是數據結構&#xff1f;二、什么是算法&#xff1f;三、數據結構和算法的重要性在校園招聘的筆試中&#xff1a;在校園招聘的面試中&#xff1a;在未來的工作中&#xff1a; 四、如何學好數據結構和算法4.1 死磕代碼&…

基于React全棧Sora AI視頻案例展示項目

花了一天時間基于React Next全棧開發的Sora AI 演示項目 Preview: https://sora.langchat.cn/ Github&#xff1a;https://github.com/tycoding/lang-sora 歡迎大家star、fork呀&#xff01; 這是一套完整的React & Next.js項目&#xff0c;包含前后端交互、路由、數據庫…

crc16計算

crc16計算&#xff0c;以生成式G(x)x16x15x21,為例 1、函數如下&#xff1a; //crc&#xff1a;G(x) x16x15x21 #define POLY 0x8005 //對應的生成式的多項式&#xff0c;可以查&#xff08;在在線計算crc工具下查&#xff09; unsigned short crc16_2(unsigned char *da…

CBAM注意力機制詳解(附pytorch復現)

簡介 論文原址&#xff1a;1807.06521.pdf (arxiv.org) CBAM&#xff08;Convolutional Block Attention Module&#xff09;是一種卷積神經網絡模塊&#xff0c;旨在通過引入注意力機制來提升網絡的表示能力。CBAM包含兩個順序子模塊&#xff1a;通道注意力模塊和空間注意力…

算法項目的合作流程

算法項目的合作流程通常包括以下幾個關鍵步驟&#xff0c;以上是算法項目合作的基本流程&#xff0c;具體項目可能會根據實際情況進行調整和補充。在整個項目過程中&#xff0c;良好的溝通、協作和團隊合作至關重要&#xff0c;能夠確保項目按時高質量地完成。北京木奇移動技術…

回歸啦!!!

消失的日子在實習&#xff0c;今天最后一天了來看看自己的學習日志&#xff0c;有沒有可以和小伙伴交流的部分吧&#xff01; 目錄 一、產品one ①簡介 ②底層原理 ③知識點一 作用一&#xff1a;日志采集 作用二&#xff1a;實時監測 作用三&#xff1a;規則匹配 作用…