zoukankan      html  css  js  c++  java
  • 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">

  • 相关阅读:
    第38周星期六小结
    第38周星期日小结
    第39周星期三熟悉java项目第一天小结
    第39周星期一今天开始用扇贝记单词
    第38周星期四电话会议忙碌的一天
    第38周星期二
    第38周星期三熟悉工程环境
    PHP实现图片的等比缩放和Logo水印功能示例
    微信授权登录微信公众号和PC端网站
    PHP实现购物车的思路和源码分析
  • 原文地址:https://www.cnblogs.com/Bluecom/p/12210459.html
Copyright © 2011-2022 走看看