美文网首页
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构成组件

    基本构成 SqlSessionFactoryBuider(构造器):根据配置信息或者代码生成SqlSeesionF...

  • Mybatis源码解读

    Mybatis入门 Mybatis构成 SqlSessionFactoryBuilder(构造器):根据配置信息或...

  • Mybatis基本构成

    Mybatis的核心组件 SqlSessionFactoryBuilder(构造器):会根据配置信息或者代码来生成...

  • Angular4~6 视图操作方式以及组件的变化检测过程

    Angular 应用由组件树构成,组件树由多个视图和子视图构成,而视图是构成 Angular 组件的基本元素,同时...

  • 组件化

    组件构成 基础组件(分类) 功能组件 业务组件 (骨架) 创建私有库

  • 初识MyBatis

    本文目标 掌握MyBatis基础组件及其使用、MyBatis的使用方法 掌握基础组件的生命周期及其实现方法 掌握入...

  • Mybatis源码研读(一)—— XML解析

    走进Mybatis 上文中简单的介绍过了Mybatis的使用。本篇文章将介绍Mybatis如何解析XML 组件: ...

  • Mybatis 初识

    Mybatis组件 SqlSessionFactoryBuilder: 工厂构造器 SqlSessionFacto...

  • Angular 工作原理

    Angular 应用,由组件构成,一颗由组件构成的树。由于组件是以树形结构组织起来的,当每个组件被渲染时,都会递归...

  • MyBatis的基本构成

    核心组件 SqlSessionFactoryBuilder(构造器):它会根据配置信息或者代码来生成 SqlSes...

网友评论

      本文标题:Mybatis构成组件

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