Mybatis构成组件

基本构成

  • 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的核心以后单独说明.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1 Mybatis入门 1.1 单独使用jdbc编程问题总结 1.1.1 jdbc程序 上边使...
    哇哈哈E阅读 3,325评论 0 38
  • 1. 简介 1.1 什么是 MyBatis ? MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的...
    笨鸟慢飞阅读 5,571评论 0 4
  • MyBatis 理论篇 [TOC] 什么是MyBatis  MyBatis是支持普通SQL查询,存储过程和高级映射...
    有_味阅读 2,940评论 0 26
  • 刷微博,看到个视频:一群人围着辆城管执法车,人群中一个女声撕心裂肺“你们还有没有人性,你们也是人啊,你们也是人,你...
    屠龙奶爸阅读 198评论 0 1
  • 范佳老师阅读 409评论 0 0