MyBatis SqlSessionFactory的几种常见创建方式

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

  1. 定义一个Configuration对象,其中包含数据源、事务、mapper文件资源以及影响数据库行为属性设置settings
  2. 通过配置对象,则可以创建一个SqlSessionFactoryBuilder对象
  3. 通过 SqlSessionFactoryBuilder 获得SqlSessionFactory 的实例。
  4. SqlSessionFactory 的实例可以获得操作数据的SqlSession实例,通过这个实例对数据库进行操作
具体看看SqlSessionFactory的创建
一、通过Configuration.xml配置文件进行创建
  • [html] view plain copy
     
     print?
    1. <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"  
    2. "http://mybatis.org/dtd/mybatis-3-config.dtd">  
    3. <configuration>  
    4.     <properties resource="ssm/jdbc.properties"></properties>  
    5.     <environments default="development">  
    6.         <environment id="development">  
    7.             <transactionManager type="JDBC" />  
    8.             <dataSource type="POOLED">  
    9.                 <property name="driver" value="${jdbc.driverClassName}"/>  
    10.                 <property name="url" value="${jdbc.url}"/>  
    11.                 <property name="username" value="${jdbc.username}"/>  
    12.                 <property name="password" value="${jdbc.password}"/>  
    13.             </dataSource>  
    14.         </environment>  
    15.     </environments>     
    16.       
    17.     <mappers>  
    18.         <mapper resource="ssm/BlogMapper.xml"/>  
    19.     </mappers>  
    20. </configuration>  
  • 代码实现
  • [java] view plain copy
     
     print?
    1. package ssm;  
    2.   
    3. import java.io.IOException;  
    4. import java.io.Reader;  
    5.   
    6. import org.apache.ibatis.io.Resources;  
    7. import org.apache.ibatis.session.SqlSession;  
    8. import org.apache.ibatis.session.SqlSessionFactory;  
    9. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
    10.   
    11. import com.sm.model.User;  
    12.   
    13. public class GetSqlSessionFactoryFromXML {  
    14.   
    15.     public static void main(String[] args) throws IOException {  
    16.         //配置文件的名称  
    17.         String resource = "ssm/configuration.xml";  
    18.         //通过Mybatis包中的Resources对象很轻松的获取到配置文件  
    19.         Reader reader = Resources.getResourceAsReader(resource);  
    20.         //通过SqlSessionFactoryBuilder创建  
    21.         SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);  
    22.         //获得session实例  
    23.         SqlSession session =sqlSessionFactory.openSession();  
    24.         User user = new User();  
    25.         user.setId(8);  
    26.         //完成数据库的插入  
    27.         session.insert("add", user);  
    28.         session.commit();  
    29.         session.close();  
    30.         System.out.println(sqlSessionFactory);  
    31.     }  
    32. }  

 

 

二、在程序中构建这些对象来创建

  • 代码实现
  • [java] view plain copy
     
     print?
    1. package ssm;  
    2.   
    3. import java.sql.SQLException;  
    4.   
    5. import javax.sql.DataSource;  
    6.   
    7. import org.apache.ibatis.datasource.pooled.PooledDataSource;  
    8. import org.apache.ibatis.mapping.Environment;  
    9. import org.apache.ibatis.session.Configuration;  
    10. import org.apache.ibatis.session.SqlSession;  
    11. import org.apache.ibatis.session.SqlSessionFactory;  
    12. import org.apache.ibatis.session.SqlSessionFactoryBuilder;  
    13. import org.apache.ibatis.transaction.TransactionFactory;  
    14. import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;  
    15.   
    16. import com.sm.model.User;  
    17.   
    18. public class GetSqlSessionFactoryFromProgram {  
    19.   
    20.     public static void main(String[] args) throws SQLException {  
    21.         String driver = "oracle.jdbc.OracleDriver";  
    22.         String url = "jdbc:oracle:thin:@localhost:1521:orcl";  
    23.         String username="scott";  
    24.         String password="tiger";  
    25.         //创建使用缓存池的数据源  
    26.         /*  
    27.          * <dataSource type="POOLED"> 
    28.                 <property name="driver" value="${jdbc.driverClassName}"/> 
    29.                 <property name="url" value="${jdbc.url}"/> 
    30.                 <property name="username" value="${jdbc.username}"/> 
    31.                 <property name="password" value="${jdbc.password}"/> 
    32.             </dataSource> 
    33.          */  
    34.         DataSource dataSource =new PooledDataSource(driver,url,username,password);  
    35.           
    36.         //创建事务  
    37.         /* 
    38.          * <transactionManager type="JDBC" /> 
    39.          */  
    40.         TransactionFactory transactionFactory =  new JdbcTransactionFactory();  
    41.           
    42.         Environment environment = new Environment("development", transactionFactory, dataSource);  
    43.           
    44.         Configuration configuration = new Configuration(environment);  
    45.         //加入资源  
    46.         /* 
    47.          * <mapper resource="ssm/BlogMapper.xml"/> 
    48.          */  
    49.         configuration.addMapper(UserMapper.class);  
    50.         SqlSessionFactory sqlSessionFactory = new  SqlSessionFactoryBuilder().build(configuration);  
    51.         System.out.println(sqlSessionFactory);  
    52.           
    53.         SqlSession session =  sqlSessionFactory.openSession();  
    54.         User user = new User();  
    55.         user.setId(6);  
    56.         session.insert("add", user);  
    57.         session.commit();  
    58.         session.close();  
    59.     }  
    60. }  
三、通过与Spring集成,由Spring容器管理创建
  • 在spring的配置文件applicationContext.xml中配置
  • [html] view plain copy
     
     print?
    1. <bean id="sessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
    2.        <property name="dataSource" ref="dataSource" />  
    3.        <property name="configLocation" value="classpath*:conf/configuration.xml" />  
    4.       
    5. </bean>  
    如果使用则直接注入,获取SqlSessionFactory实例即可。

posted on 2017-07-07 17:52  alex5211314  阅读(204)  评论(0编辑  收藏  举报

导航