Mybatis构成组件

2019-01-10  本文已影响0人  lv_shun

基本构成

Mybatis 的构成.png

构建SqlSessionFactory

mybatis的应用都是以SqlSesionFactory实例为中心.SqlSessionFactory是一个工厂接口,通过SqlSessionFactoryBuider创建.任务是创建SqlSession.SqlSession相当于JDBC的Connection对象.Mybatis提供两种SqlSessionFactory实现类:DefaultSqlSessionFactory和SqlSessionManager,不过SqlSessionManager目前没有使用.


SqlSessionFactory关系图.png

其中的Configuration全限定名为org.apache.ibatis.session.Configuration.以单例形式存在于内存中,作用保存mybatis的配置信息,存在于mybatis整个生命周期中,可重复读取.

构建SqlSessionFactory有两种方式:xml方式和代码方式.

xml方式构建

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <!--定义别名-->
    <typeAliases>
        <typeAlias type="test" alias="test"/>
    </typeAliases>
    <!--多环境配置 默认development环境-->
    <environments default="development">
        <environment id="development">
            <!--事务管理类型-->
            <transactionManager type="JDBC"/>
            <!--数据源配置-->
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/mybatis"/>
                <property name="username" value="root"/>
                <property name="password" value="123456"/>
            </dataSource>
        </environment>
    </environments>
    <!--映射器-->
    <mappers>
        <mapper resource="test"/>
    </mappers>
</configuration>

使用配置:

String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsSteam(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);

代码方式构建

   public SqlSessionFactory sqlSessionFactory() throws Exception {
        //数据源对象
        PooledDataSource dataSource = new PooledDataSource();
        dataSource.setDriver("com.mysql.jdbc.Driver");
        dataSource.setUrl("jdbc:mysql://localhost:3306/mybatis");
        dataSource.setUsername("root");
        dataSource.setPassword("123456");
        //构建数据库食物方式
        JdbcTransactionFactory transactionFactory = new JdbcTransactionFactory();
        //创建数据库运行环境
        Environment environment = new Environment("development",transactionFactory,dataSource);
        org.apache.ibatis.session.Configuration configuration = new org.apache.ibatis.session.Configuration(environment);
        //注册mybatis上下文别名 就是以后在上下文中使用test代替User类
        configuration.getTypeAliasRegistry().registerAlias("test", User.class);
        //设置映射器
        configuration.addMapper(UserMapper.class);
        SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(configuration);

        return sqlSessionFactory;
    }

创建SqlSession

SqlSession是一个接口,对应两种实现类:DefaultSqlSession和SqlSessionManager.SqlSession用途有两种:
1.获取映射器(Mapper),让映射器通过命名空间和方法找到对应的SQL,发送给数据库执行后返回结果.
2.直接通过命名信息去执行SQL返回结果.这是ibatis留下的方式,在SqlSession层我们可以通过update insert select delete等方法,带上SQL的id来操作xml中配置好的SQL.同时它也支持事务,通过commit rollback方法提交或回滚事务.

映射器

映射器比较复杂,也是mybatis的核心以后单独说明.

上一篇下一篇

猜你喜欢

热点阅读