目錄
1、Mybatis概述
1.1 JDBC編程
1.3 Mybatis解決的問題
2、Mybatis入門案例
2.1 創建資料庫和表
2.2 創建maven專案,添加Mybatis的jar依賴
2.3 撰寫Mybatis的組態檔
2.4 撰寫物體類
2.5 撰寫ORM映射檔案
2.5.1 XML映射檔案必須與物體類在同一個包下面
2.5.2 XML映射檔案名稱必須是物體類名稱一致
2.6 將映射檔案注冊到mybatis的組態檔中
2.7 配置映射檔案的掃描位置
2.8 使用Mybatis框架的核心介面測驗
2.9. 配置日志檔案
2.9.1.添加jar依賴
2.9.2.添加日志組態檔
2.9.3.在mybatis組態檔中添加日志的配置
2.10.入門案例的增刪改查
2.10.0.注意:手動提交事務
2.10.0.在測驗類中使用測驗注解@Before @After減少重復代碼
2.10.1 根據ID查詢單個物件
2.10.2 增刪改
2.10.3.查詢所有
3、Mybatis物件分析
3.1 Resources
3.2 SqlSessionFactoryBuilder
3.3 SqlSessionFactory
3.4 SqlSession
3.5 Mybatis架構/作業流程
4、原有的Dao方式開發
4.1 創建sqlSession工具類
4.2 創建TeamDao介面和實作類
5.使用ThreadLocal優化sqlSession工具類
5.0.ThreadLocal的理解
5.1.SqlSession執行緒不安全處理方案
6、使用Mapper的介面撰寫Mybatis專案
6.1 什么是Mapper介面
6.2 使用Mapper動態代理
6.2.1 撰寫介面TeamMapper.java
6.2.2 getMapper方法獲取代理物件
6.3 實作原理
7、增刪改查中的細節
7.1 插入資料的時候回傳自增的id值
7.1.1.回傳Integer型別的自增id值
7.1.2.回傳字串型別的自增id值
7.2 輸入映射(傳參到sql)
7.2.1.使用下標方式#{arg0}或#{param1}
7.2.2.通過@Param注解傳遞多個傳參
?7.2.4. 通過pojo類傳遞多個引數
7.3 #{} 和 ${}的區別--面試中喜歡出的考題
7.3.2 ${}
7.4 輸出映射resultType
7.4.0.輸出pojo型別
7.4.1.輸出簡單型別(單行單列)可省
7.4.2.輸出map集合型別(單行多列)
7.4.3.輸出List集合型別(多行多列)
7.5. 輸出映射resultMap
7.6. 資料庫表中列與物體類屬性不一致的處理方式
7.6.1.使用列別名和resultType
7.6.2.使用resultMap
8、Mybatis的全域組態檔
8.1 全域組態檔配置的內容
8.2 屬性(properties)
8.3 設定 settings
8.4 型別別名 typeAliases
8.4.1 Mybatis中已經支持/內置的別名
8.4.1 Mybatis中已經支持的別名
8.4.2 自定義別名
8.5 映射器 Mappers(將映射檔案映射到mybatis組態檔)
8.5.1、 類路徑參考映射檔案
8.5.2、使用的mapper介面的完全限定名
8.5.3、將包內的映射器介面實作全部注冊為映射器--推薦
8.6 dataSource標簽
8.7 Mybatis如何管理事務
8.7.1、默認是需要手動提交事務的
8.7.2、自動提交事務
9、Mybatis中的關系映射
9.1 對一關系映射的處理方式(三種方式)
9.1.0.需求:查詢球員資訊包含所在球隊資訊
9.1.1 物體類
9.1.2 mapper介面
9.1.3 對一映射方式1:通過關聯物件打點呼叫屬性的方式
9.1.4 對一映射方式2:直接參考關聯物件的Mapper映射
9.1.5 對一映射方式3:直接參考關聯物件的單獨查詢的方法
9.1.6 測驗
9.2 對多關系的結果映射的兩種處理方式
9.2.0.查詢球隊資訊以及擁有的球員資訊
9.2.1 方式1:連接查詢+參考關聯物件的結果映射
9.2.2 方式2:不使用連接查詢+參考關聯物件的單獨查詢的方法
10、Mybatis動態SQL
10.1 where標簽構建動態SQL多條件查詢
10.1.1.原有寫法:根據不同條件拼接 SQL 陳述句
10.1.2.where標簽構建動態SQL多條件查詢
10.2 set標簽構建動態sql的更新update
10.2.1 原有的更新存在的弊端
10.3 forEach標簽構建動態sql的批量添加/洗掉
10.3.1 批量添加
10.3.2 批量洗掉
11 、分頁插件
11.1 jar依賴
11.2 在Mybatis全域組態檔中添加插件配置
11.3 使用插件
12、Mybatis快取
12.1 快取作用
12.2 一級快取:SqlSession級別的快取,自動開啟
12.2.1 一級快取作業原理
12.2.2 清空快取的方式
12.3 二級快取:Mapper級別的快取
12.3.1 使用二級快取步驟
12.3.2 二級快取的禁用
12.3.3 快取的屬性配置
13、反向生成插件
13.1 插件的配置
13.2 使用反向生成中的多條件查詢方法
1、Mybatis概述
1.1 JDBC編程

1.2.說說你對Mybatis的了解
1.Mybatis 基于java的持久層框架,它的內部封裝了JDBC,讓開發人員只需要關注SQL陳述句本身,不需要花費精力在驅動的加載、連接的創建、Statement的創建等復雜的程序,
1.3 Mybatis解決的問題
1、資料庫連接的創建、釋放連接的頻繁操作造成資源的浪費從而影響系統的性能,
2、SQL陳述句撰寫在代碼中,硬編碼造成代碼不容易維護,實際應用中SQL陳述句變化的可能性比較大,一旦變動就需要改變java類,
3、使用preparedStatement的時候傳遞引數使用占位符,也存在硬編碼,因為SQL陳述句變化,必須修改原始碼,
4、對結果集的決議中也存在硬編碼,
2、Mybatis入門案例
2.1 創建資料庫和表
CREATE TABLE `team` (
`teamId` int NOT NULL AUTO_INCREMENT COMMENT '球隊ID',
`teamName` varchar(50) DEFAULT NULL COMMENT '球隊名稱',
`location` varchar(50) DEFAULT NULL COMMENT '球隊位置',
`createTime` date DEFAULT NULL COMMENT '球隊建立時間',
PRIMARY KEY (`teamId`)
) ENGINE=InnoDB AUTO_INCREMENT=1003 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
2.2 創建maven專案,添加Mybatis的jar依賴
創建個java的maven專案
2.3 撰寫Mybatis的組態檔
一般情況下:組態檔的名稱可以自定義,使用mybatis.xml,組態檔放置在java/resources中,
頭檔案去官網中復制粘貼,提供一個中文的網站,Mybatis網址
組態檔中配置mybatis的環境(資料源、事務型別)

2.4 撰寫物體類
物體類中的屬性必須與表中的列名保持一致,默認構造+set+get(不能少)


2.5 撰寫ORM映射檔案
我們是針對物體類Team.java和表Team進行ORM映射.
2.5.1 XML映射檔案必須與物體類在同一個包下面
2.5.2 XML映射檔案名稱必須是物體類名稱一致
頭檔案在網站復制即可,Mybatis網址
注意namespace、id、resultType分別表示什么,

2.6 將映射檔案注冊到mybatis的組態檔中

2.7 配置映射檔案的掃描位置

2.8 使用Mybatis框架的核心介面測驗


2.9. 配置日志檔案
2.9.1.添加jar依賴
2.9.2.添加日志組態檔
# Global logging configuration info warning error
log4j.rootLogger=DEBUG,stdout
# Console output...
log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout log4j.appender.stdout.layout.ConversionPattern=%5p [%t] - %m%n
2.9.3.在mybatis組態檔中添加日志的配置
2.10.入門案例的增刪改查
2.10.0.注意:手動提交事務
增刪改操作,必須手動提交事務,否則不生效
因為上面在mybatis配置中,指定了JDBC方式(Connection)管理事務,默認自動提交是false,
解決1.每執行一次增刪改sql,我們手動提交sqlSession.commit()
解決2.在獲取sqlSession會話時,開啟自動事務,引數true,即factory.openSession(true)
這只是在dao層操作事務,不推薦,將來事務都是在service層通過宣告式事務管理
物體類

2.10.0.在測驗類中使用測驗注解@Before @After減少重復代碼

2.10.1 根據ID查詢單個物件
parameterType:引數型別,sql中占位符型別,該屬性基本型別時可省略,物體型別則不可省略
resultType:回傳型別,執行這條sql后回傳什么型別的結果,基本型別可省略不寫,若集合則其元素型別-->
報錯原因:物體類沒有加默認構造方法

Team.xml的映射檔案中添加:

測驗類中添加如下內容:

2.10.2 增刪改

2.10.3.查詢所有
映射檔案添加
測驗類添加
3、Mybatis物件分析
3.1 Resources
3.2 SqlSessionFactoryBuilder
SqlSessionFactoryBuilder 充當的就是建造者角色 ,sqlSession就是我們最后得到的產品,
3.3 SqlSessionFactory
3.4 SqlSession

selectOne 和 selectList 的不同僅僅是 selectOne 必須回傳一個物件或 null 值,如果回傳值多于一個,那么就會拋出例外,
3.5 Mybatis架構/作業流程

4、原有的Dao方式開發
4.1 創建sqlSession工具類
4.2 創建TeamDao介面和實作類


測驗:

sql映射檔案Team.xml

結果

5.使用ThreadLocal優化sqlSession工具類
5.0.ThreadLocal的理解

5.1.SqlSession執行緒不安全處理方案
保證多個執行緒使用的sqlSession是相互獨立的,沒有關聯,若A、B使用同一個sqlSession,若A使用完close關閉sqlSession,那么B就無法執行了,可以給每一個執行緒系結一個副本的sqlSession,這就需要使用ThreadLocal,
優化后的工具類

6、使用Mapper的介面撰寫Mybatis專案
6.1 什么是Mapper介面

6.2 使用Mapper動態代理
注意,通過Mapper介面 的動態代理幫我們生成了介面實作類,介面的方法要與映射檔案中的對應的id名稱一致,否則無法定位到指定的sql,
6.2.1 撰寫介面TeamMapper.java

在mybatis.xml組態檔中注冊映射檔案

6.2.2 getMapper方法獲取代理物件
只需呼叫 SqlSession 的 getMapper()方法,即可獲取指定介面的實作類物件,

6.3 實作原理
Mapper介面的動態代理是如何在程式運行期間幫我們創建介面的實作類物件的?
我們是通過SqlSession 的 getMapper()方法獲取到了介面的實作類物件,該方法是基于jdk的動態代理在程式運行的時候代理我們創建介面物件,就是通過Proxy.newProxyInstance()方法進行的動態代理,第一引數傳遞類加載,第二個引數傳遞介面類集合,第三個引數回呼程式撰寫代理規則,在這里代理生成介面實作類,


7、增刪改查中的細節
7.1 插入資料的時候回傳自增的id值
即我們將一個物件插入資料庫中時,是不提供主鍵id的值得,id自增自動賦值,那么現在希望插入資料后回傳這條資料的id值?
7.1.1.回傳Integer型別的自增id值
Team物體類

TeamMapper介面(只是用add)

TeamMapper.xml映射檔案(只看add)

注冊TeamMapper.xml映射檔案到mybatis組態檔

測驗


7.1.2.回傳字串型別的自增id值
添加一張新表:球隊記錄表
CREATE TABLE `gamerecord` (
`recordId` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
`homeTeamId` int DEFAULT NULL COMMENT '主隊ID',
`gameDate` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '比賽日期',
`score` int DEFAULT NULL COMMENT '得分',
`visitingTeamId` int DEFAULT NULL COMMENT '客隊ID',
PRIMARY KEY (`recordId`) USING BTREE,
KEY `homeTeamId` (`homeTeamId`) USING BTREE,
KEY `visitingTeamId` (`visitingTeamId`) USING BTREE,
CONSTRAINT `gamerecord_ibfk_1` FOREIGN KEY (`homeTeamId`) REFERENCES `team` (`teamId`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `gamerecord_ibfk_2` FOREIGN KEY (`visitingTeamId`) REFERENCES `team` (`teamId`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;
物體類:球隊記錄物體類

mapper介面GameRecordMapper

映射檔案GameRecordMapper.xml,添加selectKey節點

測驗


7.2 輸入映射(傳參到sql)
7.2.0.parameterType只能接收一個引數
接收的是基本型別(Integer/String..)的話是可以省略parameterType該屬性、若是物體類物件,那么sql中占位符位置必須是物體類中屬性,
7.2.1.使用下標方式#{arg0}或#{param1}

物體類還是Team
mapper介面還是TeamMapper,新添加方法

TeamMapper.xml組態檔中添加如下:

測驗類添加方法:


7.2.2.通過@Param注解傳遞多個傳參
測驗


TeamMapper.xml組態檔中添加如下
測驗類添加方法:
7.2.4. 通過pojo類傳遞多個引數
與map傳遞多個引數類似,要求映射檔案中的引數占位符必須和pojo類中的屬性完全一致,
自己封裝的查詢條件的類
TeamMapper介面添加如下內容:
測驗
總結:

7.3 #{} 和 ${}的區別--面試中喜歡出的考題
7.3.2 ${}
teamMapper.xml

測驗

方拾二:sql中使用${}代替列名,使用不同列作為查詢條件
teamMapper介面

teamMapper.xml
測驗

7.4 輸出映射resultType
7.4.0.輸出pojo型別
7.4.1.輸出簡單型別(單行單列)可省
如果查詢sql回傳的是簡單型別且是單行單列(只要一個值),resultType寫值得型別或可以省略
teamMapper.xml映射檔案

測驗

7.4.2.輸出map集合型別(單行多列)
teamMapper介面

teamMapper.xml映射檔案

測驗


7.4.3.輸出List集合型別(多行多列)
輸出list集合型別--當回傳多行多列時使用,list中元素是map,每個map描述一條記錄

teamMapper介面

teamMapper.xml

測驗


7.5. 輸出映射resultMap
當使用resultType="com.chen.pojo.Team"回傳Team物件時,mybatis會把sql查詢結果自動映射到Team物件中,前提是Team屬性與表的列名是一致的,那么當不一致時,這樣寫就會報錯,這時就需要使用resultMap去自定義表和物體類的映射關系 ,
teamMapper介面

teamMapper.xml映射檔案

測驗


7.6. 資料庫表中列與物體類屬性不一致的處理方式
CREATE TABLE `users` (
`user_id` int NOT NULL AUTO_INCREMENT COMMENT '用戶id',
`user_name` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '用戶姓名',
`user_age` int DEFAULT NULL COMMENT '用戶年齡',
PRIMARY KEY (`user_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci ROW_FORMAT=DYNAMIC;


7.6.1.使用列別名和resultType

7.6.2.使用resultMap
8、Mybatis的全域組態檔
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
8.1 全域組態檔配置的內容
8.2 屬性(properties)
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/team?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT
jdbc.username=root
jdbc.password=root
8.3 設定 settings


8.4 型別別名 typeAliases
8.4.1 Mybatis中已經支持/內置的別名
8.4.1 Mybatis中已經支持的別名



8.4.2 自定義別名
對于自定義的類,我們可以給其起個別名
在組態檔配置別名,注意查看<typeAliases>該放在哪個位置,通過
<configuration>進入查看配置順序
可以直接使用別名替代全類名

8.5 映射器 Mappers(將映射檔案映射到mybatis組態檔)
8.5.1、 類路徑參考映射檔案
8.5.2、使用的mapper介面的完全限定名
8.5.3、將包內的映射器介面實作全部注冊為映射器--推薦
指定包下的所有Mapper介面

8.6 dataSource標簽

8.7 Mybatis如何管理事務
8.7.1、默認是需要手動提交事務的

managed:由容器來管理事務的整個生命周期(如Spring容器),
8.7.2、自動提交事務

9、Mybatis中的關系映射
就是如何給一個物體類中基本屬性以及關聯屬性(物件/list集合)去映射查詢的結果,通常是一對多關系的兩表連接查詢中遇到,
或者說對一/對多關系的結果映射的處理方式有哪些

球隊與球員關系:一對多關系
一個球隊有多個球員
一個球員屬于一個球隊
在java中球員如何實作多對一的關系的系結,在mybatis中又是如何進行對一關系的映射?
在java中球隊如何實作一對多的關系的系結,在mybatis中又是如何進行對多關系的映射?
連接查詢的結果集(查詢球員資訊包含所在球隊資訊)在mybatis中是如何映射到物體類的?
9.1 對一關系映射的處理方式(三種方式)
9.1.0.需求:查詢球員資訊包含所在球隊資訊
9.1.1 物體類
添加關聯欄位Team球隊物件

9.1.2 mapper介面
9.1.3 對一映射方式1:通過關聯物件打點呼叫屬性的方式
方式1:對一關系的映射:兩表的連接查詢+通過關聯物件打點呼叫屬性的方式
PlayerMapper介面

PlayerMapper.xml
baseResultMap映射

9.1.4 對一映射方式2:直接參考關聯物件的Mapper映射

PlayerMapper.xml 映射檔案
resultMap所繼承當前映射檔案中的baseResultMap

resultMap所參考的TeamMapper映射檔案中的baseResultMap

測驗



9.1.5 對一映射方式3:直接參考關聯物件的單獨查詢的方法
要求:1、不需要兩表的連接查詢 ,拆開查詢
2、關聯物件中已經存在被參考的查詢方法

同上,這里只展示映射檔案添加的內容:

9.1.6 測驗


9.2 對多關系的結果映射的兩種處理方式
9.2.0.查詢球隊資訊以及擁有的球員資訊
Team球隊物體類 添加關聯欄位List集合存盤球隊的球員

9.2.1 方式1:連接查詢+參考關聯物件的結果映射

TeamMapper介面添加方法

TeamMapper.xml映射檔案

測驗


9.2.2 方式2:不使用連接查詢+參考關聯物件的單獨查詢的方法

先在PlayerMapper介面中定義根據teamId查詢球員的方法

PlayerMapper.xml映射檔案中

TeamMapper介面定義方法

TeamMapper.xml映射檔案

測驗

10、Mybatis動態SQL
Mybatis使用標簽構建動態SQL陳述句
10.1 where標簽構建動態SQL多條件查詢
10.1.1.原有寫法:根據不同條件拼接 SQL 陳述句

10.1.2.where標簽構建動態SQL多條件查詢


TeamMapper.xml映射檔案添加:

測驗


10.2 set標簽構建動態sql的更新update
10.2.1 原有的更新存在的弊端
當前臺只是更新team中幾個屬性,會導致team其它屬性資料丟失
TeamMapper介面

TeamMapper.xml映射檔案

測驗



TeamMapper介面

TeamMapper.xml映射檔案

測驗


10.3 forEach標簽構建動態sql的批量添加/洗掉
10.3.1 批量添加
TeamMapper介面

TeamMapper.xml映射檔案
測驗



10.3.2 批量洗掉
TeamMapper介面

TeamMapper.xml映射檔案

測驗


11 、分頁插件
11.1 jar依賴

11.2 在Mybatis全域組態檔中添加插件配置
mybatis中的配置都是有順序要求的
11.3 使用插件


12、Mybatis快取
12.1 快取作用
12.2 一級快取:SqlSession級別的快取,自動開啟
12.2.1 一級快取作業原理

12.2.2 清空快取的方式
手動清空/執行增刪改并提交后自動清空/關倍訓話/xml中重繪快取/提交回滾都會清空快取
12.3 二級快取:Mapper級別的快取
12.3.0.二級快取作業原理
12.3.1 使用二級快取步驟
1.在mybatis組態檔中開啟二級快取

2.在需要二級快取的Mapper中添加快取標記

3.物體類必須實作Serializable介面
因為快取是需要寫入資料的


12.3.2 二級快取的禁用
當在Mapper映射檔案中使用了二級快取,那么該映射檔案中所有的select陳述句都會啟用快取,我們可以去禁用某個sql查詢,
12.3.3 快取的屬性配置
快取中有哪些屬性

如果想在命名空間中共享相同的快取配置和實體,可以使用cache-ref 元素來參考另外一個快取
<cache-ref namespace="com.kkb.mapper.TeamMapper" />
13、反向生成插件
13.0.反向生成幾個注意點
根據單表反向生成這些內容,包括單表的最基本的增刪改查、還有介面、映射檔案,包括動態查詢,動態的插入更新,多條件查詢都寫好了,只要是單表操作,都給我們生成了,我們只需要參考方法就可以了,sql陳述句都寫好的,
同一張表只能一次反向生成,除非洗掉掉之前生成的內容,不然再一次反向生成的內容會追加的,比如出現兩個BaseResultMap,
如果其它資料庫有相同的表,也會被反向生成的
13.1 插件的配置
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE generatorConfiguration PUBLIC "-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN"
"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd">
<!-- 配置生成器 -->
<!--注意:
1.同一張表只能一次反向生成,除非洗掉掉之前生成的內容,不然再一次反向生成的內容會追加的,比如出現兩個BaseResultMap
2..如果其它資料庫有相同的表,也會被反向生成的-->
<generatorConfiguration>
<!--1、資料庫驅動jar:添加自己的jar路徑 -->
<classPathEntry location="E:\mysql8.0驅動程式\mysql-connector-java-8.0.16.jar" />
<context id="MyBatis" targetRuntime="MyBatis3">
<!--去除注釋 -->
<commentGenerator>
<property name="suppressAllComments" value="true" />
</commentGenerator>
<!--2、資料庫連接 -->
<jdbcConnection driverClass="com.mysql.cj.jdbc.Driver"
connectionURL="jdbc:mysql://127.0.0.1:3306/team?useUnicode=true&characterEncoding=utf-8&
useSSL=false&serverTimezone=GMT" userId="root" password="64531515z">
</jdbcConnection>
<!-- 默認false,把JDBC decimal 和 numeric 型別決議為 Integer;
為 true時把JDBC decimal和numericC型別決議為java.math.BigDecimal -->
<javaTypeResolver>
<property name="forceBigDecimals" value="false" />
</javaTypeResolver>
<!--3、生成物體類 指定包名 以及生成的地址 (可以自定義地址,但是路徑不存在不會自動創建 使用Maven生成在target目錄下,會自動創建)-->
<javaModelGenerator targetPackage="org.bowei.pojo" targetProject="src\main\java">
<property name="trimStrings" value="true" />
</javaModelGenerator>
<!--4、生成SQLmapper.xml映射檔案 -->
<sqlMapGenerator targetPackage="org.bowei.mapper" targetProject="src\main\resources"> </sqlMapGenerator>
<!--5、生成Dao(Mapper)介面檔案,-->
<javaClientGenerator type="XMLMAPPER" targetPackage="org.bowei.mapper" targetProject="src\main\java"> </javaClientGenerator>
<!--6、要生成哪些表(更改tableName和domainObjectName就可以) -->
<!-- tableName:要生成的表名
enableCountByExample:Count陳述句中加入where條件查詢,默認為true開啟
enableUpdateByExample:Update陳述句中加入where條件查詢,默認為true開啟
enableDeleteByExample:Delete陳述句中加入where條件查詢,默認為true開啟
enableSelectByExample:Select多條陳述句中加入where條件查詢,默認為true開啟
selectByExampleQueryId:Select單個物件陳述句中加入where條件查詢,默認為true開啟 -->
<!--
<table tableName="Team"
enableCountByExample="false"
enableUpdateByExample="false"
enableUpdateByPrimaryKey="false"
enableDeleteByExample="false"
enableDeleteByPrimaryKey="false"
enableSelectByExample="false"
selectByExampleQueryId="false">
<property name="useActualColumnNames" value="true"/>
</table>
-->
<!--根據表反向生成這些內容,包括
單表的最基本的增刪改查、還有介面、映射檔案,包括動態查詢,多條件查詢都寫好了,只要是單表操作,我們就不需要動,只需要選擇要用的-->
<table tableName="Users">
<!--表不區分大小,比如表欄位teamId,由表生成的物體類屬性是teamid,下面設定就是針對這個問題-->
<property name="useActualColumnNames" value="true"/>
</table>
</context>
</generatorConfiguration>

我們只需要提供資料表,以及反向生成插件和配置即可,


生成后檢查映射檔案中只有一個ResultMap就表示生成正常,沒有同名的表被生成,可以看到生成的映射檔案中你能想到的所有單表查詢的sql都寫好了,包括動態的更新、插入(即物件中屬性不全都有值),多條件查詢等,我們只需要參考id名即可,
13.2 使用反向生成中的多條件查詢方法
![]()
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/293950.html
標籤:java
上一篇:學弟吐槽:太卷了!現在Android面試“質量”都這么高嗎?
下一篇:Android的java的報錯提示:Could not find com.android.tools.build:gradle:4.2.2.








