• myBatis的动态sql


    一.动态Sql:

      1.概念:MyBatis的一个强大的特性之一就是它的动态SQL能力。MyBatis采用功能强大的基于OGNL的表达式来消除其它元素。

      2.if标签:

        在动态sql中所做的最通用的事情是包含部分where字句的条件。比如:  

    1 <select id="findActiveBlogWithTitleLike" 
    2      parameterType="Blog" resultType="Blog">
    3   SELECT * FROM BLOG 
    4   WHERE state = ‘ACTIVE’ 
    5   <if test="title != null">
    6     AND title like #{title}
    7   </if>
    8 </select>
    //这条语句会提供一个可选的文本查找功能。如果你没有传递 title,那么所有激活的博客 都会被返回。但是如果你传递了 title,那么就会查找相近的 title(对于敏锐的检索,这中情 况下你的参数值需要包含任意的遮掩或通配符)的博客。

      注意:test属性是判断条件,它的值与传入参数有关

      3.choose标签:

        该标签其实相当于java中的switch语句

        它有两个子标签when和otherwise

     1 <select id="findActiveBlogLike" 
     2      parameterType="Blog" resultType="Blog">
     3   SELECT * FROM BLOG WHERE state = ‘ACTIVE’
     4   <choose>
     5     <when test="title != null">
     6       AND title like #{title}
     7     </when>
     8     <when test="author != null and author.name != null">
     9       AND author_name like #{author.name}
    10     </when>
    11     <otherwise>
    12       AND featured = 1
    13     </otherwise>
    14   </choose>
    15 </select>
    //现在我们来搜索当 title 提供时仅有 title 条件,当 author 提 供时仅有 author 条件。如果二者都没提供,只返回 featured blogs(也许是由管理员策略地选 择的结果列表,而不是返回大量没有意义的随机博客结果列表)。

      4.foreach标签:

        该标签的作用是迭代一个集合,通常是构建在IN条件中的。

    1 <select id="selectPostIn" resultType="domain.blog.Post">
    2   SELECT *
    3   FROM POST P
    4   WHERE ID in
    5   <foreach item="item" index="index" collection="list"
    6       open="(" separator="," close=")">
    7         #{item}
    8   </foreach>
    9 </select>

      foreach元素是非常强大的,它允许你指定一个集合,声明集合项和索引变量,他们可以用在元素体内,它也允许你指定开放和关闭字符串,在迭代之间放置分隔符。这个元素是很智能的,它不会偶然的附加多余的分隔符。

      注意:你可以传递一个List实例或者数组作为参数对象传给MyBatis.当你这么做的时候,MyBatis会自动将它包装在一个Map中,用名称作为键。List实例将会以“list”作为键,而数组实例将会以“array”作为键。

          

  • 相关阅读:
    HanTTS简单文档
    一张包含所有颜色的图片
    shiro整合SpringMVC基于xml
    设计模式-享元模式
    关于volatile关键字实现的个人理解
    重量级锁
    轻量级锁
    偏向锁
    Seata概念的总结
    苹果手机怎么把资源库的APP放到桌面
  • 原文地址:https://www.cnblogs.com/sxl920624/p/6743529.html
Copyright © 2020-2023  润新知