1. mybatis基本配置詳解
中間步驟自行設置
Mysql驅動版本根據自己安裝的MySQL選擇
我把AppTest改成了MybatisTest,不該也無妨;
其中Student類暫時只設置四個欄位:
mapper介面暫時為空
在resources目錄下新建File命名為db.peoperties,配置如下內容:
提示:以上配置適用於MySQL8.X版本,5.X版本按照如下配置:
1、transactionManager:事務管理器;
type 事務管理類型:
JDBC(JdbcTransactionFactory);
MANAGED(ManagedTransactionFactory)
自定義事務管理器:實現TransactionFactory介面.type指定為全類名
2、dataSource:數據源;
type :數據源類型;
UNPOOLED(UnpooledDataSourceFactory); POOLED(PooledDataSourceFactory);
JNDI(JndiDataSourceFactory)
自定義數據源:實現DataSourceFactory介面,type是全類名
<mapper>:注冊一個sql映射文件
1、注冊映射文件
resource:引用類路徑下的sql映射文件
mybatis/StudentMapperpper.xml
url:引用網路路徑或者磁碟路徑下的sql映射文件
file:///var/mappers/AuthorMapper.xml
2、注冊介面
class:引用(注冊)介面,
① 有sql映射文件,映射文件名必須和介面同名,並且放在與介面同一目錄下;
② 沒有sql映射文件,所有的sql都是利用註解寫在介面上;
推薦:
比較重要的,復雜的Dao介面我們來寫sql映射文件
不重要,簡單的Dao介面為了開發快速可以使用註解;
批量注冊
需要在資源路徑下(resources)建立和一樣的文件目錄來存放想xml映射文件,如:com.example.StudentMapperpper.xml
StudentMapper
在resources的mybatis目錄下新建文件夾mapper,新建xml文件StudentMapper.xml
namespace :名稱空間;指定為介面的全類名
id :唯一標識
resultType :返回值類型
#{id} :從傳遞過來的參數中取出id值
resources目錄(MajorMapper.xml暫時不用創建)如下:
2. 怎麼讀取mybatis的配置文件路徑
Mybatis
分多個配置文件方法,考慮一個項目會很多模塊,如果團體開發的話用不同模塊在不同的配置文件可以這樣實現:
標簽裡面只能放SQL映射文件
Mybatis配置文件
XML
code
Spring裡面的配置文件
XML
code
3. mybatis中xml映射和方法註解兩種配置sql語句的方式是否可以同時存在
不能進行同時設置。執行會找不到介面的mapper代理工廠。mybatis會先解析xml文件,將解析後的sql封裝在mapperstament中並放進Configuration的mappedStatements中,將命名空間和方法名(也就是id)作為key,mappedStatements是個自定義map。然後生成介面的代理工程,生產代理工廠後會解析註解,解析完註解,也會生成mapperstament,也會往統一的Configuration大對象裡面放,但是放的時候自定義map會先判斷是否存在,此時已經存在了,存在就會拋出IllegalArgumentException(name + " already contains value for " + key)。但是創建代理工廠的時候把異常吃掉了,所以載入的時候不會報錯,但是不會給介面生成代理工廠。沒有代理工廠,介面就沒有實現類去操作。