MyBatis(2)-全域性配置檔案
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/mybatis jdbc.username=root jdbc.password=9876
2.1.2)在mybatis-config.xml檔案中加入
<properties resource="db.properties" ></properties>
2.2.3)得到我們的資料資訊
<environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment>
此時我們再次執行之前的測試程式碼,一樣可以查詢出結果
/------------------------------------------------------------分割線------------------------------------------------------------/
2.2)settings
這是MyBatis中極為重要的調整設定,他會改變MyBatis的執行行為 用來設定每一個設定項的 有很多的屬性標籤 name:設定項的名字 value:設定項的取值 例項:mybatis-config.xml加入<settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings>假設我們資料庫的欄位和類的欄位不一樣:資料庫----last_name 類----lastName 此時使用這個駝峰命名發,即可匹配到兩者之間的關係,否雜而在查詢的時候可能會顯示為null 此處不在做詳細的測試,可以參考相關的文件。 /------------------------------------------------------------分割線------------------------------------------------------------/ 2.3)typeAliases(別名處理器) 把java型別起一個簡單的名字,可以減少工作量 2.3.1)單個類起別名: 2.3.1.1在mybatis-config.xml檔案中: 此時使用預設的系統命名法
<typeAliases>
<!-- 為某個java型別起別名
type:指定起別名的全類名,預設就是類名小寫
可以用alias為起指定新的別名
我們此時給Employee起別名
-->
<typeAlias type="com.MrChengs.bean.Employee"/>
</typeAliases>
2.3.1.2)在EmployeeMapper.xml檔案中
<!-- 介面式程式設計 --> <select id="getEmployee" resultType="employee"> select id,name,gender,email from test where id = #{id} </select>
我們繼續使用上次的查詢方法進行修改,在預設不命名的情況下,是類的小寫!
此時可以查詢成功!
2.3.2)使用alias
2.3.2.1)在mybatis-config.xml檔案中,是在2.3.1中的例項中加入alias
此時把其類命名為emp
<typeAlias type="com.MrChengs.bean.Employee" alias="emp"/>
2.3.2.2)在EmployeeMapper.xml檔案中
<select id="getEmployee" resultType="emp"> select id,name,gender,email from test where id = #{id} </select>此時可以查詢成功! 2.3.3)多個類一起起別名時 2.3.3.1)在mybatis-config.xml
<typeAliases> <!-- package:為某個包下的 所有類批量起別名 name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個別名(預設類名小寫) --> <package name="com.MrChengs.bean"/> </typeAliases>
2.3.3.2)EmployeeMapper.xml檔案中
<select id="getEmployee" resultType="Employee"> select id,name,gender,email from test where id = #{id} </select>
此時查詢是可以成功的!
2.3.4)在多各類一起起別名時
容易產生一個問題,假設此時子包裡和父包了都有一個同名類
此時MyBatis會很難進行區分,所有有以下的方法:
2.3.4.1)在Employee.java中
並且使用@Alias進行重新命名
2.3.4.2)EmployeeMapper.xml檔案中引用我們所建立的新的別名"empl"
<select id="getEmployee" resultType="empl"> select id,name,gender,email from test where id = #{id} </select>
此時會編譯得到我們想要的答案!
注意:在起別名的時候,不區分大小寫!
/------------------------------------------------------------分割線------------------------------------------------------------/
2.4)typeHandlers
架起java型別和資料庫型別的對映 使用方法:/------------------------------------------------------------分割線------------------------------------------------------------/
2.5)plugins
待補充。。。
/------------------------------------------------------------分割線------------------------------------------------------------/
2.6)environments 環境
可以配置多種環境 <environments default="development"> default:可以指定使用那種環境,可以進行快速的切換 environment:配置一個具體的環境,可以配置多個具體環境,且必須配置 id:代表當前環境的唯一標識 transactionManager:事物管理器 type:事物管理器的型別,有兩個取值 JDBC(使用mysql)/MANAGED(使用j2ee自帶的) dataSource:資料來源 type:資料來源型別 POOLED(使用連線池)/JNDI/UNPOOLEN(不使用連線池) property:資料來源的相關資訊<environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment>
具體的講解如上!
/------------------------------------------------------------分割線------------------------------------------------------------/
2.7)databaseIdProvider
程式碼在environments標籤下面 可移植性的重要性 支援多資料庫的廠商的 2.7.1)在mybatis-config.xml type="DB_VENDOR"固定值,作用是得到資料庫廠商的標識來執行不同的SQL語句
<databaseIdProvider type="DB_VENDOR"> <!-- 為不同資料庫起別名 --> <property name="MySQL" value="mysql"/> <property name="SqlSever value="sqlSever"/> </databaseIdProvider>
2.7.2)引用方式
假設此時databaseId=sqlSever,則執行的是SqlSever資料庫!
/------------------------------------------------------------分割線------------------------------------------------------------/
2.8)mappers
將sql對映註冊到全域性配置中 mapper註冊一個sql對映 resource:引用類路徑下的sql對映檔案 uri:引用網路或這磁碟路徑下的sql對映檔案 class:引用註冊(介面) 有sql對映檔名必須和介面同名,並放在同意目錄下 一般的mapper都放在mapper包裡面 假設在mybatis.mapper包裡面 則resource="mybatis/mapper/xxxx.xml 在mybatis-config.xml檔案的最底部<mappers> <mapper resource="EmployeeMapper.xml" /> </mappers>
此時此刻配置檔案差不多講到這裡要結束了
此時此刻,把本次博文是修改到的程式碼奉上,結合MyBatis(1)-簡單入門!
3.1)mybatis-config.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> <!-- 1.properties:可以使用properties來引入外部的properties配置檔案內容 屬性: resource:引用類路徑下的資源 url:引入網路或者磁碟路徑下的資源 db.properties在同一目錄下,所以可以直接寫處檔案的名字 假設db.properties在com.MrChengs.db目錄下 此時resource="com.MrChengs/db/db.properties" --> <properties resource="db.properties" ></properties> <!-- 2.settings設定 這是MyBatis中極為重要的調整設定,他會改變MyBatis的執行行為 用來設定每一個設定項的 name:設定項的名字 value:設定項的取值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> <!-- 3.typeAliases:別名處理器 --> <typeAliases> <!-- 為某個java型別起別名 type:指定起別名的全類名,預設就是類名小寫 可以用alias為起指定新的別名 我們此時給Employee起別名 --> <typeAlias type="com.MrChengs.bean.Employee" alias="emp"/> <!-- package:為某個包下的 所有類批量起別名 name:指定包名(為當前包以及下面所有的後代包的每一個類都起一個別名(預設類名小寫) --> <package name="com.MrChengs.bean"/> </typeAliases> <environments default="development"> <environment id="development"> <transactionManager type="JDBC" /> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.username}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!-- 5.databaseIdProvider 支援多資料庫的廠商的 type="DB_VENDOR"固定值,作用是得到資料庫廠商的標識來執行不同的SQL語句 --> <databaseIdProvider type="DB_VENDOR"> <!-- 為不同資料庫起別名 --> <property name="MySQL" value="mysql"/> </databaseIdProvider> <!-- 將我們寫好的sql對映檔案(EmployeeMapper.xml)一定要註冊到全域性配置檔案(mybatis-config.xml)中 --> <mappers> <mapper resource="EmployeeMapper.xml" /> </mappers> </configuration>
3.2)EmployeeMapper.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.MrChengs.dao.EmployeeMapper"> <!-- 原生 --> <select id="getId" resultType="com.MrChengs.bean.Employee"> select id,name,gender,email from test where id = #{id} </select> <!-- 介面式程式設計 --> <select id="getEmployee" resultType="empl" databaseId="mysql"> select id,name,gender,email from test where id = #{id} </select> </mapper>
本次博文到此結束,謝謝您的瀏覽,如果問題,請提出,博主及時修改。