tools.service.MybatisService Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of java-autotest-tool Show documentation
Show all versions of java-autotest-tool Show documentation
This is an integration of autotest tools
package tools.service;
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 org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.io.InputStream;
public class MybatisService {
private static final Logger LOGGER = LoggerFactory.getLogger(MybatisService.class);
private SqlSession sqlSession;
public MybatisService(){
}
public SqlSession getSqlSession() {
return sqlSession;
}
public void setSqlSession(SqlSession sqlSession) {
this.sqlSession = sqlSession;
}
public T initSqlSessionMapper(Class mapperClass) throws IOException {
// 定义配置文件,相对路径,文件直接放在resources目录下
String resource = "framework-mybatis-config.xml";
// 读取文件字节流
InputStream inputStream = Resources.getResourceAsStream(resource);
// mybatis 读取字节流,利用XMLConfigBuilder类解析文件
// 将xml文件解析成一个 org.apache.ibatis.session.Configuration 对象
// 然后将 Configuration 对象交给 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory 管理
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// openSession 有多个重载方法, 比较重要几个是
// 1 是否默认提交 SqlSession openSession(boolean autoCommit)
// 2 设置事务级别 SqlSession openSession(TransactionIsolationLevel level)
// 3 执行器类型 SqlSession openSession(ExecutorType execType)
sqlSession = sqlSessionFactory.openSession();
// mybatis 内部其实已经解析好了 mapper 和 mapping 对应关系,放在一个map中,这里可以直接获取
// 如果看源码可以发现Mapper对象 其实是一个代理类MapperProxy,
// 通过 sqlSession、mapperInterface、mechodCache三个参数构造的
// MapperProxyFactory 类中 newInstance(MapperProxy mapperProxy)方法
return sqlSession.getMapper(mapperClass);
}
public T initSqlSessionMapper(Class mapperClass, boolean autoCommitFlag) throws IOException {
// 定义配置文件,相对路径,文件直接放在resources目录下
String resource = "framework-mybatis-config.xml";
// 读取文件字节流
InputStream inputStream = Resources.getResourceAsStream(resource);
// mybatis 读取字节流,利用XMLConfigBuilder类解析文件
// 将xml文件解析成一个 org.apache.ibatis.session.Configuration 对象
// 然后将 Configuration 对象交给 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory 管理
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// openSession 有多个重载方法, 比较重要几个是
// 1 是否默认提交 SqlSession openSession(boolean autoCommit)
// 2 设置事务级别 SqlSession openSession(TransactionIsolationLevel level)
// 3 执行器类型 SqlSession openSession(ExecutorType execType)
sqlSession = sqlSessionFactory.openSession(autoCommitFlag);
// mybatis 内部其实已经解析好了 mapper 和 mapping 对应关系,放在一个map中,这里可以直接获取
// 如果看源码可以发现Mapper对象 其实是一个代理类MapperProxy,
// 通过 sqlSession、mapperInterface、mechodCache三个参数构造的
// MapperProxyFactory 类中 newInstance(MapperProxy mapperProxy)方法
return sqlSession.getMapper(mapperClass);
}
public T initSqlSessionMapper(Class mapperClass, boolean autoCommitFlag, String environment) throws IOException {
// 定义配置文件,相对路径,文件直接放在resources目录下
String resource = "framework-mybatis-config.xml";
// 读取文件字节流
InputStream inputStream = Resources.getResourceAsStream(resource);
// mybatis 读取字节流,利用XMLConfigBuilder类解析文件
// 将xml文件解析成一个 org.apache.ibatis.session.Configuration 对象
// 然后将 Configuration 对象交给 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory 管理
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, environment);
// openSession 有多个重载方法, 比较重要几个是
// 1 是否默认提交 SqlSession openSession(boolean autoCommit)
// 2 设置事务级别 SqlSession openSession(TransactionIsolationLevel level)
// 3 执行器类型 SqlSession openSession(ExecutorType execType)
sqlSession = sqlSessionFactory.openSession(autoCommitFlag);
// mybatis 内部其实已经解析好了 mapper 和 mapping 对应关系,放在一个map中,这里可以直接获取
// 如果看源码可以发现Mapper对象 其实是一个代理类MapperProxy,
// 通过 sqlSession、mapperInterface、mechodCache三个参数构造的
// MapperProxyFactory 类中 newInstance(MapperProxy mapperProxy)方法
return sqlSession.getMapper(mapperClass);
}
public T initSqlSessionMapper(String resourceFileName, Class mapperClass, boolean autoCommitFlag) throws IOException {
// 定义配置文件,相对路径,文件直接放在resources目录下
String resource = resourceFileName;
// 读取文件字节流
InputStream inputStream = Resources.getResourceAsStream(resource);
// mybatis 读取字节流,利用XMLConfigBuilder类解析文件
// 将xml文件解析成一个 org.apache.ibatis.session.Configuration 对象
// 然后将 Configuration 对象交给 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory 管理
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
// openSession 有多个重载方法, 比较重要几个是
// 1 是否默认提交 SqlSession openSession(boolean autoCommit)
// 2 设置事务级别 SqlSession openSession(TransactionIsolationLevel level)
// 3 执行器类型 SqlSession openSession(ExecutorType execType)
sqlSession = sqlSessionFactory.openSession(autoCommitFlag);
// mybatis 内部其实已经解析好了 mapper 和 mapping 对应关系,放在一个map中,这里可以直接获取
// 如果看源码可以发现Mapper对象 其实是一个代理类MapperProxy,
// 通过 sqlSession、mapperInterface、mechodCache三个参数构造的
// MapperProxyFactory 类中 newInstance(MapperProxy mapperProxy)方法
return sqlSession.getMapper(mapperClass);
}
public T initSqlSessionMapper(String resourceFileName, Class mapperClass, boolean autoCommitFlag, String environment) throws IOException {
// 定义配置文件,相对路径,文件直接放在resources目录下
String resource = resourceFileName;
// 读取文件字节流
InputStream inputStream = Resources.getResourceAsStream(resource);
// mybatis 读取字节流,利用XMLConfigBuilder类解析文件
// 将xml文件解析成一个 org.apache.ibatis.session.Configuration 对象
// 然后将 Configuration 对象交给 SqlSessionFactory 接口实现类 DefaultSqlSessionFactory 管理
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream, environment);
// openSession 有多个重载方法, 比较重要几个是
// 1 是否默认提交 SqlSession openSession(boolean autoCommit)
// 2 设置事务级别 SqlSession openSession(TransactionIsolationLevel level)
// 3 执行器类型 SqlSession openSession(ExecutorType execType)
sqlSession = sqlSessionFactory.openSession(autoCommitFlag);
// mybatis 内部其实已经解析好了 mapper 和 mapping 对应关系,放在一个map中,这里可以直接获取
// 如果看源码可以发现Mapper对象 其实是一个代理类MapperProxy,
// 通过 sqlSession、mapperInterface、mechodCache三个参数构造的
// MapperProxyFactory 类中 newInstance(MapperProxy mapperProxy)方法
return sqlSession.getMapper(mapperClass);
}
}