一、SqlSession的使用範圍說明
1、SQLSessionFactoryBuilder
通過SqlSessionFactoryBuilder創建會話工廠SqlSessionFactory,將SqlSessionFactoryBuilder當成一個工具類使用即可,不需要使用單例模式管理,在創建SqlSessionFactory的時候,只需要new一次SqlSessionFactoryBuilder即可。
2、SqlSessionFactory
通過SqlSessionFactory創建SqlSession,使用單例模式來管理SqlSessionFactory(工廠一旦創建,只使用一個實例)。
3、SqlSession
SqlSession是一個面向用戶(程序員)的接口。
SqlSession中提供了很多操作數據庫的方法:如selectOne(返回單個對象)、selectList(返回單個或多個對象)。
SqlSession是線程不安全的,因爲在SqlSession中除了有接口中的方法(操作數據庫的方法)之外。還有數據域屬性。
SqlSession的最佳應用場合是在方法體內,將其定義爲局部變量來使用。
二、SqlMapConfig.xml配置文件詳解
1、Properties屬性
Properties屬性用來加載屬性配置文件。
<!-- 加載屬性文件 resource:屬性文件的相對路徑 url:屬性文件的絕對路徑 --> <properties resource="config/db.properties"> <!-- 配置一些屬性 name:屬性的名稱 value:屬性的值 --> <!--<property name="" value="" /> --> </properties>
properties特性:
Mybatis將按照下面的屬性來加載屬性:
1. 首先會讀取在property標籤中定義的屬性。
2. 然後會讀取在properties標籤中通過resource或url加載時的屬性,它會覆蓋已讀取得同名屬性。
3. 最後會讀取sql中parameterType傳遞過來的屬性,它會覆蓋已讀取的同名屬性。
2、settings全局參數配置
Mybatis框架在運行時可以調整一些運行參數,比如:開啓二級緩存、開啓延遲加載等。這些參數要通過settings標籤來配置,全局參數會影響Mybatis的運行行爲,配置一定要注意。
常用的全局配置參數如下:
<!--全局參數配置--> <settings > <!-- name:屬性名稱 value:屬性的值 --> <setting name="" value=""/> </settings>
3、typeAlia
在映射文件中的parameterType和resultType屬性中要指定輸入、輸出映射類型,如果類型爲PO,要指定PO類的全路徑這樣不是特別方便,可以使用typeAlias定義一些別名,來方便開發。
<!--定義別名--> <typeAliases> <!-- type:需要起別名的字符串 alias:對應的別名 --> <typeAlias type="" alias="" /> <!-- name:包名,會對包下面的類進行掃描,自動批量設置別名, 設置的別名爲類名,首字母大小寫均可 --> <package name="" /> </typeAliases> Mybatis的默認別名
4、typeHandlers(類型處理器)
Mybatis中通過typeHandlers完成jdbc類型和Java類型的裝換。通常情況下,Mybatis提供的類型處理器滿足日常需要,不需要我們再自定義。
<typeHandlers> <typeHandler handler="" jdbcType="" javaType="" /> </typeHandlers> Mybatis默認支持的數據類型
5、environments 環境
<!-- 環境配置 在和Spring整合後改配置將廢除 --> <environments default="development"> <environment id="development"> <!--使用JDBC的事務管理,事務管理交給Mybatis--> <transactionManager type="JDBC"></transactionManager> <!--數據庫連接池,有Mybatis管理--> <dataSource type="POOLED"> <property name="driver" value="com.mysql.jdbc.Driver" /> <property name="url" value="jdbc:mysql://localhost:3306/mybatis" /> <property name="username" value="root" /> <property name="password" value="root" /> </dataSource> </environment> </environments>
6、mapper 加載映射文件
加載映射文件有三種方式
1、加載單個映射文件
<!--引入mapper--> <mappers> <!--rerource:引入映射文件相對於classpath的地址--> <mapper resource="config/sqlmap/userMapper.xml" /> </mappers>
2、通過Mapper接口加載單個映射文件
前提條件:
(1). 使用Mapper代理的方式進行開發。
(2). Mapper接口文件名要和映射文件名一致
(3).Mapper接口文件和映射文件在同一個目錄下
<!--引入mapper--> <mappers> <mapper class="com.jack.po.UserMapper" /> </mappers>
3、批量記載映射文件
前提條件:
(1). 使用Mapper代理的方式進行開發。
(2). Mapper接口文件名要和映射文件名一致
(3).Mapper接口文件和映射文件在同一個目錄下
<!--引入mapper--> <mappers> <!--name:mapper接口文件所在的包路徑--> <package name="" /> </mappers>
本文來自上海尚學堂Java學員