美文网首页
02相关讲解

02相关讲解

作者: RobertLiu123 | 来源:发表于2019-07-18 13:56 被阅读0次

    一、简介

    MyBatis 本是[apache]的一个开源项目[iBatis], 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。

    iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的[持久层]框架。

    Mybatis是一个持久层框架。代替JDBC技术完成与数据库交互功能的框架,操作过程中,调用底层封装好的API,代码会被解析成JDBC源码进行功能实现。

    二、优点

    1、基于SQL语法的,简单易学。

    2、jdbc将sql语句写在java语句中,属于硬编码,而框架把SQL语句被封装在配置文件中,方便程序的维护,降低程序的耦合度。

    3、程序调试方便。
    4、jdbc需要将查询结果映射到实体类中,而框架可以省去这一步骤,查询即得到映射好的对象。

    三、mybatis工作原理和流程

    image

    四、关于Mybatis的API

    1、SqlSession
    SqlSession 中封装了对数据库的操作,如:查询、插入、更新、删除等。
    2、SqlSessionFactoryBuilder
    SqlSessionFactoryBuilder 用于创建 SqlSessionFacoty,SqlSessionFacoty 一旦创建完成就不需要SqlSessionFactoryBuilder 了,因为 SqlSession 是通过 SqlSessionFactory 生产,所以可以将SqlSessionFactoryBuilder 当成一个工具类使用,最佳使用范围是方法范围即方法体内局部变量。
    3、SqlSessionFactory
    SqlSessionFactory 是一个接口,接口中定义了 openSession 的不同重载方法,SqlSessionFactory 的最佳使用范围是整个应用运行期间,一旦创建后可以重复使用,通常以单例模式管理 SqlSessionFactory。

    public class SqlSessionFactoryUtil {
        //首先创建静态成员变量sqlSessionFactory,静态变量被所有的对象所共享。
        public static SqlSessionFactory sqlSessionFactory = null;
        public static SqlSessionFactory getSqlSessionFactory() {
            //如果sqlSessionFactory没有被创建就读取全局配置文件,假如已经被创建过了,就使用已经存在的sqlsessionfactory。
            //这样就有了单例模式的效果
            if(sqlSessionFactory==null){
                String resource = "SqlMapConfig.xml";
                try {
                    Reader reader = Resources.getResourceAsReader(resource);
                    sqlSessionFactory = new SqlSessionFactoryBuilder().build(reader);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
            return sqlSessionFactory;
        }
    }
    

    五、类别名

    1、以上提到,在xml文件中配置SQL语句时,需要使用全限定名,因此非常不便,需要配置类别名,使用typeAliases元素

    <configuration>
        <typeAliases>
            <!-- typeAlias元素
            type,全限定名
            alias,类别名
             -->
            <typeAlias alias="User" type="com.neusoft.bean.User"/>
        </typeAliases>
        <environments default="oracle">
    

    此时查询就可以使用User代替com.bean.User,注意,该元素必须在environments元素以前写,因为xml文件对元素顺序有要求
    2、内置别名
    java中的类型可以直接使用,无需配置别名,如int,long,String,List,Map

    六、核心配置文件

    1、defualt属性
    现在,让我们来说一说environments元素的default属性,这是一个必须有的属性,由于系统可能配置多个数据源,因此需要指定一个默认数据源,default的值与environment的id相对应,那就走该id所在的数据源

    <environments default="oracle">
            <environment id="oracle">
            </environment>
             <environment id="oracle1">
            </environment>
        </environments>
    

    还有一种情况,若我default的值指定了某一个数据源,是不是就连不了别的数据源?答案是否定的,SqlSessionFactoryBuilder有一个重载的方法能够指定连接其他数据源,如下代码所示

    <environments default="oracle">
            <environment id="oracle">
    
            </environment>
            <environment id="oracle1">
                <transactionManager type="jdbc"></transactionManager>
                <dataSource type="POOLED">
                    <property name="driver" value="${jdbc.driver}"/>
                    <property name="url" value="${jdbc.url}"/>
                    <property name="username" value="${jdbc.username}"/>
                    <property name="password" value="kkk"/>
                </dataSource>
            </environment>
        </environments>
    
    SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(reader,"oracle1");
    

    由于我在oracle1中密码错误,因此登录失败
    2、事务管理器transactionManager
    type属性,指定事务管理方式,可选值有
    jdbc:利用传统jdbc方式进行事务处理,需要手动提交、回滚
    MANAGED:让容器进行事务处理,此处容器指Spring容器,若配成此选项,意味着Mybatis不进行事务管理,交给Spring

    3、dataSource元素
    type属性,指定配置数据源连接的方式,可选择的值如下
    POOLED,使用数据库连接池,使用能够存放多个已经生成好的数据库连接的区域,好处在于想拿连接时只需要open一下就可以拿到连接,不涉及对连接的管理
    UNPOOLED,不使用数据库连接池,即使用原始连接方式,需要对连接管理
    JNDI,使用第三方数据库连接池,POOLED表示使用Mybatis自己的连接池,如果想使用第三方,就选这一项,常见提供数据库连接池的第三方有tomcat自带的连接池,Spring容器
    4、mappers
    将应用中所有SQL映射文件配置到核心配置文件中,目的是加载核心配置文件时能够加载SQL映射文件,xml文件与以往java文件不同,java文件编译成字节码后,其他方法就可以调用其中的方法,想用xml文件必须加载
    5、其他元素
    如settings,可以用来优化配置,最多可以连几个连接,或同时最多可以执行几个SQL语句,几乎不常用,而且真正开发时也不需要你去做

    相关文章

      网友评论

          本文标题:02相关讲解

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