All Downloads are FREE. Search and download functionalities are using the official Maven repository.

tools.service.MybatisService Maven / Gradle / Ivy

There is a newer version: 0.2.2
Show newest version
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);
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy