一、SqlSessionFactory介紹
SqlSessionFactory是MyBatis框架的重要組成部分,它是MyBatis的核心配置對象之一。SqlSessionFactory創建SqlSession對象的工廠,SqlSession是面向用戶的API,用於和數據庫交互。SqlSessionFactory需要在應用程序中創建一次,然後在整個應用程序生命周期中重複使用。創建SqlSessionFactory需要配置文件SqlMapConfig.xml和數據源信息。
二、SqlSessionFactory的創建
在MyBatis中,SqlSessionFactory可以通過多種方式進行創建,常用的方式是通過加載mybatis-config.xml配置文件的方式進行創建,具體操作如下:
String resource = "mybatis-config.xml"; InputStream inputStream = Resources.getResourceAsStream(resource); SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
以上代碼是使用MyBatis最基本的用法,通過SqlSessionFactoryBuilder和mybatis-config.xml配置文件創建SqlSessionFactory。在這個過程中,SqlSessionFactoryBuilder會解析mybatis-config.xml配置文件,並依據配置文件創建SqlSessionFactory。
三、SqlSessionFactory的配置
MyBatis的配置文件是一個XML文檔,用於對SqlSessionFactory進行詳細的配置。常用配置項如下:
3.1 數據源配置
MyBatis可以支持多種類型的數據源,例如JDBC、C3P0、DBCP等數據源,我們需要在配置文件中指定數據源類型,並設置相關參數。例如:
<dataSource type="POOLED"> <property name="driver" value="${jdbc.driverClass}"/> <property name="url" value="${jdbc.url}"/> <property name="username" value="${jdbc.username}"/> <property name="password" value="${jdbc.password}"/> </dataSource>
以上代碼中,type屬性表明了我們使用的數據源類型,可以是JDBC、C3P0、DBCP等。在dataSource節點下,我們需要通過property節點指定數據源的相關參數,例如數據庫驅動、數據庫URL、用戶名、密碼等。
3.2 Mapper配置
Mapper是MyBatis中關鍵的組成部分之一,可以將Mapper配置文件與接口進行綁定。例如:
<mapper class="com.test.TestMapper"> <resultMap id="TestResultMap" type="Test"> <id column="id" property="id"/> <result column="name" property="name"/> <result column="age" property="age"/> </resultMap> </mapper>
以上代碼中,我們關聯了Test實體類和TestMapper接口。通過resultMap節點,我們可以指定數據庫中列和Test實體類中屬性的映射關係。
3.3 其他配置項
MyBatis還支持多種其他配置項,例如緩存配置、插件配置、全局配置等。以下是一個全局配置示例:
<settings> <setting name="cacheEnabled" value="true"/> <setting name="lazyLoadingEnabled" value="true"/> <setting name="multipleResultSetsEnabled" value="true"/> <setting name="defaultExecutorType" value="SIMPLE"/> <setting name="defaultStatementTimeout" value="25000"/> <setting name="safeRowBoundsEnabled" value="false"/> <setting name="mapUnderscoreToCamelCase" value="false"/> <setting name="localCacheScope" value="SESSION"/> <setting name="jdbcTypeForNull" value="OTHER"/> <setting name="logImpl" value="STDOUT_LOGGING"/> </settings>
以上代碼中,我們設置了MyBatis的多個全局配置項,例如緩存開啟、lazy loading開啟、Statement執行超時時間等。
四、SqlSessionFactory的使用
在SqlSessionFactory創建成功後,我們可以通過它創建SqlSession對象,進行數據庫操縱操作。以下是SqlSession的基本操作示例:
SqlSession session = sqlSessionFactory.openSession(); try { TestMapper mapper = session.getMapper(TestMapper.class); Test test = mapper.selectByPrimaryKey(1); } finally { session.close(); }
以上代碼中,我們通過SqlSessionFactory創建了一個SqlSession對象。在try塊中,我們通過getMapper方法獲取了TestMapper接口的實現類,並使用它進行數據庫查詢。
五、總結
SqlSessionFactory是MyBatis的核心配置對象之一,用於創建SqlSession對象,並綁定相關配置信息。SqlSessionFactory需要在應用程序中創建一次,然後在整個應用程序生命周期中重複使用。創建SqlSessionFactory需要配置文件SqlMapConfig.xml和數據源信息。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/300816.html