zoukankan      html  css  js  c++  java
  • 动态SQL的注意

    MyBatis的动态SQL元素。

    元素 说明
    <if> 判断语句,用于单条件分支判断
    <choose>(<when>、<otherwise>) 相当于java中的switch...case...default语句,用于条件分支判断
    <where>、<trim>、<set> 辅助元素,用于处理一些sql拼装、特殊字符问题
    <foreach> 循环语句,常用语in语句等列举条件中
    <bind> 从OGNL表达式中创建一个变量,并将其绑定到上下文,常用语模糊查询的sql中

    注意1:

    在映射文件中使用<set>和<if>元素组合进行update语句动态sql组装时,如果<set>元素内包含的内容都为空,则会出现sql语法错误。所以在使用<set>元素进行字段信息更新时,要确保传入的更新字段不能都为空。

    注意2:

    <foreach>元素中使用的几种属性

    • item:配置的是循环中当前的元素。
    • index:配置的是当前元素在集合的位置下标。
    • collection:配置的list是传递过来的参数类型(首字母小写),它可以是一个array、list(或collection)、Map集合的键、POJO包装类中数组或集合类型的属性名等。
    • open和close:配置的是以什么符号将这些集合元素包装过来。
    • separator:配置的是各个元素的间隔符。

    collection属性最容易出错。该属性是必须指定的,而且在不同情况下,该属性的值是不一样的。主要有以下3种情况。

    1. 如果传入的单参数且参数类型是一个数组或者list的时候,collection属性值分别是array和list(或collection)。

    2. 如果传入的参数是多个的时候,就需要把它们封装成一个Map了,当然单参数也封装为Map集合,这时候collection属性值就为Map的键。

    3. 如果传入的参数是pojo包装类的时候,collection属性值就为该包装类中需要进行的数组或集合的属性名。

    所以在设置collection属性值的时候,必须按照实际情况配置,否则程序就会出现异常。

  • 相关阅读:
    [转] JavaScript中的字符串操作
    关于多线程学习的笔记
    [转] jquery 使用方法
    ubuntu下安装tomcat和配置mysql
    [转] 使用CodeViz生成C/C++函数调用关系图
    [转] java中的匿名内部类总结
    [转] Java中继承thread类与实现Runnable接口的区别
    字符串 指针、调试---师傅传授 栈中指针地址 与 堆中数据地址 标准写法
    maven 阿里云节点,速度快
    解决IntelliJ IDEA 创建Maven项目速度慢问题 DarchetypeCatalog
  • 原文地址:https://www.cnblogs.com/wangyuehan/p/10832242.html
Copyright © 2011-2022 走看看