美文网首页
Mybatis构成组件

Mybatis构成组件

作者: lv_shun | 来源:发表于2019-01-10 17:26 被阅读0次

    基本构成

    • SqlSessionFactoryBuider(构造器):根据配置信息或者代码生成SqlSeesionFactory
    • SqlSeesionFactory(工厂接口):根据工厂来生成SqlSession
    • SqlSession(会话):是一个既可以发送sql语句,然后得到Mapper的接口
    • SqlMapper:由java接口和xml文件(或注解)构成的,需要给出对应的sql和映射规则.它负责发送sql去执行,并返回结果.
    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的核心以后单独说明.

    相关文章

      网友评论

          本文标题:Mybatis构成组件

          本文链接:https://www.haomeiwen.com/subject/zcrarqtx.html