MyBatis SqlSessionFactory的幾種常見創建方式


原文鏈接:https://blog.csdn.net/jimolangge123/article/details/49228255

MyBatis框架主要是圍繞着SqlSessionFactory這個類進行的,這個的創建過程如下:

  1. 定義一個Configuration對象,其中包含數據源、事務、mapper文件資源以及影響數據庫行為屬性設置settings
  2. 通過配置對象,則可以創建一個SqlSessionFactoryBuilder對象
  3. 通過 SqlSessionFactoryBuilder 獲得SqlSessionFactory 的實例。
  4. SqlSessionFactory 的實例可以獲得操作數據的SqlSession實例,通過這個實例對數據庫進行操作
具體看看SqlSessionFactory的創建
一、通過Configuration.xml配置文件進行創建
  1.配置文件:
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
	<properties resource="ssm/jdbc.properties"></properties>
	<environments default="development">
		<environment id="development">
			<transactionManager type="JDBC" />
			<dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		</environment>
	</environments>	
	
	<mappers>
		<mapper resource="ssm/BlogMapper.xml"/>
	</mappers>
</configuration>

2.讀取配置文件:

package ssm;

import java.io.IOException;
import java.io.Reader;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;

import com.sm.model.User;

public class GetSqlSessionFactoryFromXML {

	public static void main(String[] args) throws IOException {
		//配置文件的名稱
		String resource = "ssm/configuration.xml";
		//通過Mybatis包中的Resources對象很輕松的獲取到配置文件
		Reader reader = Resources.getResourceAsReader(resource);
		//通過SqlSessionFactoryBuilder創建
		SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
		//獲得session實例
		SqlSession session =sqlSessionFactory.openSession();
		User user = new User();
		user.setId(8);
		//完成數據庫的插入
		session.insert("add", user);
		session.commit();
		session.close();
		System.out.println(sqlSessionFactory);
	}
}

二、在程序中構建這些對象來創建

 

package ssm;

import java.sql.SQLException;
import javax.sql.DataSource;
import org.apache.ibatis.datasource.pooled.PooledDataSource;
import org.apache.ibatis.mapping.Environment;
import org.apache.ibatis.session.Configuration;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.apache.ibatis.transaction.TransactionFactory;
import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
import com.sm.model.User;

public class GetSqlSessionFactoryFromProgram {

	public static void main(String[] args) throws SQLException {
		String driver = "oracle.jdbc.OracleDriver";
		String url = "jdbc:oracle:thin:@localhost:1521:orcl";
		String username="scott";
		String password="tiger";
		//創建使用緩存池的數據源
		/* 
		 * <dataSource type="POOLED">
				<property name="driver" value="${jdbc.driverClassName}"/>
				<property name="url" value="${jdbc.url}"/>
				<property name="username" value="${jdbc.username}"/>
				<property name="password" value="${jdbc.password}"/>
			</dataSource>
		 */
		DataSource dataSource =new PooledDataSource(driver,url,username,password);
		
		//創建事務
		/*
		 * <transactionManager type="JDBC" />
		 */
		TransactionFactory transactionFactory =  new JdbcTransactionFactory();
		
		Environment environment = new Environment("development", transactionFactory, dataSource);
		
		Configuration configuration = new Configuration(environment);
		//加入資源
		/*
		 * <mapper resource="ssm/BlogMapper.xml"/>
		 */
		configuration.addMapper(UserMapper.class);
		SqlSessionFactory sqlSessionFactory = new  SqlSessionFactoryBuilder().build(configuration);
		System.out.println(sqlSessionFactory);
		
		SqlSession session =  sqlSessionFactory.openSession();
		User user = new User();
		user.setId(6);
 		session.insert("add", user);
 		session.commit();
		session.close();
	}
}

 

三、通過與Spring集成,由Spring容器管理創建

 

 1. 在spring的配置文件applicationContext.xml中配置

 

<bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
       <property name="dataSource" ref="dataSource" />
       <property name="configLocation" value="classpath*:conf/configuration.xml"/>
	
</bean>

 

如果使用則直接注入,獲取SqlSessionFactory實例即可。

 


免責聲明!

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



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