Springboot整合MybatisPlus(增刪改查,代碼生成)

??????? 都說程序員的終極目標就是偷懶,雖然mybatis已經給開發帶來很大便利,example類也有很多強大的功能,但是還是滿足不了"勤勞"的程序員們。因此國內程序員在 Mybatis 的基礎上開發了Mybatis Plus,只做增強不做改變,只為簡化開發、提高效率而生。

有頭有尾,我們就從新建項目開始吧:

Default和Customer按照網絡情況,哪個進得去進哪個。點擊Next

上下紅框內名字一般保持一致 ,next

選擇需要添加的依賴:
DevTools 熱部署工具。Lombok:在實體類添加注解可自動生成set get tostring等代碼

web項目必選

Thymeleaf一個模板引擎,類似jsp

選擇sql驅動


開啟自動導入

等待下載依賴。。。

項目初始化創建完成。

1、pom文件導入jar包

<dependency>
? ?? <groupId>mysql</groupId>
? ?? <artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
? ?? <groupId>com.baomidou</groupId>
? ?? <artifactId>mybatis-plus-boot-starter</artifactId>
? ?? <version>3.4.0</version>
</dependency>

2、編寫配置文件(數據庫配置)

3、entity包下新建一個user類,使用@Data注解自動添加set get方法

4、創建mapper接口,繼承BaseMapper,傳入一個需要操作的泛型。

開啟mapper包的掃描,注入到spring中

創建一個測試類

簡單測試一個查詢

如果需要在控制臺查看執行的sql語句,配置文件添加:

常用注解:

1、@TableName 映射數據庫的表名

該demo中如果實體類不叫User是UserInfo,則改為

2、@TableField 映射數據表非主鍵字段名,


exist表示是否為數據表字段 false,true

select表示是否查詢該字段

fill表示是否自動填充,將對象存入數據庫的時候,由Mybatis Plus自動給某些字段賦值。
(如時間create_time,update_time)
1、數據庫添加該字段
2、實體類添加fill注解
3、編寫Handler類,聲明@Component

3、@TableId 設置主鍵映射,value映射主鍵字段名

type 設置主鍵類型(主鍵的生成策略,自增?某種算法生成?)默認NONE(雪花算法實現)
Input 如果開發人員沒有賦值,則采用數據庫自增的方式賦值

主鍵映射
type 設置主鍵類型

4、@Version 標記樂觀鎖(處理并發,防止數據被兩個線程修改):通過version字段,當數據修改時,會以version作為條件 當條件成立才會成功
version=1? (如下兩線程互斥)
線程1:update ...set version = 2 where version = 1
線程2:update .. set version = 2 where version = 1

1.數據庫添加version字段:默認為1

2.實體類添加version成員變量,并且添加Version注解
3.編寫并注冊配置類

4.測試
此時樂觀鎖version將會修改

5、@EnumValue 通用枚舉類注解,將數據庫字段映射成實體類的枚舉類型成員變量
方法一使用注解,
方法二 實現接口 implement IEnum<Integer> 返回Integer code

1.User表添加status字段,設置默認值為1
2.編寫枚舉類,使用該注解

3.UserInfo類中添加該枚舉

4.application.yml中添加

5.查詢所有測試

方法二:接口

6、@TableLogic 映射邏輯刪除(假的刪掉,如用戶注銷,并不是真正從數據庫刪除,而是設定一個標志字段)

1.User數據表添加deleted字段,默認為0 為沒有刪除
2.實體類添加注解

3.application.yml添加配置:

4.測試刪除

再次執行查詢將不再被顯示deleted=1的信息

增刪改查

條件查詢

模糊查詢

聯合查詢

排序

根據多個ID查詢

分頁查詢
1.添加配置

舍棄

2.測試 current 當前頁,size 每頁數
注:邏輯刪除deleted字段標記為1的依然不會被查到

查詢一條數據:

自定義sql(注解版)多表關聯查詢

sql語句如下:

1.創建一個VO類

2.mapper文件添加方法

3.測試

自定義sql(xml) + 分頁查詢

1.Test

2.mapper里添加方法,注意?@Param(Constants.WRAPPER)

3.編寫xml文件

4.測試查詢

自定義sql(xml) + 分頁查詢 + 多表查詢(一對多)

SELECT q.id, q.title,u.id uid , u.name from question q, user u
WHERE
q.creator = 220 AND u.id = 220

1.定義個VO類存儲查詢結果

2.Test

3.mapper里添加方法,注意?@Param(Constants.WRAPPER)

4.xml文件

5.測試

插入

刪除

修改

自動生成

根據數據表自動生成實體類、Mapper,Service,ServiceImpl,Controller(比mybatis逆向工程強大?)

1、pom文件導入Mybatis Plus Generator和velocity(根據velocity模板生成,還有freemarker、Beetl)

<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.4.0</version>
</dependency>
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>

2、啟動類

package com.example.demo;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;
public class Main {
public static void main(String[] args) {
//創建generator對象
AutoGenerator autoGenerator =new AutoGenerator();
//數據源
DataSourceConfig dataSourceConfig =new DataSourceConfig();
dataSourceConfig.setDbType(DbType.MYSQL);
dataSourceConfig.setUrl("jdbc:mysql://localhost:3306/wlbnew?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false");
dataSourceConfig.setUsername("root");
dataSourceConfig.setPassword("root");
dataSourceConfig.setDriverName("com.mysql.cj.jdbc.Driver");
autoGenerator.setDataSource(dataSourceConfig);
//全局配置
GlobalConfig globalConfig =new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir")+"/src/main/java");
//創建好之后打開文件
globalConfig.setOpen(false);
globalConfig.setAuthor("Jesse");
globalConfig.setServiceName("%sService");
autoGenerator.setGlobalConfig(globalConfig);
//包信息
PackageConfig packageConfig =new PackageConfig();
packageConfig.setParent("com.example.demo");
packageConfig.setModuleName("generator");
packageConfig.setController("controller");
packageConfig.setService("service");
packageConfig.setServiceImpl("service.impl");
packageConfig.setEntity("entity");
packageConfig.setMapper("mapper");
autoGenerator.setPackageInfo(packageConfig);
//配置策略
StrategyConfig strategyConfig =new StrategyConfig();
strategyConfig.setEntityLombokModel(true);
????????? //開啟字段駝峰命名
strategyConfig.setNaming(NamingStrategy.underline_to_camel);
strategyConfig.setColumnNaming(NamingStrategy.underline_to_camel);
autoGenerator.setStrategy(strategyConfig);
autoGenerator.execute();
}?? }

運行main方法生成。

最后別忘記在DemoApplication添加MapperScan("com.example.demo.generator.mapper")掃描mapper,根據實際包名修改。

如果沒有開啟駝峰命名,再加

strategyConfig.setNaming(NamingStrategy.underline_to_camel);

這種生成方式會在Service名前加字母"I",如果想去掉,全局配置加:

globalConfig.setServiceName("%sService");

測試:
1、controller添加一個方法

2、application.yml配置thymeleaf

3、templates下新建一個index.html

按條件查詢

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,835評論 6 534
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,676評論 3 419
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事?!?“怎么了?”我有些...
    開封第一講書人閱讀 176,730評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,118評論 1 314
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,873評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,266評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,330評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,482評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,036評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,846評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,025評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,575評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,279評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,684評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,953評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,751評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,016評論 2 375