MyBatis动态sql小结(一)

来源:互联网 发布:c语言学徒招聘 编辑:程序博客网 时间:2024/06/03 15:49

一.MyBatis的动态SQL在XML中支持的几种标签:

1.if

2.choose(when,otherwise)

3.trim(where,set)

4.foreach

5.bind


1.1if的用法

1.1.1在where条件中使用if

先举一个例子,我们在多条件搜索时,当你的条件为空时,查询所有。但是当你选择各种不同的选项时,在where条件中就会加上不同的条件。

if标签有一个必填的属性test,test的属性值是一个符合OGNL要求的判断表达式,表达式的结果可以是true和false,除此之外多有的非0值都为true,只有0为false。

这里需要注意的一点是where之后的那个1=1,因为如果后面的两个if判断都为false时,不会出现where后面语法不正确。还要值得注意的是其中的and和or,就是必须考虑条件为真为假的情况下,你的sql的语法必须都是正确的。

1.1.2在update更新中使用if

一样的,当更新一条数据时,对传入的参数进行非空判断,然后更新字段信息。

  update sys_user  set    user_name = #{userName},      user_password = #{userPassword},    id = #{id}  where id= #{id}  
这里需要注意的是 在最后的if最后加上了where条件中的字段,即id = #{id}作用和上面where中的一样,为了不产生语法错误。

1.1.3在insert中使用if

在数据库中插入数据的时候,如果某一列的参数值不为空,使用传入的值,如果传入值为空则使用默认值。

  insert into sys_user(  user_name,user_password,    user_email,    user_info,head_img,create_time)  values(  #{userName},#{userPassword},    #{userEmail},    #{userInfo},#{headImg,jdbcType = BOLB},#{createTime,jdbcType = TIMESTAMP})    
在INSERT中使用时要注意,若在列中增加了if条件,则在values的部分也要增加相同的if条件,必须保证上下可以相互对应,完全匹配。






原创粉丝点击