Mybatis配置数据源

Mybatis数据源配置简介

Mybatis可以配置成适应多种环境,这种机制有助于将SQL映射应用于多种数据库之中。例如:开发,测试和生产环境需要不同的配置,或者共享相同的Schema的多个数据库,想使用相同的sql映射。如果想连接两个数据库,就需要创建两个SQlSessionFactory实例,每个数据库对应一个。而如果是三个数据库,就需要三个实例,以此类推。注意:可以配置多个环境,每个 SqlSessionFactory 实例只能选择其一,即每个数据库对应一个SqlSessionFactory实例

【配置示例】

环境元素配置环境:



           
           
             
               
               
               
                   
                   
                   
                   
                   
               
          
   

MyBatisTest类中测试配置信息:

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

public class MyBatisTest {

    public static void main(String[] args) throws IOException {
        String resource = "mybatis-config.xml";
        InputStream inputStream =
                Resources.getResourceAsStream(resource);
        SqlSessionFactory sqlSessionFactory = 
                new SqlSessionFactoryBuilder().build(inputStream);
        System.out.println("sqlSessionFactory:"+sqlSessionFactory);
    }
}

【配置参数介绍】

1. 事务管理器

事务管理器有两种:type="[ JDBC | MANAGED ]"

Mybatis配置数据源_第1张图片
  • JDBC:这个配置就是直接使用了JDBC 的提交和回滚设置,它依赖于从数据源得到的连接来管理事务范围。
  • MANAGED:种机制MyBatis自身不会去实现事务管理,而是让程序的容器如(JBOSS,Weblogic)来实现对事务的管理。

2. 数据源
  mybatis有三种内建的数据源类型:type=[ UNPOOLED | POOLED | JNDI ]

  • UNPOOLED:这个数据源的实现只是每次请求时打开和关闭连接。
  • POOLED:这种数据源的实现利用“池”的概念将JDBC连接对象组织起来,避免了创建先的连接实例时所必须的初始化和认证时间。这是一种使得并发WEb应用快速响应请求的流行的处理方式。
  • JDNI: 这个数据源的实现是为了能在如EJB或应用服务器这类容器中使用,容器可以集中在外部配置数据源,然后放置一个JDNI上下文的引用。

Spring+Mybatis数据源配置

application.xml配置:

 
     
     
     
     




      
      




      

EmpMapper:

  




    
        
        
        
        
        
        
        
    

    
    

  

EmpDao:

@Repository
public class EmployeeDao {

    @Resource
    public SqlSession sqlSession;

    public Integer addEmp(Map map){
        return sqlSession.insert("mapper.EmpMapper.addEmp", map);
    }

    public Employee findUserByEmpno(Integer empNo){
        Employee e = sqlSession.selectOne("mapper.EmpMapper.findUserByEmpno",empNo);
        return e;
    }
}

你可能感兴趣的:(Mybatis配置数据源)