mybatis的mybatis-config.xml的配置問題【轉】


在mybatis-config.xml中有九個屬性,但是在這只談到了六個,剩下的三個詳見http://www.mybatis.org/mybatis-3/zh/getting-started.html

<?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文件,例如把連接數據庫的配置信息單獨放在一個properties中
resource:引入類路徑下的資源
url:引入網絡路徑或者本地磁盤的資源
-->
<properties resource="dbconfig.properties"></properties>
<!--
2.settings:包含很多的重要設置
setting:用來設置每一個設置項
name:設置項名
value:設置項值
例如:mapUnderscoreToCamelCase 默認為false 這個的作用是駝峰命名轉換,l_name -> lName
-->
<settings>
<!--開啟駝峰命名-->
<setting name="mapUnderscoreToCamelCase" value="true"/>
<setting name="jdbcTypeForNull" value="NULL"></setting>
<setting name="lazyLoadingEnabled" value="true"></setting>
<setting name="aggressiveLazyLoading" value="false"></setting>
<!--開啟二級緩存-->
<setting name="cacheEnabled" value="true"></setting>
</settings>
<!--
3.typeAliases:起別名的標簽
typeAlias:為某個java類型起別名
type:指定要起別名的全類名,默認別名就是類小寫,(但是其實他是不區分大小寫的,也就是說你全部大寫也沒問題)
alias:新的別名
package:為某個包下的類批量起別名(這個會存在的一個問題就是可能會重復,重復的情況下還可以用@Alias來解決)
name:指定包名(這個就相當於是為這個包下的所有的類都創建了一個默認的別名)
當然還有一個起別名的方式就是在實體上使用@Alias來起別名
注:起別名看自己的情況,推薦還是在mapper文件中使用全類名
-->
<typeAliases>
<typeAlias type="com.wj.mybatis.bean.Employee" alias="emp"></typeAlias>
<package name="com.wj.mybatis.bean"></package>
</typeAliases>
<!--
4.environments:配置mybatis的多種環境,default指定使用某種環境。可以達到快速切換的目的
environment:配置一個具體的環境信息,他必須要配置transactionManager和dataSource這兩個子標簽,id代表當前環境的唯一標識
transactionManager:事務管理器 type是具體事物的別名 有兩個值:JDBC(JdbcTransactionFactory)|MANAGED(ManagedTransactionFactory)
當然我們還可以自定義事物:需要我們實現TransactionFactory接口 type指定為全類名
dataSource:數據源 type:數據源類型 有三個值:UNPOOLED(UnpooledDataSourceFactory)
|POOLED(PooledDataSourceFactory)
|JNDI(JndiDataSourceFactory)
當然我們還可以自定義數據源 使用之前接觸過的c3p0,dbcp什么的,這需要我們實現DataSourceFactory type指向全類名
但是這部分的內容一般來說並不會使用mybatis的配置,一般都是在spring中配置
-->
<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>

<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.username}" />
<property name="password" value="${jdbc.password}" />
</dataSource>
</environment>
</environments>
<!--
5.databaseIdProvider:用來支持多數據庫廠商
type="DB_VENDOR":VendorDatabaseIdProvider
作用就是得到數據庫廠商的標識 getDatabaseProductName()
name是數據庫廠商的標識,value使我們給他取的值
-->
<databaseIdProvider type="DB_VENDOR">
<property name="MySQL" value="mysql"></property>
<property name="Oracle" value="oracle"></property>
</databaseIdProvider>
<!-- 將我們寫好的sql映MapperEmployee.xml)一定要注冊到全局配置文件(mybatis-config.xml)中 -->
<!--
6.mappers:注冊一個sql映射
mapper
有三種注冊方式:resource url class
其中resource url是以配置文件的方式來注冊 class是以接口的方式
resource:引用類路徑下的sql映射文件
<mapper resource="org/mybatis/builder/AuthorMapper.xml"/>
url:引用網絡路徑或者本地磁盤路徑下的映射文件
<mapper url="file:///var/mappers/PostMapper.xml"/>
class 有兩種方式
1.有sql映射文件時,這個文件xml文件要和接口同名且放在一起(在idea開發環境會遇到問題,就是加載不到MapperEmployee.xml
解決方案是在pom中加入build標簽的內容)
2.沒有映射文件而使用注解的方式(@Select @Delete @Insert @Update),這個和spring data jpa類似。只不過要多加一步,將他的全限定名配置在class中
注:在這里就有個問題,如果sql語句都用注解的方式,我們會不好管理,所以推薦的用法是不重要的用注解,比較重要的
還是配置到映射文件中來統一管理。
以上這三類都是一個一個注冊,還有一種批量注冊的方式
package name是包名 但是批量注冊要注意一個問題就是,在這個包下使用了注解方式的沒有問題,沒使用注解方式的我們就是
用到class方式第一種的方式,將sql的映射文件和接口放在一起
-->
<mappers>
<!--使用注解的方式-->
<mapper class="com.wj.mybatis.dao.MapperEmployeeAnnotation"/>
<package name="com.wj.mybatis.dao"></package>
<!--<mapper class="com.wj.mybatis.dao.MapperEmployee"></mapper>-->
</mappers>
</configuration>

 


---------------------
作者:xiao_____wu
來源:CSDN
原文:https://blog.csdn.net/xiao_____wu/article/details/81503203
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM