MyBatis SqlSessionFactory的几种常见创建方式

2 篇文章 0 订阅
2 篇文章 0 订阅

MyBatis框架主要是围绕着SqlSessionFactory这个类进行的,这个的创建过程如下:

  1. 定义一个Configuration对象,其中包含数据源、事务、mapper文件资源以及影响数据库行为属性设置settings
  2. 通过配置对象,则可以创建一个SqlSessionFactoryBuilder对象
  3. 通过 SqlSessionFactoryBuilder 获得SqlSessionFactory 的实例
  4. SqlSessionFactory 的实例可以获得操作数据的SqlSession实例,通过这个实例对数据库进行操作
具体看看SqlSessionFactory的创建
一、通过Configuration.xml配置文件进行创建
  • <!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>
  • 代码实现
  • 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容器管理创建
  • 在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实例即可。


  • 1
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值