第一章 认识Mybatis的核心组件

1、可以从http://www.softpedia.com/get/Programming/Other-Programming-Files/MyBatis.shtml下载mybatis的jar包。

2、mybatis的核心组件

mybatis是由4个部分构成,sqlsessionFactoryBuilder(构造器),他会根据配置或代码来生成sqlSessionFactory,采用的是分布构建的Builder模式。

SqlSessionFactory(工厂接口):依靠它来生成sqlsession,使用的是工厂模式。

    它有两个实现类,分别是SqlSessionManager和DefaultSqlSessionFactory。一般而言是由DefaultSqlSessionFactory实现的。SqlSessionManager使用在多线程的环境中,它的具体实现依靠DefaultSQLSessionFactory。

sqlsession(回话):一个既可以发送sql执行返回结果,也可以获取Mapper的接口。

SqlMapper:mybatis新设计存在的组件,它是由一个Java接口和xml文件构成,需要给出对应的sql和映射规则。它负责发送sql去执行,并返回结果。

3、使用xml构建sqlsessionfactory


PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">

    

           

    

       
        
            
            
                
                
                
                
            

        

    

    
        
     

然后可以通过一段代码生成sqlSessionfactory了。

SqlSessionFactory sqlsf = null;

String resource = "mybatis-config.xml";

InputStream inputstr;

try{

    inputstr = Resources.getResourceAsStream(resource);

    Sqlsf = new SqlSessionFactoryBuilder().build(inputstr);

} catch(IOException e){

    e.printStackTrace();

}

SqlSessionFactoryBuilder是通过xml文件创建一个sqlsessionfactory的一个实例。

4、SqlSession接口

实现类有两个:DefaultSqlSession和SqlSessionManager。后面的一个在多线程的环境下是使用的。

SqlSession类似jdbc中的connection对象,代表着链接资源的启用。有以下三个作用:

        获取Mapper接口。

        发送sql给数据库。

        控制数据库事物。

可以用下面的代码来获取mapper接口和管理事务:

SqlSession sqls = null;

try{

    sqls = SqlSessionFactory.openSession();

    //sql语句等处理和管理代码

     sqls.commit();


}catch(Exception ex){

    sqls.rollback();

}finally{

    if(sqls != null){

        sqls.close();

    }

}


5、映射器

mapper是最重要最复杂的组件,它是由一个接口和对应的xml文件组成,可以配置以下内容:

    描述映射规则

    提供sql语句,并可以配置sql参数模型,返回类型,缓存刷新信息等

    配置缓存

    提供动态的sql

实现映射器的方式有两种,xml配置和注解形式。先定义pojo如下:

public class     Role{

    private Long  id;

    private String name;

.....

set和get方法

}

xml定义映射器分为两个部分,接口和xml;

接口:

public interface RoleMapper{

    public Role getRole(long id);

}



PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">

    

注解实现:

public interface RoleMapper{

    @Select ("select * from t_role where id =#id"

    public Role getRole(Long id);

}


sqlsession 发送sql

 Role role = (Role)sqls.selectionOne("com.....getRole",1L);

用mapper接口发送sql:

RoleMapper rp = sqls.getMapper(RoleMapper.class);

Role role = rp.getRole(1L);


6、生命周期

(1)sqlsessionfactorybuilder的作用在于创建sqlsessionfactory,创建完成后就失去了作用。

(2)sqlsessionfactory是操作mybatis数据库的长期存在

(3)sqlsession是一个事物处理请求,当事物处理结束,也随之结束。

(4)mapper它的生命周期与sqlsession一样。




你可能感兴趣的:(第一章 认识Mybatis的核心组件)