MyBatis學習總結(二)——MyBatis核心配置檔案與輸入輸出對映
在上一章中我們學習了《MyBatis學習總結(一)——ORM概要與MyBatis快速起步》,這一章主要是介紹MyBatis核心配置檔案、使用介面+XML實現完整資料訪問、輸入引數對映與輸出結果對映等內容。
一、MyBatis配置檔案概要
MyBatis核心配置檔案在初始化時會被引用,在配置檔案中定義了一些引數,當然可以完全不需要配置檔案,全部通過編碼實現,該配置檔案主要是是起到解偶的作用。如第一講中我們用到conf.xml檔案:
<?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"> <configuration> <environments default="development"> <environment id="development"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/nfmall?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="[email protected]"/> </dataSource> </environment> </environments> <mappers> <!--<mapper resource="mapper/studentMapper.xml"/>--> <mapper class="com.zhangguo.mybatis02.dao.StudentMapper"></mapper> </mappers> </configuration>
MyBatis 的配置檔案包含了會深深影響 MyBatis 行為的設定(settings)和屬性(properties)資訊。文件的頂層結構如下::
二、MyBatis配置檔案詳解
2.1、properties屬性
作用:將資料連線單獨配置在db.properties中,只需要在myBatisConfig.xml中載入db.properties的屬性值,在myBatisConfig.xml中就不需要對資料庫連線引數進行硬編碼。資料庫連線引數只配置在db.properties中,方便對引數進行統一管理,其它xml可以引用該db.properties。
db.properties的內容:
##MySQL連線字串 #驅動 mysql.driver=com.mysql.jdbc.Driver #地址 mysql.url=jdbc:mysql://127.0.0.1:3306/nfmall?useUnicode=true&characterEncoding=UTF-8 #使用者名稱 mysql.username=root #密碼 mysql.password[email protected]123
在myBatisConfig.xml中載入db.properties
<?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"> <configuration> <!--匯入db.properties檔案中的所有key-value資料--> <properties resource="db.properties"> <!--定義一個名稱為driver,值為com.mysql.jdbc.Driver的屬性--> <property name="driver" value="com.mysql.jdbc.Driver"></property> </properties> <!--環境配置,default為預設選擇的環境--> <environments default="work"> <!--開發--> <environment id="development"> <!--事務管理--> <transactionManager type="JDBC"/> <!--連線池--> <dataSource type="POOLED"> <!--引用屬性${mysql.driver}--> <property name="driver" value="${mysql.driver}"/> <property name="url" value="${mysql.url}"/> <property name="username" value="${mysql.username}"/> <property name="password" value="${mysql.password}"/> </dataSource> </environment> <!--執行--> <environment id="work"> <transactionManager type="JDBC"/> <dataSource type="POOLED"> <property name="driver" value="${driver}"/> <property name="url" value="jdbc:mysql://127.0.0.1:3306/nfmall?useUnicode=true&characterEncoding=UTF-8"/> <property name="username" value="root"/> <property name="password" value="[email protected]"/> </dataSource> </environment> </environments> <mappers> <!--<mapper resource="mapper/studentMapper.xml"/>--> <mapper class="com.zhangguo.mybatis02.dao.StudentMapper"></mapper> </mappers> </configuration>
properties特性:
注意:
- 在properties元素體內定義的屬性優先讀取。
- 然後讀取properties元素中resource或url載入的屬性,它會覆蓋已讀取的同名屬性。
- 最後讀取parameterType傳遞的屬性,它會覆蓋已讀取的同名屬性
建議:
不要在properties元素體內新增任何屬性值,只將屬性值定義在properties檔案中。
在properties檔案中定義屬性名要有一定的特殊性,如xxxx.xxxx(jdbc.driver)
2.2、settings全域性引數配置
mybatis框架執行時可以調整一些執行引數。比如,開啟二級快取,開啟延遲載入等等。全域性引數會影響mybatis的執行行為。
mybatis-settings的配置屬性以及描述
setting(設定) | Description(描述) | valid Values(驗證值組) | Default(預設值) |
cacheEnabled | 在全域性範圍內啟用或禁用快取配置 任何對映器在此配置下。 | true | false | TRUE |
lazyLoadingEnabled | 在全域性範圍內啟用或禁用延遲載入。禁用時,所有相關聯的將熱載入。 | true | false | TRUE |
aggressiveLazyLoading | 啟用時,有延遲載入屬性的物件將被完全載入後呼叫懶惰的任何屬性。否則,每一個屬性是按需載入。 | true | false | TRUE |
multipleResultSetsEnabled | 允許或不允許從一個單獨的語句(需要相容的驅動程式)要返回多個結果集。 | true | false | TRUE |
useColumnLabel | 使用列標籤,而不是列名。在這方面,不同的驅動有不同的行為。參考驅動文件或測試兩種方法來決定你的驅動程式的行為如何。 | true | false | TRUE |
useGeneratedKeys | 允許JDBC支援生成的金鑰。相容的驅動程式是必需的。此設定強制生成的鍵被使用,如果設定為true,一些驅動會不相容性,但仍然可以工作。 | true | false | FALSE |
autoMappingBehavior | 指定MyBatis的應如何自動對映列到欄位/屬性。NONE自動對映。 PARTIAL只會自動對映結果沒有巢狀結果對映定義裡面。 FULL會自動對映的結果對映任何複雜的(包含巢狀或其他)。 |
NONE,PARTIAL,FULL |
PARTIAL |
defaultExecutorType | 配置預設執行人。SIMPLE執行人確實沒有什麼特別的。 REUSE執行器重用準備好的語句。 BATCH執行器重用語句和批處理更新。 |
SIMPLE,REUSE,BATCH |
SIMPLE |
safeRowBoundsEnabled | 允許使用巢狀的語句RowBounds。 | true | false | FALSE |
mapUnderscoreToCamelCase | 從經典的資料庫列名A_COLUMN啟用自動對映到駱駝標識的經典的Java屬性名aColumn。 | true | false | FALSE |
localCacheScope | MyBatis的使用本地快取,以防止迴圈引用,並加快反覆巢狀查詢。預設情況下(SESSION)會話期間執行的所有查詢快取。如果localCacheScope=STATMENT本地會話將被用於語句的執行,只是沒有將資料共享之間的兩個不同的呼叫相同的SqlSession。 |
SESSION STATEMENT |
SESSION |
dbcTypeForNull | 指定為空值時,沒有特定的JDBC型別的引數的JDBC型別。有些驅動需要指定列的JDBC型別,但其他像NULL,VARCHAR或OTHER的工作與通用值。 | JdbcType enumeration. Most common are: NULL, VARCHAR and OTHER | OTHER |
lazyLoadTriggerMethods | 指定觸發延遲載入的物件的方法。 | A method name list separated by commas | equals,clone,hashCode,toString |
defaultScriptingLanguage | 指定所使用的語言預設為動態SQL生成。 | A type alias or fully qualified class name. |
org.apache.ibatis.scripting.xmltags .XMLDynamicLanguageDriver |
callSettersOnNulls | 指定如果setter方法或map的put方法時,將呼叫檢索到的值是null。它是有用的,當你依靠Map.keySet()或null初始化。注意(如整型,布林等)不會被設定為null。 | true | false | FALSE |
logPrefix | 指定的字首字串,MyBatis將會增加記錄器的名稱。 | Any String | Not set |
logImpl | 指定MyBatis的日誌實現使用。如果此設定是不存在的記錄的實施將自動查詢。 | SLF4J | LOG4J | LOG4J2 | JDK_LOGGING | COMMONS_LOGGING | STDOUT_LOGGING | NO_LOGGING | Not set |
proxyFactory | 指定代理工具,MyBatis將會使用建立懶載入能力的物件。 | CGLIB | JAVASSIST | CGLIB |
官方文件settings的例子:
<setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="useColumnLabel" value="true"/> <setting name="useGeneratedKeys" value="false"/> <setting name="autoMappingBehavior" value="PARTIAL"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="lazyLoadTriggerMethods" value="equals,clone,hashCode,toString"/> </settings>View Code
示例:
這裡設定MyBatis的日誌輸出到控制檯:
<!--外部引入的內容將覆蓋內部定義的--> <properties resource="db.properties"> <!--定義一個名稱為driver,值為com.mysql.jdbc.Driver的屬性--> <property name="mysql.driver" value="com.mysql.jdbc.Driver"></property> </properties> <settings> <!--設定是否允許快取--> <setting name="cacheEnabled" value="true"/> <!--設定日誌輸出的目標--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
結果:
2.3、typeAiases(別名)
在mapper.xml中,定義很多的statement,statement需要parameterType指定輸入引數的型別、需要resultType指定輸出結果的對映型別。
如果在指定型別時輸入型別全路徑,不方便進行開發,可以針對parameterType或resultType指定的型別定義一些別名,在mapper.xml中通過別名定義,方便開發。
如下所示型別com.zhangguo.mybatis02.entities.Student會反覆出現,冗餘:
<?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.zhangguo.mybatis02.mapper.studentMapper"> <select id="selectStudentById" resultType="com.zhangguo.mybatis02.entities.Student"> SELECT id,name,sex from student where id=#{id} </select> <select id="selectStudentsByName" parameterType="String" resultType="com.zhangguo.mybatis02.entities.Student"> SELECT id,name,sex from student where name like '%${value}%'; </select> <insert id="insertStudent" parameterType="com.zhangguo.mybatis02.entities.Student"> insert into student(name,sex) VALUES(#{name},'${sex}') </insert> <update id="updateStudent" parameterType="com.zhangguo.mybatis02.entities.Student"> update student set name=#{name},sex=#{sex} where id=#{id} </update> <delete id="deleteStudent" parameterType="int"> delete from student where id=#{id} </delete> </mapper>
2.3.1.MyBatis預設支援的別名
別名 |
對映的型別 |
_byte |
byte |
_long |
long |
_short |
short |
_int |
int |
_integer |
int |
_double |
double |
_float |
float |
_boolean |
boolean |
string |
String |
byte |
Byte |
long |
Long |
short |
Short |
int |
Integer |
integer |
Integer |
double |
Double |
float |
Float |
boolean |
Boolean |
date |
Date |
decimal |
BigDecimal |
bigdecimal |
BigDecimal |
2.3.2.自定義別名
(一)、單個別名定義(在myBatisConfig.xml)
<settings> <!--設定是否允許快取--> <setting name="cacheEnabled" value="true"/> <!--設定日誌輸出的目標--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <!--別名--> <typeAliases> <!--定義單個別名,指定名稱為student,對應的型別為com.zhangguo.mybatis02.entities.Student--> <typeAlias type="com.zhangguo.mybatis02.entities.Student" alias="student"></typeAlias> </typeAliases>
UserMapper.xml引用別名
<?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.zhangguo.mybatis02.mapper.studentMapper"> <select id="selectStudentById" resultType="student"> SELECT id,name,sex from student where id=#{id} </select> <select id="selectStudentsByName" parameterType="String" resultType="student"> SELECT id,name,sex from student where name like '%${value}%'; </select> <insert id="insertStudent" parameterType="student"> insert into student(name,sex) VALUES(#{name},'${sex}') </insert> <update id="updateStudent" parameterType="student"> update student set name=#{name},sex=#{sex} where id=#{id} </update> <delete id="deleteStudent" parameterType="int"> delete from student where id=#{id} </delete> </mapper>
(二)批量定義別名,掃描指定的包
定義單個別名的缺點很明顯,如果專案中有很多別名則需要一個一個定義,且修改型別了還要修改配置檔案非常麻煩,可以指定一個包,將下面所有的類都按照一定的規則定義成別名:
<settings> <!--設定是否允許快取--> <setting name="cacheEnabled" value="true"/> <!--設定日誌輸出的目標--> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings> <!--別名--> <typeAliases> <!--定義單個別名,指定名稱為student,對應的型別為com.zhangguo.mybatis02.entities.Student--> <!--<typeAlias type="com.zhangguo.mybatis02.entities.Student" alias="student"></typeAlias>--> <!--指定包名下所有的類被自動掃描並定義預設別名, mybatis會自動掃描包中的pojo類,自動定義別名,別名就是類名(首字母大寫或小寫都可以)--> <package name="com.zhangguo.mybatis02.entities"></package> </typeAliases>
如果com.zhangguo.mybatis02.entities包下有一個名為Student的類,則使用別名時可以是:student,或Student。
你一定會想到當兩個名稱相同時的衝突問題,可以使用註解解決
解決方法:
2.4、typeHandlers(型別處理器)
mybatis中通過typeHandlers完成jdbc型別和java型別的轉換。
通常情況下,mybatis提供的型別處理器滿足日常需要,不需要自定義.
mybatis支援型別處理器:
型別處理器 |
Java型別 |
JDBC型別 |
BooleanTypeHandler |
Boolean,boolean |
任何相容的布林值 |
ByteTypeHandler |
Byte,byte |
任何相容的數字或位元組型別 |
ShortTypeHandler |
Short,short |
任何相容的數字或短整型 |
IntegerTypeHandler |
Integer,int |
任何相容的數字和整型 |
LongTypeHandler |
Long,long |
任何相容的數字或長整型 |
FloatTypeHandler |
Float,float |
任何相容的數字或單精度浮點型 |
DoubleTypeHandler |
Double,double |
任何相容的數字或雙精度浮點型 |
BigDecimalTypeHandler |
BigDecimal |
任何相容的數字或十進位制小數型別 |
StringTypeHandler |
String |
CHAR和VARCHAR型別 |
ClobTypeHandler |
String |
CLOB和LONGVARCHAR型別 |
NStringTypeHandler |
String |
NVARCHAR和NCHAR型別 |
NClobTypeHandler |
String |
NCLOB型別 |
ByteArrayTypeHandler |
byte[] |
任何相容的位元組流型別 |
BlobTypeHandler |
byte[] |
BLOB和LONGVARBINARY型別 |
DateTypeHandler |
Date(java.util) |
TIMESTAMP型別 |
DateOnlyTypeHandler |
Date(java.util) |
DATE型別 |
TimeOnlyTypeHandler |
Date(java.util) |
TIME型別 |
SqlTimestampTypeHandler |
Timestamp(java.sql) |
TIMESTAMP型別 |
SqlDateTypeHandler |
Date(java.sql) |
DATE型別 |
SqlTimeTypeHandler |
Time(java.sql) |
TIME型別 |
ObjectTypeHandler |
任意 |
其他或未指定型別 |
EnumTypeHandler |
Enumeration型別 |
VARCHAR-任何相容的字串型別,作為程式碼儲存(而不是索引)。 |
2.5、mappers(對映配置)
對映配置可以有多種方式,如下XML配置所示:
<!-- 將sql對映註冊到全域性配置中--> <mappers> <!-- mapper 單個註冊(mapper如果多的話,不太可能用這種方式) resource:引用類路徑下的檔案 url:引用磁碟路徑下的資源 class,引用介面 package 批量註冊(基本上使用這種方式) name:mapper介面與mapper.xml所在的包名 --> <!-- 第一種:註冊sql對映檔案--> <mapper resource="com/zhangguo/mapper/UserMapper.xml" /> <!-- 第二種:註冊介面sql對映檔案必須與介面同名,並且放在同一目錄下--> <mapper class="com.zhangguo.mapper.UserMapper" /> <!-- 第三種:註冊基於註解的介面 基於註解 沒有sql對映檔案,所有的sql都是利用註解寫在介面上--> <mapper class="com.zhangguo.mapper.TeacherMapper" /> <!-- 第四種:批量註冊 需要將sql配置檔案和介面放到同一目錄下--> <package name="com.zhangguo.mapper" /> </mappers>
2.5.1、通過resource載入單個對映檔案
<mappers> <!--根據路徑註冊一個基於XML的對映器--> <mapper resource="mapper/studentMapper.xml"/> </mappers>
注意位置
2.5.2:通過mapper介面載入單個對映檔案
<!-- 通過mapper介面載入單個對映配置檔案 遵循一定的規範:需要將mapper介面類名和mapper.xml對映檔名稱保持一致,且在一個目錄中; 上邊規範的前提是:使用的是mapper代理方法; --> <mapper class="com.mybatis.mapper.UserMapper"/>
按照上邊的規範,將mapper.java和mapper.xml放在一個目錄 ,且同名。
注意:
對於Maven專案,IntelliJ IDEA預設是不處理src/main/java中的非java檔案的,不專門在pom.xml中配置<resources>是會報錯的,參考處理辦法:
<resources> <resource> <directory>src/main/java</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> <resource> <directory>src/main/resources</directory> <includes> <include>**/*.properties</include> <include>**/*.xml</include> </includes> <filtering>true</filtering> </resource> </resources>
所以src/main/java中最好不要出現非java檔案。實際上,將mapper.xml放在src/main/resources中比較合適。
2.5.3、批量載入mapper
<!-- 批量載入對映配置檔案,mybatis自動掃描包下面的mapper介面進行載入 遵循一定的規範:需要將mapper介面類名和mapper.xml對映檔名稱保持一致,且在一個目錄中; 上邊規範的前提是:使用的是mapper代理方法; --> <package name="com.mybatis.mapper"/>
最後的配置檔案:
<?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"> <configuration> <!--匯入db.properties檔案中的所有key-value資料--> <!--外部引入的內容將覆蓋內部定義的--> <properties resource="db.properties"> <!--定義一個名稱為driver,值為com.mysql.jdbc.Driver的屬性--> <property name相關推薦
MyBatis學習總結(二)——MyBatis核心配置檔案與輸入輸出對映
在上一章中我們學習了《MyBatis學習總結(一)——ORM概要與MyBatis快速起步》,這一章主要是介紹MyBatis核心配置檔案、使用介面+XML實現完整資料訪問、輸入引數對映與輸出結果對映等內容。 一、MyBatis配置檔案概要 MyBatis核心配置檔案在初始化時會被引用,在配置檔案中定義了一些
MyBatis學習總結(二)---優化MyBatis配置檔案中的配置
藉助properties來優化MyBatis配置檔案中的配置 之前我們是直接把資料庫的連線配置資訊直接放在MyBatis的xml配置檔案中的,如: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE
MyBatis學習總結(三)——多表關聯查詢與動態SQL
一、多表關聯查詢 表與表之間有三種常見的關聯關係,分別是一對一,一對多與多對多關係,MyBatis直接提供一對一與一對多的關聯關係,可以通過間接的方式實現多對多關聯。 1.1、一對一關係 1.1.1、執行環境 假定一個員工(emp)擁有一個登入使用者(user),員工與使用者表之間是一對一關係:
MyBatis學習總結(四)——MyBatis快取與程式碼生成
一、MyBatis快取 快取可以提高系統性能,可以加快訪問速度,減輕伺服器壓力,帶來更好的使用者體驗。快取用空間換時間,好的快取是快取命中率高的且資料量小的。快取是一種非常重要的技術。 1.0、再次封裝SqlSessionFactoryUtils 為了配置快取的學習我們將工具類再次封裝。 原SqlS
MyBatis學習總結(24)——Mybatis常見問題彙總
1. #{}和${}的區別是什麼? #{}是預編譯處理,${}是字串替換。Mybatis在處理#{}時,會將sql中的#{}替換為?號,呼叫PreparedStatement的set方法來賦值;Mybatis在處理${}時,就是把${}替換成變數的值。使用#{}可以有效的防止SQL注入,提高系統安全
Mybatis學習筆記(二)-Mybatis配置檔案與對映檔案詳解
一、Mybatis配置檔案詳解 以下是mybatis.xml檔案,提倡放在src目錄下,檔名任意 <?xml version="1.0" encoding="UTF-8"?> <
MyBatis學習總結(14)——Mybatis使用技巧總結
1、 區分 #{} 和 ${}的不同應用場景 1)#{} 會生成預編譯SQL,會正確的處理資料的型別,而${}僅僅是文字替換。 對於SQL: select * from student wher
MyBatis學習總結(17)——Mybatis分頁外掛PageHelper
<!-- plugins在配置檔案中的位置必須符合要求,否則會報錯,順序如下: properties?, settings?, typeAliases?, typeHandlers?, objectFactory?,objectWrapperFactory?,
MyBatis 學習總結(一)——MyBatis 簡單介紹及快速入門
MyBatis 簡單介紹及快速入門 簡單介紹 MyBatis是支援普通SQL查詢,儲存過程和高階對映的優秀持久層框架。MyBatis消除了幾乎所有的JDBC程式碼和引數的手工設定以及對結果集的檢索封裝。MyBatis可以使用簡單的XML或註解用於配置
Linux學習總結(二) 網絡配置-NAT方式靜態IP配置篇
開機啟動 log scrip 分享 如何快速 報錯 網絡服務 重新 查找 一:DHCP 服務驗證 1: 之前我們在裏面已經裝好了centos,當時我們選擇的組網方式為NAT方式,那麽我們怎麽樣如何快速實現虛擬機系統訪問外網呢?能不能直接上網呢,來我們試一下ping baid
Spring學習總結(二)——靜態代理、JDK與CGLIB動態代理、AOP+IoC
AOP(Aspect Oriented Programming)意為:面向切面程式設計,通過預編譯方式和執行期動態代理實現程式功能的統一維護的一種技術。AOP是OOP的延續,是軟體開發中的一個熱點,也是Spring框架中的一個重要內容,是函數語言程式設計的一種衍生範型。利用AOP可以對業務邏輯的各個部分進行隔
JNDI學習總結(二):tomcat配置全域性和私有JNDI資料來源的幾種方式
下面介紹幾種常用的JNDI資料來源配置方式環境:IDEA+tomcat7全域性:1. 修改tomcat的context.xml的<context>標籤 在<context>標籤
機器視覺學習總結(二)—— LDA,PCA演算法與應用
//***************************** Face Recognize *********************************** void train(){ // load training data nTrainFaces = loadFace
Mybatis學習系列(二)Mapper映射文件
tst 轉換 tin 是個 sql註入 eas 屬性。 object spl Mapper映射文件,作用是用來配置SQL映射語句,根據不同的SQL語句性質,使用不同的標簽,mapper文件中常用的標簽有<iselect>、<insert>、<
MyBatis學習總結(一)——ORM概要與MyBatis快速起步
管理 stat prim aot 驅動 單元測試 build sta 環境 目錄 一、ORM 1.1、ORM簡介 1.2、ORM的概念 1.3、ORM的優缺點 二、MyBatis 2.1、MyBatis的特點 2.2、MyBatis工作流程
MyBatis學習總結(八)---快取機制
mybatis提供了快取機制減輕資料庫壓力,提高資料庫效能 mybatis的快取分為兩級:一級快取、二級快取 一級快取是SqlSession級別的快取,快取的資料只在SqlSession內有效 二級快取是mapper級別的快取,同一個namespace公用這一個快取,所以對SqlSess
MyBatis學習總結(六)---使用log4j2將sql語句執行記錄輸出控制檯和檔案中
在上一篇部落格中我簡單的介紹了在MyBatis中如何使用日誌,並給出了一個在MyBatis中使用log4j的示例。 MyBatis中日誌的使用及使用log4j示例 下面介紹在MyBatis中如何使用log4j2將sql語句執行記錄輸出控制
MyBatis學習總結(九)---基於XML多表聯合查詢(一對一、一對多、多對多)
1、一對一的關聯 使用association,association元素用於處理“has-one”(一對一)這種型別關係。 作用:針對pojo物件屬性的對映,它的兩個主要引數此時對應的值: javaType對應pojo類名, property對應pojo的
Mybatis學習總結(四)---一對多對映
建立house表,一個使用者有多個房子,所以一個使用者對應多條房屋資訊。 以下sql查詢出使用者和所在部門資訊以及其房屋資訊 SELECT user.*, dept.dept
mybatis學習筆記(二)之XML方式的基本用法
在前一篇筆記中,我們建立了配置 mybatis-config.xml 檔案,原來 mappers標籤下的內容為: <mappers> <mapper resource="tk/mybatis/simple/mapper/CountryMa