首页 > 程序开发 > 软件开发 > Java >

在Java下,MyBatis中的动态SQL是什么?

2017-11-08

在Java下,MyBatis中的动态SQL是什么?对于一些复杂的查询,我们可能会指定多个查询条件,但是这些条件可能存在也可能不存在,例如在58同城上面找房子,我们可能会指定面积、楼层和所在位置来查找房源,也可能会指定面积、价格、户型和所在位置来查找房源,此时就需要根据

对于一些复杂的查询,我们可能会指定多个查询条件,但是这些条件可能存在也可能不存在,例如在58同城上面找房子,我们可能会指定面积、楼层和所在位置来查找房源,也可能会指定面积、价格、户型和所在位置来查找房源,此时就需要根据用户指定的条件动态生成SQL语句。如果不使用持久层框架我们可能需要自己拼装SQL语句,还好MyBatis提供了动态SQL的功能来解决这个问题。MyBatis中用于实现动态SQL的元素主要有:

- if

- choose / when / otherwise

- trim

- where

- set

- foreach

下面是映射文件的片段。

<select id="foo" parametertype="Blog" resulttype="Blog">
     select * from t_blog where 1 = 1
      
         and title = #{title}
      
      
         and content = #{content}
      
      
         and owner = #{owner}
      
</select>

当然也可以像下面这些书写。

<select id="foo" parametertype="Blog" resulttype="Blog">
    select * from t_blog where 1 = 1
     
         
            and title = #{title}
         
         
            and content = #{content}
         
         
            and owner = "owner1"
         
     
</select>

再看看下面这个例子。

<select id="bar" resulttype="Blog">
    select * from t_blog where id in
     
        #{item}
     
</select>
相关文章
最新文章
热点推荐