日期:2014-05-19  浏览次数:20734 次

ibatis中的like用法
本帖最后由 sweat89 于 2012-12-01 12:39:22 编辑
比如:
select * from emp where title like '%$title$%'
能查出结果,但是你懂得,有sql injection。

换这种:
select * from emp where title like   '%' || #title# || '%'

日志打印出来的SQL是:
select * from emp where title like   '%' || ? || '%'

在线等。。。
------解决方案--------------------
我就是用的select * from emp where title like   '%' 
------解决方案--------------------
 #title# 
------解决方案--------------------
 '%' ,LZ你不能查询出结果吗?
sqlid的参数类型,一般都是Map,或者String
<select id="getAddressPoolConfigCount" resultClass="Integer"
parameterClass="Map">
select count(*) from TMS_ADDRESS_POOL_CONFIG tapc, SYS_CITY
sc,SYS_PROVINCE sp where tapc.PROVINCE_ID = sp.PROVINCE_ID and
tapc.CITY_ID = sc.CITY_ID
<isNotEmpty prepend="AND" property="provinceId">
tapc.PROVINCE_ID like '%' 
------解决方案--------------------
 #provinceId#
------解决方案--------------------
 '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="cityId">
tapc.CITY_ID like '%' 
------解决方案--------------------
 #cityId#
------解决方案--------------------
 '%'
</isNotEmpty>
<isNotEmpty prepend="AND" property="configFlag">
tapc.CONFIG_FLAG like '%' 
------解决方案--------------------
 #configFlag#
------解决方案--------------------
 '%'
</isNotEmpty>
</select>

------解决方案--------------------
  select * from emp where title like '%$title$%'
能查出结果,但是你懂得,有sql injection。 

ibatis不会有SQL注入 楼主写的就是对的  就这么用没问题的