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一样。