• MyBatis—mapper.xml映射配置


    SQL文件映射(mapper文件),几个顶级元素的配置:

     

    mapper元素:根节点只有一个属性namespace(命名空间)作用:

    1:用于区分不同的mapper,全局唯一。

    2:绑定DAO接口,即面向接口编程。当namespace绑定某一接口之后,可以不用写该接口的实现类,MyBatis会通过接口的完全限定名来查找对应的mapper配置,执行SQL语句,因此namespa

    ce的命名必须和接口名相同。

    -----------------------------------------------------

    namespace属性的要求:

    1:namespace的命名必须和某个DAO接口同名,同属于DAO层,

    故代码结构上,mapper映射文件个接口必须放在同一个包下。

    2:在不同的mapper文件中,元素的id是可以相同的,MyBatis

    是通过namespace和子元素的id联合区分的。接口中的方法和映射文件的SQL中的id一一对应。

    -----------------------------------------------------

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

    cache-ref:从其它命名空间引用缓存配置

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

    sql:可以重用的SQL块,也可以被其它语句引用

    insert:映射插入语句

    updata:映射更新语句

    delete:映射删除语句

    select:映射查询语句

     

    resultMap的应用

    resultType:直接表示返回类型

    基础数据类型

    复杂数据类型

    resultMap:对外部resultMap的引用

    应用场景

    1:数据库的字段信息与属性不一致的情况

    2:复杂的联表查询,可以自由地控制要展现的映射字段个数

    ==================================

    其实返回的都是Map集合,当resultType返回user时候,MyBatis通过setter()方法自动进行关系映射赋值。返回resultMap时,则需要手动赋值,更自由。二者不能同时存在

    ==================================

    设置resultMap的自动映射级别:

    resultMap的自动映射匹配的前提:字段名和属性名一致

    resultMap的自动映射级别:

    属性: aotuMappingBehavior

    值: PARTIAL(默认):自动匹配所有属性

    NONE:关闭自动映射

     

    resultMap的自动映射三个匹配级别:

    1:NONE:禁止自动匹配

    2:PARTIAL:(默认)自动匹配所有属性

    有内部嵌套(collection,association)的除外

    3:FULL:自动匹配所有

    ==================================

    resultMap的基本配置项

     

    resultMap的属性:

    id:它是resultMap的唯一标识

    type:java实体类

    resultMap的子元素

    id:对应数据库中该行的主键id,设置此项可提高MyBatis的性能

    result:映射到javaBean的某个简单类型属性

    property: 映射数据库列的实体对象的属性

    column:数据库列名或者别名

    association:映射到javaBean的某个复杂类型属性如javaBean

    1: 复杂的类型关联,一对一(一个实体类嵌套另一个实

    体类属性)

    2:内部嵌套:映射一个嵌套javaBean属性

    3:属性:

    a:property: 映射数据库列的实体对象的属性

    b:javaType:完整java类名或者别名

    c:resultMap:应用外部的resultMap

    4:子元素

    id:同resultMap的id一样对应该javaBean表的主键

    result:

    property: 映射数据库列的实体对象的属性

    column:数据库列名或者别名

    collection:映射到javaBean的某个复杂类型属性,例如集合

    1:复杂类型集合,一对多(一个实体类嵌套另一个实体类集合)

    2:内部嵌套:映射一个嵌套结果集到一个列表

    3:属性

    property:映射数据库列的实体对象的属性

    ofType : 完整的java类名或者别名(集合所包含的类型)

    resultMap : 应用外部的resultMap,代码重用

    4:子元素

    id:同resultMap的id一样对应该javaBean表的主键

    result:

    property: 映射数据库列的实体对象的属性

    column:数据库列名或者别名

     

     

    使用select完成单条件查询

     

    select标签:及其属性:

    1:id:命名空间的唯一标识符,与接口中的方法名相对应

    2:parameterType:传入的SQL语句的参数类型的限定名或别名

    基础数据类型:int String Date等, 只能传入一个,通过#{参数名}来获取传入值

    复杂数据类型:java实体类,Map集合通过#{属性名}或#{Map的Key}获取传入值

    3:resultType:SQL语句的返回值的完整类名或别名

    2,3都支持内建的别名,大小写不区分。可以参考P37别名表#{userName}:userName和接口方法中传入的参数名是一样的

     

    a:单参数入参

     

    b:多参数之javaBean对象入参

     

    C:多参数之Map集合入参

     

    使用insert完成增加操作

     

     

     

    insert标签及其属性:

    1:id:命名空间的唯一标识符,与接口中的方法名相对应

    2:parameterType:传入的SQL语句的参数类型的限定名或别名

     

    关于增删改的返回类型:

    1:默认返回影响的行数,所以接口方法中的返回值类型要设置为int类型最好不要返回boolean。

    2:insert,update,delete元素是没有返回属性resultType只有查询操作select才有相应的指定。

     

    使用update完成增加操作

    insert标签及其属性:

    1:id:命名空间的唯一标识符,与接口中的方法名相对应

    2:parameterType:传入的SQL语句的参数类型的限定名或别名

     

    1:对象入参

    同insert用法相同,没有set赋值的属性,在表中为NULL显示,因此用参数入参可以解决此问题

     

    2:参数入参,不写入参类型

    1:接口方法入参要使用注解

    2 : 映射SQL中用#{注解名}来获取参数值

    附:超过4个参数最好封装为对象入参,多参入参,不写入参类型 参数固定的,最好直接多参数入参.int类型的入参都要使用包装类.

    DAO层接口的常见的返回类型

    复杂数据类型:1:JAVA对象 2:Map集合 3:List集合

    int类型:增删改更新操作,返回影响的行数

    MyBatis参数的入参:

    1:使用注解进行参数的传递

    2:封装成对象入参

     

    使用delete完成删除操作

    insert标签及其属性:

    1:id:命名空间的唯一标识符,与接口中的方法名相对应

    2:parameterType:传入的SQL语句的参数类型的限定名或别名

     

    MyBatis的缓存

     

    1:一级缓存

    2:二级缓存

    -----------------------------

    二级缓存的配置:

    1:MyBatis的全局cache配置

    2:在Mapper XML文件中设置缓存,默认情况下:未开启

    3:在Mapper XML文件配置支持cache后,需要对个别查询做调

    整可以单独设置cache。

    <select id="selectALL" resultType="Emp" useCache="true">

    ----------------------------------

    实际上,MyBatis的缓存很少用到,当面对一定规模的数据量时,内置的cache方式也派不上用场,我们一般会选择OS cache,mamer cache等专

    门的缓存服务器来做。因此,MyBatis专心做的还是SQL映射!

  • 相关阅读:
    CentOS 7 搭建 LAMP
    CentOS 7 安装 nginx
    ms-sql关联表操作
    在CentOS下自动备份mysql
    Redhat 7 或者 CentOS 7 密码破解
    java环境变量的设置
    CentOS6.6安装及配置vsftpd文件服务器
    Virtualbox虚拟机配置CentOS7.0静态网络
    CentOS6.6安装vmware workstation报错
    CentOS6.6安装virtualbox4.1.44
  • 原文地址:https://www.cnblogs.com/domi22/p/8047863.html
Copyright © 2020-2023  润新知