MyBatis

1.  MyBatis

    1.通过SqlSession实例直接运行映射的SQL语句

2.基于Mapper接口方式操作数据

3.mybatis-config.xml  核心配置文件

4.mapper.xml SQL映射文件

 

2.  mybatis-config.xml核心配置文件中的标签和属性

注意:元素节点的顺序

configuration配置

properties 可以配置在java属性配置文件中

settings 修改MyBatis在运行时的行为方式

typeAliases为java类型命名一个别名(简称)

typeHandlers 类型处理器(类型转换器)

objectFactory 对象工厂

plugins 插件

environments 环境

environment 环境变量

transactionManager 事务管理器

dataSource 数据源

mappers 映射器

1.配置properties元素的两种方式

    1.通过外部指定的方式(database.properties),实现动态配置

        配置properties标签的resource属性指定(引入)

    2.直接配置为XML,实现动态配置

        直接配置prperty 如

 

  

 

    注意:第一种方式优先于第二种

2.typeAliases只用于关联XML配置,简写冗长的java类名

    1.为pojo配置别名

    2.扫描某包下的所有类,其类名既别名

         例3: <package  name="cn.java.pojo"> 类扫描器

3.environments元素

    表示配置Mybatis的多套运行环境,将SQL映射到多个不同的数据库上

    子元素节点:environment.但是必须指定其中一个默认运行环境(通过default指定)

4.transactionManager-事务管理器

    type属性有两种

        1.JDBC

        2.MANAGED(托管)

5.dataSource元素

    使用基本的DBC数据源接口来配置JDBC连接对象的资源

 

    有三种内建的数据源类型

 

    例:<dataSource type="[UNPOOLED|POOLED|JNDI]">

 

        POOLED是基本的连接池的概念

 

6.mapper元素

    映射器,定义SQL映射语句

    必须在主配置中引用mapper映射文件

    导入的方式有两种

 

        1.使用类资源路径获取资源

            例4:<mapper resource="cn/java/dao/user/UserMapper.xml"/>

        2.使用URL获取资源

            例5:<mapper url="file:///E:/sqlmappers/UserMapper.xml"/>

        3.使用类选择器 - 用类扫描器加载 此种方法必须文件名与接口名必须一致

            例6:<package name="cn.java.dao">

 

3.  SQL映射的XML文件(局部配置文件)

.SQL映射的XML文件

    Mybatis真正的强大在于映射语句,专注于SQL,功能强大

    SQL映射的配置却相当简单

    SQL映射文件的几个顶级元素(按照定义的顺序)

        mapper-namespace -命名空间绑定Dao接口

        cache     -配置给定命名空间的缓存

        cache-ref -从其他命名空间的缓存

        resultMap -用来描述数据库结果集和对象的对应关系

        sql       -可以重用的SQL块,也可以被其他语句音乐

        insert    -映射插入语句

        update    -映射更新语句

        delete    -映射删除语句

        select    -映射查询语句

1.mapper

    namespace:命名空间

        namespace和子元素的id联合保证唯一,区别不同的mapper

        绑定DAO接口

            namespace的命名必须跟某个(相对应的)接口同名

            接口中的方法与映射文件中的SQL语句id一一对应

 

2.select

    select是Mybatis中最常用的元素之一

    select语句有很多属性可以详细配置每一条语句

    1.id属性:

        命名空间中唯一的标识符

        接口中的方法与映射文件中的SQL语句id一一对应

    2.parameterType属性:

        传入SQL语句的参数类型的完全限定名或别名(jdk基本类型可以不用全名)

    3.resultType属性:

        SQL语句返回值类型的完整类名或别名

3.参数传递#{参数名}

    数据库字段名与JavaBean的属性名一致(或setting映射 sql下划线类型映射驼峰命名)

    parameterType

        基础数据类型

            int.String.Date等

            只能传入一个,通过#{参数名}即可获取传入的值

        复杂数据类型

            java实体类,Map等

            通过#{属性名}或者#{Map的Key}即可获取传入值

七、使用Mybatis实现基本的增删改操作

insert标签| delate标签| update

    id属性

    parameterType属性

    参数可以是pojo对象

    也可以是Map

    也可以用@Param注解

 

    1.将映射方法的多个参数前加上@Param("注解名")

    2.在映射的SQL语句中用#{注解名}入参

         例8:modify(@Param("id")Integer id,@Param("userName")String uName);

SQL: update user_info set userName=#{userName} where id = #{id}

    注:超过4个以上的参数最好封装成对象入参

    参数固定的业务方法,最好直接使用多参数入参

    resultType返回值都默认是int类型所有没有此属性

 

四、动态SQL标签

1、概念,

    基于OGNL表达式

    使用动态SQL完成多条件查询等逻辑实现

    用于实现动态SQL的元素主要有

        if

        trim 灵活的祛除无用关键字

        where

        set

        choose(when,otherwise)

        foreach

2、if标签

    简单的条件选择

3、where

    简化where的条件判断

4、trim

    属性

        prefix 在前面加 比如where

        suffix 在后面加 比如where id=#{id}

        prefixOverrides 忽略前面 比如and

    suffixOverrides 忽略后面 比如逗号

    更灵活的祛除多余关键字

    替代where

    拼接SQL的前缀或者后缀

    例:<trim prefix="where" proefixOverrides="and | or">

    可以灵活的判断是否加入一个where语句  忽略拼接条件开头的and或者or关键字

 

5、使用动态SQL实现更新操作

        set标签 + if标签

        update set 列名=值,列名=值 where条件

        set标签配合if标签可以判断值是否需要更改 而且可以忽略句尾的逗号

        备注:实际开发当中,用户只要执行了更新操作,就要按照客户的要求进行更新,哪怕是传入空参也要尊重用户的意愿,所以实际工作当中几乎不会使用set + if进行操作

 

6、使用forEach完成复杂查询

        迭代一个集合,通常适用于in条件

        属性:

            item - 每个元素迭代时的别名

            index - 迭代过程中每次迭代到的位置 可以省略

            collection:必须指定 - 指定相应入参属性的值 有以下情况

               list

               array

               map-key

            open - 表示以什么未开始 一般是” ( ”

            separator - 每次迭代用什么符号进行间隔 一般是 “,”

            close - 语句以什么结束 一般是” ) ”

 

七、MyBatis缓存

MyBatis缓存

    一级缓存  会话作用域

    二级缓存  全局作用域

二级缓存的配置

    1.MyBatis的全局cache配置

    <settings>

        <settiing name="cacheEnabled value="true"/>

    </settiongs>

    2.在MaaperXML文件中设置缓存,默认情况下未开启 -- 只在一个mappers中有效

    <cache eviction="FIFO" flushlnterval="60000" size="512" readOnly="true"/>

    3.在MaaperXML文件配置支持cache后,若需要对个别查询进行调整,可以单独设置cache

    <select id="selectAll" resultTye="User" useCache="true">

posted @ 2020-01-18 22:11  九星峰  阅读(121)  评论(0编辑  收藏  举报