MyBatis基本概述

1.mybatis概述

    1.1mybatis发展过程:

  • jdbc->dbutild(queryRunner)->jdbcttemplate:工具,过程:编写sql->预编译->设置参数->执行sql->封装结果
  • 框架:整体解决方案

          hibernate:全自动全映射orm(object relation mpping):旨在消除sql。全映射体现在:数据表中有100列,javabean就有100个字断,部分映射时困难,导致数据库性能下降。过程:javabean->(黑箱操作:编写sql->预编译->设置参数->执行sql->封装结果->)DbRecords。

          这个框架不能按照自己的想法编写sql语句,以及不能sql优化等,由于这些缺点,则出现mybatis。过程:javabean->编写sql->(黑箱操作:预编译->设置参数->执行sql->封装结果->)DbRecords。

           Sql与java编码分离,sql是开发人员控制,则mybatis是半自动、轻量级框架

      1.2mybatis文档: https://github.com/mybatis-官方网址

          mybatis引入包:mybatis-3.4.1(mybatis)

          Mysql-connector-java-5.1.38.jar(mysql驱动包)

     1.3之前的mybatis

         1.3.1之前的mybatis1:

              1.使用sqlSessionfactoryBuilder创建sqlSessionfactory

              2.使用sqlSessionfactory创建sqlSession,使用sqlSession实例可以直接执行已经映射的sql语句

              3.sqlSession中有相应的增删改查方法,以查询为例:

                   selectOne(第一个参数:sql的唯一标识,即为mapper.xml中namespace+id,第二个参数:执行sql时需要用的参数)

          1.3.2之前的mybatis2:接口式编程

               1.使用sqlSessionfactoryBuilder创建sqlSessionfactory

               2.使用sqlSessionfactory创建sqlSession

               3.使用sqlSsssin实例的getMapper(mapper.xml的类型:mapper.class)方法获取接口的实现类对象(sqlSession会为接口自动创建一个代理对象,代理对象执行相应的增删改查操作)

        附加:

        sqlSession代表和数据库的一次回话,用完必须关闭。它与connection一样,都不是线程安全的,每次使用都需要获取新的对象。

        Mapper接口没有实现类,但是mybatis会为这个接口生成一个代理对象。(将接口和xml文件进行绑定)

           1.4Mybatis配置文件------两个重要配置文件:

             mybatis的全局配置文件包含数据库连接池信息,事务管理器信息、系统运行环境信息,影响mybatis行为甚深的设置setting和属性properties信息等。(使用配置文件)

              sql映射文件,保存了每一个语句的映射信息

           1.4.1全局配置文件:

           引入dtd约束文件(会有自动提示)http://mabatis.org/dtd/mybatis-3-config.dtd

           

         文件结构如下:

         configuration配置、properties属性、setting设置、typeAliases类型命名、typeHandlers类型处理器、objectFactory对象工厂、plugins插件、envrionments环境、envrionment环境变量、transactionManager事务管理器、dataSource数据源、databaseldProvider数据库厂商标识、mappers映射器

  • <properties>标签:使用此标签来引入外部properties配置文件的内容;eg:数据源可以使用properties文件

        resource:引入类路径下的资源

        url:引入网络路径或者磁盘路径下的资源

  • <settings>标签:包含很多重要的设置项,setting是用来设置每一个设置项,name是设置项的名称,value是设置项的取值

        <settings>//是否开启自动驼峰命名规则映射,eg:A_COLUMN —— aColumn

             <setting name=“mapUnderscoreToCamelCase” value=“true”/>

        <settings>

  • <typeAliases>类型命名:为java类型起别名,默认名称不区分大小写

      1.<typeAliases>//为某一个类起别名默认别名是类名小写,eg:com.xxx.bean.Employee—>默认别名是employee,使用alias指定新的别名

               <typeAlias type=“com.xxx.bean.Employee” alias=“emp”/>//指定命名之后在mapper.xml中使用

         </typeAliases>

       2.批量起别名:package为某个包下的所有类批量起别名,name指定包名(为当钱包以及下面所有的后代包的每一个类都起一个默认别名,即类名小写)

<typeAliases>      <package name=“com.xxx.bean”/>     </typeAliases>

       2.1在批量起别名的情况下,使用注解方式@Alias(“emp”),在类上添加注解

           --Mybatis为一些类已经取了别名,如下图,下图为部分别名:

              

            --typeHandlers类型处理器:将java类中的属性类型对应数据库表中存储的类型

                  

            -----Plugins插件,相当于一个动态代理,以下是四大对象,括号中是各对象中含有的方法

             

            1.执行器:增删改

            2.参数处理器:设置参数,获取参数

            3.结果集处理器:把查出来的数据处理成javabean对象

            4.sql语句处理器

  • environments标签:其中environment标签在编写时,必须加transactionManager(事务管理器)和dataSource;

        eg:<environments default=“dev”>

                    <environment id=“”>

                          <transactionManager type=“”></transactionManager>

                          <dataSource type=“”></dataSource>

                   </environment>

             </environments>

        ===事务管理器有两种类型,即有以下两种取值,这两个取值都是别名:

               

      type=“JDBC”

      type=“MANAGED”,

            另外,自定义事务管理器,需实现TransactionFactory接口,此时type取值为该类的全类名

         ===数据源有三种取值:

              

         另外,也可以使用自定义数据源,实现dataSourceFactory

  • databaseIdProvider,支持多数据库厂商的,作用就是获得数据库厂商的标识(getDatabaseProductName()),mybatis根据数据库厂商标识来执行不同的sql:

           有多商场支持的mapper中,编写的sql标签中需要写相对应的databaseId

  • Mappers,将我们写好的sql映射文件一定要注册到mybatis的全局配置文件中

      mapper:注册一个sql映射,

            Resource:引用类路径下的sql映射文件;(注册配置文件)

             <mappers><mapper resource=“mybatis/mapper/xxxmapper.xml”/></mappers>,该方式只需要写对配置文件的路径

                     还有一种url引用,引用网络路径或者磁盘路径下的sql映射文件(注册配置文件)

            class:引用接口(注册接口),⚠️使用该方式,需要接口与xml必须在同一目录下,两个文件必须同名

             <mappers><mapper class=“com.xxx.mybatis.dao.xxxmapper”/></mappers>

             另:注解方式,不需要相应的mapper.xml的文件,所有的sql都是利用注解写在方法上面的,eg:

                

             此时

               

              =====批量注册 :<mappers> <package name=“”/>  </mappers>

*******重要一点,

                                 

                 当该项目打包之后所有的源码会统一放在bin包下,如图一,同包名的也会在同一处地方,如图二:

                

                

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值