mybatis學習(四)——config全局配置文件解析
阿新 • • 發佈:2017-10-16
handlers man wrapper 包含 執行 eal 當前 source 批量
在全集配置文件中引入dtd約束“http://mybatis.org/dtd/mybatis-3-config.dtd”,主要有以下幾個標簽,現在詳細解釋下這幾個標簽的使用
1、properties屬性----引入外部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> <!--1、mybatis使用properties來引入外部properties配置文件的內容 resource 引入類路徑下資源 url 引入網絡路徑或磁盤路徑下資源 --> <properties resource="db.properties"></properties> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
db.properties文件
jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/spring_mybatis jdbc.name=root jdbc.password=tuniu520
相當有之前寫的,這裏的jdbc連接信息寫在datasource中的property屬性下,沒有引入外部配置文件
<?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://localhost:3306/spring_mybatis" /> <property name="username" value="root" /> <property name="password" value="tuniu520" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
2、settings 運行時行為設置
可查看mybatis文檔,settings有很多配置項,如
這裏試驗下mapUnderscoreToCamelCase,可以自動完成hotelName到數據庫中字段hotel_name的轉換
<?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、mybatis使用properties來引入外部properties配置文件的內容 resource 引入類路徑下資源 url 引入網絡路徑或磁盤路徑下資源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的設置項 setting標識具體的設置項 name表示設置項的名字 value表示設置項的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
之前寫的sql語句可以直接修改成
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel"> select id,hotel_name as hotelName, hotel_address as hotelAddress, price from hotel where id=#{id} </select>
修改為
<select id="getHotel" resultType="com.pjf.mybatis.po.Hotel"> select * from hotel where id=#{id} </select>
mybatis會自動完成駝峰轉換
3、typeAliases別名配置
查看代碼中3的註解
<?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、mybatis使用properties來引入外部properties配置文件的內容 resource 引入類路徑下資源 url 引入網絡路徑或磁盤路徑下資源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的設置項 setting標識具體的設置項 name表示設置項的名字 value表示設置項的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <!-- 3、typeAliases 為java類型起別名,別名不區分大小寫 typeAlias 為某個具體的java類型取別名 type java類的全類名,默認別名就是類名小寫 alias 自定義別名 --> <typeAliases> <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" /> <!-- package為某個包下面所有類批量起別名 name 表示包的名稱 默認別名為類名小寫
這裏重復配置了Hotel類,復制的時候註掉一種配置--> <package name="com.pjf.mybatis.po" /> </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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
已經為許多常見的 Java 類型內建了相應的類型別名。它們都是大小寫不敏感的,需要註意的是由基本類型名稱重復導致的特殊處理,8種基本數據類型類型別名是下劃線加數據類型。
4、typeHandlers 類型處理器
將java中的類型和數據庫中的類型進行映射
<!-- typeHandlers 類型處理器 mybatis3.4之後,這些類型處理器都是自動註冊的 --> <typeHandlers> <typeHandler handler="BooleanTypeHandler"/> </typeHandlers>
可以填寫以下處理器
5、environments環境配置
<?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、mybatis使用properties來引入外部properties配置文件的內容 resource 引入類路徑下資源 url 引入網絡路徑或磁盤路徑下資源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的設置項 setting標識具體的設置項 name表示設置項的名字 value表示設置項的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <!-- 3、typeAliases 為java類型起別名,別名不區分大小寫 typeAlias 為某個具體的java類型取別名 type java類的全類名,默認別名就是類名小寫 alias 自定義別名 --> <typeAliases> <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" /> <!-- package為某個包下面所有類批量起別名 name 表示包的名稱 默認別名為類名小寫 <package name="com.pjf.mybatis.po" /> --> </typeAliases> <!-- 4、typeHandlers 類型處理器--> <typeHandlers> <typeHandler handler=""/> </typeHandlers> <!-- 5、environments環境配置,可以配置多種環境 default指定使用某種環境,可以達到快速切換 environment配置一個具體的環境信息,必須有如下兩個標簽,id表示當前環境的唯一標識 transactionManager 事物管理器 type 事物管理器的類型 有兩種取值 JDBC managed dataSource 數據源 type 有三種[UNPOOLED|POOLED|JNDI] --> <environments default="development"> <environment id="test"> <transactionManager type="JDBC" /> <!-- 配置數據庫連接信息 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> </mappers> </configuration>
6、mappers sql映射文件註冊
<?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、mybatis使用properties來引入外部properties配置文件的內容 resource 引入類路徑下資源 url 引入網絡路徑或磁盤路徑下資源 --> <properties resource="db.properties"></properties> <!-- 2、settings包含很多重要的設置項 setting標識具體的設置項 name表示設置項的名字 value表示設置項的值 --> <settings> <setting name="mapUnderscoreToCamelCase" value="true" /> </settings> <!-- 3、typeAliases 為java類型起別名,別名不區分大小寫 typeAlias 為某個具體的java類型取別名 type java類的全類名,默認別名就是類名小寫 alias 自定義別名 --> <typeAliases> <typeAlias type="com.pjf.mybatis.po.Hotel" alias="hotel" /> <!-- package為某個包下面所有類批量起別名 name 表示包的名稱 默認別名為類名小寫 <package name="com.pjf.mybatis.po" /> --> </typeAliases> <!-- 4、typeHandlers 類型處理器--> <typeHandlers> <typeHandler handler=""/> </typeHandlers> <!-- 5、environments環境配置,可以配置多種環境 default指定使用某種環境,可以達到快速切換 environment配置一個具體的環境信息,必須有如下兩個標簽,id表示當前環境的唯一標識 transactionManager 事物管理器 type 事物管理器的類型 有兩種取值 JDBC managed dataSource 數據源 type 有三種[UNPOOLED|POOLED|JNDI] --> <environments default="development"> <environment id="test"> <transactionManager type="JDBC" /> <!-- 配置數據庫連接信息 --> <dataSource type="POOLED"> <property name="driver" value="${jdbc.driver}" /> <property name="url" value="${jdbc.url}" /> <property name="username" value="${jdbc.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> <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.name}" /> <property name="password" value="${jdbc.password}" /> </dataSource> </environment> </environments> <!--6、 mappers將sql映射註冊到全局配置文件中 mapper註冊一個sql映射 1、註冊配置文件 resource引用類路徑下文件 url 引用網絡上或磁盤路徑下文件 2、註冊mapper接口 class 有映射文件,接口和映射文件必須同名,而且放在同一個路徑裏 如果沒有映射文件,sql語句使用註解的方式,就需要註冊接口了 3、package批量註冊 使用批量註冊, 接口和映射文件必須同名,而且放在同一個路徑裏 --> <mappers> <mapper resource="com/pjf/mybatis/mapper/hotelMapper.xml"></mapper> <mapper class=""/> <package name="com.pjf.mybatis.po"/> </mappers> </configuration>
7、databaseIdProvider多數據庫支持
MyBatis 可以根據不同的數據庫廠商執行不同的語句,這種多廠商的支持是基於映射語句中的 databaseId 屬性。 MyBatis 會加載不帶 databaseId 屬性和帶有匹配當前數據庫 databaseId 屬性的所有語句。 如果同時找到帶有 databaseId 和不帶 databaseId 的相同語句,則後者會被舍棄。
<databaseIdProvider type="DB_VENDOR"></databaseIdProvider>
8、plugins 插件
MyBatis 允許你在已映射語句執行過程中的某一點進行攔截調用。
<plugins> <plugin interceptor=""></plugin> </plugins>
註:這些標簽編寫是有先後順序的,可以吧鼠標放在configuration上,就可以看到順序了
(properties?, settings?, typeAliases?, typeHandlers?, objectFactory?, objectWrapperFactory?, reflectorFactory?, plugins?, environments?, databaseIdProvider?, mappers?)
mybatis學習(四)——config全局配置文件解析