"findarticles"
resultmap
="findarticlbycategoryid"
>
select id,title,author,publishdate,readtimes,content,flag,category_id from cms_article
>
test
="condition.begintime!=null"
>
publishdate >= #
if>
test
="condition.endtime!=null"
>
and publishdate #
if>
test
="condition.keywords!=null"
>
and title like binary '%#%'
if>
where
>
limit #,#
select
>
通過#{}取值的寫法會報錯:
parameter index out of range (n > number of parameters, which is n-1)
因為#{}引數取值發生在單引號內,會被當成字串,以至於讓mybatis識別時少乙個引數。
i、通過concat拼接字串 (推薦)
"findarticles"
resultmap
="findarticlbycategoryid"
>
select id,title,author,publishdate,readtimes,content,flag,category_id from cms_article
>
test
="condition.begintime!=null"
>
publishdate >= #
if>
test
="condition.endtime!=null"
>
and publishdate #
if>
test
="condition.keywords!=null"
>
and title like concat('%',#,'%')
if>
where
>
limit #,#
select
>
ii、引數取值換成換成${}
"findarticles"
resultmap
="findarticlbycategoryid"
>
select id,title,author,publishdate,readtimes,content,flag,category_id from cms_article
>
test
="condition.begintime!=null"
>
publishdate >= #
if>
test
="condition.endtime!=null"
>
and publishdate #
if>
test
="condition.keywords!=null"
>
and title like binary '%$%'
if>
where
>
limit #,#
select
>
這樣做不好的地方:通過$ {}的方式拼接的sql語句,不再是以佔位符的形式生成sql,而是以拼接字串的方式生成sql,這樣做會引發sql注入的問題。
如果要避免引發sql注入問題發生,也可以用concat拼接方式。注意下加上單引號,因為${}是不帶單引號的,而#{}是帶單引號的!
"findarticles"
resultmap
="findarticlbycategoryid"
>
select id,title,author,publishdate,readtimes,content,flag,category_id from cms_article
>
test
="condition.begintime!=null"
>
publishdate >= #
if>
test
="condition.endtime!=null"
>
and publishdate #
if>
test
="condition.keywords!=null"
>
and title like concat('%','$','%')
if>
where
>
limit #,#
select
>
如果mysql 5.5 以上版本進行模糊查詢時出現了中文不能正確轉碼的問題,可以加上binary關鍵字。當然,為了避免這種問題的發生,也可以盡量新增上。
"findarticles"
resultmap
="findarticlbycategoryid"
>
select id,title,author,publishdate,readtimes,content,flag,category_id from cms_article
>
test
="condition.begintime!=null"
>
publishdate >= #
if>
test
="condition.endtime!=null"
>
and publishdate #
if>
test
="condition.keywords!=null"
>
and title like binary concat('%',#,'%')
if>
where
>
limit #,#
select
>
mybatis中LIKE模糊查詢
mybatis中對於使用like來進行模糊查詢的幾種方式 使用 由於 是引數直接注入的,導致這種寫法,大括號裡面不能註明jdbctype,不然會報錯org.mybatis.spring.mybatissystemexception nested exception is org.apache.iba...
mybatis3 like模糊查詢小結
現在的專案用的是mybatis3,不是ibatis,大同小異的。沒什麼。今天在用like作模糊查詢時,遇到小小的問題,在此作個小結。記得以前ibatis時,可以這樣寫的 select from student where sname like sname 為了安全,也不提倡這種寫法了。在網上搜了一大...
like 模糊查詢
sql 模糊查詢 逗號,在sql中like中不需要轉義,但是如果 在sql中的某個欄位值用 分隔資料,需要獲取資料的時候直接把 拆分成資料,獲得乙個資料的list。例如 需要查詢某欄位是否包含乙個值,111是否存在於1111,2111,1112,1121,1113這個欄位中 因為根據 逗號分開,要求...