好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

MyBatis XML去除多余AND|OR前缀或逗号等后缀的操作

1.通过trim格式化标记set或where功能

2.对于set自动删除最后一个[,],对于where自动删除最后一个[and|or]

使用示例如下:

1、

?

1

2

3

4

5

select * from user

<trim prefix= "WHERE" prefixOverride= "AND |OR" >

<if test= "userName != null and userName.length()>0" > AND user_name=#{userName}</if>

<if test= "loginName != null and loginName.length()>0" > AND login_name=#{loginName}</if>

</trim>

如果userName 为空则最终SQL为:

?

1

select * from user where login_name = 'xx'

prefix: 前缀

prefixOverride: 去掉第一个and或者是or

2、

?

1

2

3

4

5

update user

<trim prefix= "set" suffixOverride= "," suffix= " where user_id = #{userId} " >

<if test= "userName != null and userName.length()>0" > user_name=#{userName} , </if>

<if test= "loginName != null and loginName.length()>0" > login_name=#{loginName} , </if>

</trim>

如果userName 为空则最终SQL为:

?

1

update user set login_name= 'xx'   where user_id= 'xx'

suffixOverride: 去掉最后一个逗号(也可以是其他的标记,就像是上面前缀中的and一样)

suffix: 后缀

补充:mybatis去除多余的and或者or

啥也不多说了,大家还是直接看代码吧~

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

< select id= "selectBySelective" resultType= "xxx.UserInfo" >

select

<include refid= "Base_Column_List" />

from uc_user

<trim prefix= "WHERE (" suffix= ")" prefixOverrides= "AND |OR " >

<if test= "userName != null" >

user_name = #{userName}

</if>

<if test= "email != null" >

or email = #{email}

</if>

<if test= "phone != null" >

or phone = #{phone}

</if>

<if test= "weiboId != null" >

or weibo_id = #{weiboId}

</if>

<if test= "wxId != null" >

or wx_id = #{wxId}

</if>

<if test= "qqId != null" >

or qq_id = #{qqId}

</if>

</trim>

and status = 1

</ select >

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。

原文链接:https://blog.csdn.net/u012382791/article/details/95201173

查看更多关于MyBatis XML去除多余AND|OR前缀或逗号等后缀的操作的详细内容...

  阅读:44次