mybatis的动态sql之if test的使用说明

2025-05-29 0 72

参数为String,if test读取该参数代码

?

1

2

3

4

5

6

7

8

9

10

11
<select id="getMaxDepartId" parameterType="java.lang.String" resultType="java.lang.String">

SELECT MAX(DEPART_ID) FROM T_P_DEPART

<where>

<if test="_parameter!=null and _parameter!=''">

AND DEPART_PID = #{departId,jdbcType=VARCHAR}

</if>

<if test="_parameter==null or _parameter==''">

AND DEPART_PID IS NULL

</if>

</where>

</select>

参数为pojo , if test读取该参数代码

?

1

2

3

4

5

6

7

8

9

10

11
<select id="findShopByName" parameterType="ShopVo" resultType="ShopCustomer">

select * from shop

<where>

<if test="shopCustomer.shopname!=null and shopCustomer.shopname!=''">

shop.shopname like '%${shopCustomer.shopname}%'

</if>

<if test="shopCustomer.shopname==null or shopCustomer.shopname==''">

AND shop.shopname is null

</if>

</where>

</select>

补充:关于mybatisif test的条件怎么写

1.mybatis 中 的 if test写法

1.1官方文档上对于if是这么写的

?

1

2

3
<if test="title != null">

AND title like #{title}

</if>

参考官方文档:

实际项目中会有这种情况: 页面上title字段输入某个值进行查询,手动将输入框中的值删除,然后再次查询,发现结果不正确,究其原因是应为title传入了空串" " 这样在mybatis配置文件中就会用空串进行查询,导致出现错误结果

1.2建议写法

?

1

2

3
<if test="title != null and title != ''" >

AND title like #{title}

</if>

2.使用mybatis 做修改时将字段置空

if中如果传入的参数如果为空,那么将不会执行if中的语句

解决办法:

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22
<update id="updateObject" parameterType="*.*.Object" >

update table

<set>

<if test="Object.fullName == null or Object.fullName ==''">

full_name = null,

</if>

<if test="Object.fullName != null and Object.fullName !=''">

full_name = #{companyOrg.fullName},

</if>

<if test="Object.level == null or Object.level ==''">

level = null,

</if>

<if test="Object.level == 0 ">

level = null,

</if>

<if test="Object.level != null and Object.level !='' and Object.level != 0 ">

level = #{companyOrg.level},

</if>

</set>

where 1=1 and id =#{companyOrg.id}

</update>

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

原文链接:https://blog.csdn.net/a241903820/article/details/51607131

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

快网idc优惠网 建站教程 mybatis的动态sql之if test的使用说明 https://www.kuaiidc.com/109333.html

相关文章

发表评论
暂无评论