Mybatis?如何傳入字符串參數(shù),分割并遍歷
如何傳入字符串參數(shù),分割并遍歷
如前臺(tái)傳入字符串參數(shù)
String str = "a,b,c,d,e,f";
現(xiàn)需將此參數(shù)作為查詢語句的參數(shù),
Select * from news where id in (${id})使用該語句查詢正常返回結(jié)果,但勢(shì)必產(chǎn)生sql注入漏洞。
如修改為:
Select * from news where id in (#{id})程序報(bào)錯(cuò)。
正確寫為如下
id in
<foreach collection="str.split(',')" ?item="item" index="index" open="(" separator="," close=")">#{item}</foreach>Mybatis 傳入分割字符串做參數(shù)
需求:更改指定一些客戶的一個(gè)字段
設(shè)計(jì):傳參兩個(gè)(一個(gè)需要更改字段,一個(gè)客戶id字符串用","隔開)
問題:mybatis中sql語句里條件報(bào)錯(cuò),原因是用了#{clientIds}傳入sql中是字符串形式
where id in (#{clientIds}) 等于 where id in ("1,2,3,4") 報(bào)錯(cuò)
解決
方法1、客戶id字符串在代碼里分割成list,mybatis中l(wèi)ist遍歷
<foreach collection="clientIdList" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>方法2、將字符串在mybatis里分割
<foreach collection="clientIds.split(',')" item="item" index="index" open="(" separator="," close=")"> #{item} </foreach>方法3、sql注入,改為where id in (${clientIds})
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
SpringBoot集成Swagger2生成接口文檔的方法示例
我們提供Restful接口的時(shí)候,API文檔是尤為的重要,它承載著對(duì)接口的定義,描述等,本文主要介紹了SpringBoot集成Swagger2生成接口文檔的方法示例,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12
JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API
這篇文章主要給大家介紹了關(guān)于JAVA進(jìn)階篇之詳細(xì)了解File文件的常用API的相關(guān)資料,File用于表示文件系統(tǒng)中的一個(gè)文件或目錄,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-11-11

