• SQL映射文件


     SQL映射文件的几个顶级元素

    mapper - namespace

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

    cache-ref – 从其他命名空间引用缓存配置

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

    sql – 可以重用的SQL块,也可以被其他语句引用

    insert – 映射插入语句

    update – 映射更新语句

    delete – 映射删除语句

    select – 映射查询语句

    注意:按照定义的顺序

     mapper

    namespace:命名空间.(dtd)

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

    注意:

    namespace的命名必须跟某个接口同名

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

     select

    a.查询语句的标签

    b.常用属性

    id

    命名空间中唯一的标识符

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

    parameterType

    传入SQL语句的参数类型

    resultType

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

    c. parameterType

    基础数据类型

    intStringDate

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

    复杂数据类型

    Java实体类、Map

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

    注意:#{}${}的区别

    ${}是原样输出.(可以导致sql注入)

    #{}是会给值加入一对双引号.'value'.(建议适用这个)

    d. resultMap

    <resultMap type="数据类型" id="id">

    <result property="d性名" column="数据库列名"/>

    <result property="userCode" column="userCode"/>

    </resultMap>

    注意:resultTyperesultMap的区别

    resultType :直接表示返回类型

    基本数据类型

    复杂数据类型

    resultMap :对外部resultMap的引用

    应用场景:

    数据库字段信息与对象属性不一致

    复杂的联合查询,自由控制映射结果

    e.resultMap的自动映射

    前提:字段名与属性名一致

    设置级别autoMappingBehavior:

    NONE : 禁止映射

    PARTIAL:自动匹配所有(没有嵌套association,collection)

    FULL: 自动匹配所有.

    :<setting name="autoMappingBehavior" value="FULL"/>

    f.属性

    id 在命名空间中唯一的标识符,可以被用来引用这条语句

    parameterType 将会传入这条语句的参数类的完全限定名或别名

    resultType 从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用resultTyperesultMap,但不能同时使用

    resultMap  命名引用外部的resultMap

    flushCache 将其设置为true,不论语句什么时候被调用,都会导致缓存被清空。默认值:false

    useCache 将其设置为true,将会导致本条语句的结果被缓存。默认值:true

    timeout  这个设置驱动程序等待数据库返回请求结果,并抛出异常时间的最大等待值。默认不设置(驱动自行处理)

    fetchSize 这是暗示驱动程序每次批量返回的结果行数

    statementType STATEMENT,PREPAREDCALLABLE的一种。让MyBatis选择使用StatementPreparedStatementCallableStatement。默认值:PREPARED

    resultSetType FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSITIVE中的一种。默认是不设置(驱动自行处理)

    insert(增加)

    id

    parameterType

    :

    <insert  id="add" parameterType="User" >

     insert into  smbms_user (userCode,userName,userPassword)

    values ( #{userCode},#{userName},#{userPassword})

    </insert>

    注意:insertupdatedelete元素均没有resultType属性

            默认返回int类型.

    update

    例:

    <update id ="modify" parameterType="User">

    update smbms_user

    set userCode = #{userCode},

           userName = #{userName},

               userPassword = #{userPassword}

                where id = #{id}

    </update>

     delete

    :

    <delete id ="deleteUserById" parameterType="int">

    delete from smbms_user where id = #{id}

    </delete>

  • 相关阅读:
    Dragonfly 基于 P2P 的文件和镜像分发系统
    一文搞懂 SAE 日志采集架构
    携手共建云原生生态 阿里云云原生加速器第二次集结圆满结营
    开放下载 | 飞天技术峰会云原生加速应用构建分论坛资料开放下载
    使用函数计算自定义运行时快速部署一个 SpringBoot 项目 | 文末有礼
    阿里云容器服务 ACK 产品技术动态(202207)
    阿里云 ACK One 多集群管理全面升级:多集群服务、多集群监控、两地三中心应用容灾
    掌握软件开发技术的第一性原理2
    掌握软件开发技术的第一性原理1
    library
  • 原文地址:https://www.cnblogs.com/yang82/p/7859575.html
Copyright © 2020-2023  润新知