java ibatis 动态注入_Java往事之《Ibatis动态sql语句》

本文介绍了Ibatis动态SQL中的dynamic元素及其属性使用,通过实例解析了isNotNull和isNotEmpty的区别。在没有指定prepend属性时,dynamic会自动处理首个AND关键字。当条件不为空时,isNotNull和isNotEmpty会影响生成的SQL语句,避免不必要的AND条件。文章通过栗子、梨子和荔枝的比喻,生动地解释了这些概念。
摘要由CSDN通过智能技术生成

Ibatis动态sql语句

今天下午,一哥们问下图这段代码啥意思。很少用到这种的,后来也是一直在用myBatis,就更不用这种方式了。下面看一下这段代码!

a8e794929a3cb105272b5398b631c524.png

dynamic 它也是有prepend属性的,为什么这里没有写呢?因为他上面已经写了固定where条件(我个人就比较喜欢加where 1=1,无论有木有条件我就先加一个,之后有条件我就and。),在这呢就不能在写where了对吧。省略prepend属性

dynamic可以去除第一个prepend=”and”中的字符(这里为and) 下面举个栗子

xml代码:

select * from Person

name=#name#

sex=#sex#

运行结果:

当name、sex都非null时打出如下的sql语句:select Person where (and) name= ? , and sex= ?

看到上面这个栗子dynamic就一目了然。下面介绍isNotNull,再举个isNotNull的梨子,请看如下梨子:

select count(cus_id) from cus_customer_tbl

( CUS_CUSTOMER_TBL.CUS_WEB_FROM LIKE '%$lct$%')

( CUS_CUSTOMER_TBL.CUS_WEB_AGENT LIKE '%$lwh$%')

当值传入参数lct而不传入lwh时,产生的SQL语句为:

select count(cus_id) from cus_customer_tbl     WHERE     ( CUS_CUSTOMER_TBL.CUS_WEB_FROM LIKE '%我是参数%')      AND        (CUS_CUSTOMER_TBL.CUS_WEB_AGENT LIKE '%%')

看到上面这个梨子isNotNull就一目了然。下面介绍isNotEmpty,再举个isNotEmpty的荔枝,请看如下荔枝:

select count(cus_id) from cus_customer_tbl

( CUS_CUSTOMER_TBL.CUS_WEB_FROM LIKE '%$lct$%')

( CUS_CUSTOMER_TBL.CUS_WEB_AGENT LIKE '%$lwh$%')

同样,当值传入参数 lct 而不传入 lwh时,产生的SQL语句为:

select count(cus_id) from cus_customer_tbl    WHERE      ( CUS_CUSTOMER_TBL.CUS_WEB_FROM LIKE '%我是参数%')

那哥们给我发的截图并没有isNotEmpty,在这里我为什么要介绍一下这两者的区别呢?我之前一直用isNotEmpty,刚看到截图的时候,竟然误以为是isNotEmpty,然后我就去百度了一下isNotNull,握了棵草!握了棵草!

握了棵草!果然还是有区别的。ok,看完栗子、梨子还有荔枝上面的截图代码的意思应该就一目了然了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值