• mybatis动态查询


     1 if
     2 动态 SQL 通常要做的事情是有条件地包含 where 子句的一部分。比如:
     3 <select id="findActiveBlogWithTitleLike"
     4      resultType="Blog">
     5   SELECT * FROM BLOG 
     6   WHERE state = ‘ACTIVE’ 
     7   <if test="title != null">
     8     AND title like #{title}
     9   </if>
    10 </select>
    11 choose, when, otherwise
    12 有些时候,我们不想用到所有的条件语句,而只想从中择其一二。针对这种情况,MyBatis 提供了 choose 元素,它有点像 Java 中的 switch 语句。
    13 还是上面的例子,但是这次变为提供了"title"就按"title"查找,提供了"author"就按"author"查找,若两者都没有提供,就返回所有符合条件的BLOG(实际情况可能是由管理员按一定策略选出BLOG列表,而不是返回大量无意义的随机结果)。
    14 <select id="findActiveBlogLike"
    15      resultType="Blog">
    16   SELECT * FROM BLOG WHERE state = ‘ACTIVE’
    17   <choose>
    18     <when test="title != null">
    19       AND title like #{title}
    20     </when>
    21     <when test="author != null and author.name != null">
    22       AND author_name like #{author.name}
    23     </when>
    24     <otherwise>
    25       AND featured = 1
    26     </otherwise>
    27   </choose>
    28 </select>
    29 foreach
    30 动态 SQL 的另外一个常用的必要操作是需要对一个集合进行遍历,通常是在构建 IN 条件语句的时候。比如:
    31 <select id="selectPostIn" resultType="domain.blog.Post">
    32   SELECT *
    33   FROM POST P
    34   WHERE ID in
    35   <foreach item="item" index="index" collection="list"
    36       open="(" separator="," close=")">
    37         #{item}
    38   </foreach>
    39 </select>
  • 相关阅读:
    使用createDocumentFragment的渲染数据(节省性能)
    面向对象写法模板
    面向对象this指向
    js 3D图片叠加旋转切换
    三列布局-中间固定俩边自适应-和两边固定中间自适应布局
    游戏中抽奖的算法
    c++11:lambda表达式
    c++11:模板
    c++11:左值、右值
    游戏服务器语言之争
  • 原文地址:https://www.cnblogs.com/tianxuwei/p/10478891.html
Copyright © 2020-2023  润新知