Mybatis 如何传入字符串参数,分割并遍历
目录
- 如何传入字符串参数,分割并遍历
- 如前台传入字符串参数
- 正确写为如下
- Mybatis 传入分割字符串做参数
- 解决
如何传入字符串参数,分割并遍历
如前台传入字符串参数
String str = "a,b,c,d,e,f";
现需将此参数作为查询语句的参数,
Select * from news where id in (${id})
使用该语句查询正常返回结果,但势必产生sql注入漏洞。
如修改为:
Select * from news where id in (#{id})
程序报错。
正确写为如下
id in <foreach collection="str.split(',')" item="item" index="index" open="(" separator="," close=")">#{item}</foreach>
Mybatis 传入分割字符串做参数
需求:更改指定一些客户的一个字段
设计:传参两个(一个需要更改字段,一个客户id字符串用","隔开)
问题:mybatis中sql语句里条件报错,原因是用了#{clientIds}传入sql中是字符串形式
where id in (#{clientIds}) 等于 where id in ("1,2,3,4") 报错
解决
方法1、客户id字符串在代码里分割成list,mybatis中list遍历
<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})
以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。
相关推荐
-
MyBatis 参数类型为String时常见问题及解决方法
1. 参数为String时的插值问题 假设有下面一Dao接口方法 public Account findByAccountType (String type)throws DaoException; 对应的Mapper.xml <select id="findByAccountType " parameterType="string" resultType="account"> select * form account <wh
-
mybatis分割字符串并循环,实现in多个参数的操作
mybatis分割字符串并循环,实现in多个参数 mybatis xml代码: <select id="selectInXh" resultMap="BaseResultMap" parameterType="java.lang.String"> select * from carinfo where xh in <if test="param1 != null and param1 != ''"> &
-
Mybatis中传递多个参数的4种方法总结
前言 现在大多项目都是使用Mybatis了,但也有些公司使用Hibernate.使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数.面对各种复杂的业务场景,传递参数也是一种学问. 下面给大家总结了以下几种多参数传递的方法. 方法1:顺序传参法 #{}里面的数字代表你传入参数的顺序. 这种方法不建议使用,sql层表达不直观,且一旦顺序调整容易出错. 方法2:@Param注解传参法 #{}里面的名称对应的是注解 @Param括号里面修饰的名称. 这种方法在参数不多的情况还
-
MyBatis传入数组集合类并使用foreach遍历
这篇文章主要介绍了MyBatis传入数组集合类并使用foreach遍历,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 在mapper中传入数组或集合类,使用foreach标签遍历出其中的值与SQL语句拼接 JAVA dao层接口 public interface UserDao { public List<User> getUsersByCollection(Collection collection); } mapper文件 <sel
-
Mybatis 如何传入字符串参数,分割并遍历
目录 如何传入字符串参数,分割并遍历 如前台传入字符串参数 正确写为如下 Mybatis 传入分割字符串做参数 解决 如何传入字符串参数,分割并遍历 如前台传入字符串参数 String str = "a,b,c,d,e,f": 现需将此参数作为查询语句的参数, Select * from news where id in (${id}) 使用该语句查询正常返回结果,但势必产生sql注入漏洞. 如修改为: Select * from news where id in (#{id}) 程序
-
mybatis if传入字符串数字踩坑记录及解决
目录 mybatis if传入字符串数字踩坑 正确的写法如下 mybatis if比较字符串相等问题 总结 mybatis if传入字符串数字踩坑 前台页面内容,注意这里的类型为字符串类型的数字 <li> <label>支付类型:</label> <form:select path="payType" class="input-medium"> <form:option value
-
mybatis动态插入list传入List参数的实例代码
mybatis动态插入list的实例代码如下所述: <insert id="savePrpcitemkindList" parameterType="java.util.List"> insert into prpcitemkind (RISKCODE, ITEMKINDNO, FAMILYNO, FAMILYNAME, PROJECTCODE, CLAUSECODE, CLAUSENAME, KINDCODE, KINDNAME, ITEMNO, IT
-
MyBatis中传入参数parameterType类型详解
前言 Mybatis的Mapper文件中的select.insert.update.delete元素中有一个parameterType属性,用于对应的mapper接口方法接受的参数类型.本文主要给大家介绍了关于MyBatis传入参数parameterType类型的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 1. MyBatis的传入参数parameterType类型分两种 1. 1. 基本数据类型:int,string,long,Date; 1. 2. 复杂数据类
-
Mybatis如何传入多个参数(实体类型和基本类型)
目录 Mybatis传入多个参数 1.ProjectController类 2.ProjectAndUserService接口 3.ProjectAndUserServiceImpl实现类 4.ProjectAndUserMapper接口 5.ProjectAndUserMapper.xml Mybatis传入多个参数时,如何处理 方式一 方式二 方式三 Mybatis传入多个参数 1.ProjectController类 Integer oldUserId = getUserIdByUserN
-
MyBatis拦截器:给参数对象属性赋值的实例
该拦截器的作用:在进行增加.修改等操作时,给数据模型的一些通用操作属性(如:创建人.创建时间.修改人.修改时间等)自动赋值. 该实现是在DAO层拦截,即存入DB前最后一层.后经分析,不是很合理,改为在service层拦截,用spring AOP来实现了,该代码遂弃用.不过已经测试可用,记录备忘. package com.development; import java.lang.reflect.InvocationTargetException; import java.util.Date; i
-
Java实现字符串的分割(基于String.split()方法)
目录 前言 一.JDK-1.8-API文档说明(推荐阅读) 二.简单的使用 1.单个字符分隔 2.正则表达式 三.Java源码分析 1.源代码的测试代码 2.源代码运行原理图示 3.解读完代码后的总结(推荐阅读) 四.limit参数使用区别 1.limit=0 2.limit<0 3.limit>0 五.易错点(推荐阅读) 1.分割到第一个字符 2.转义字符\ 3.正则表达式修饰符不可用 总结 前言 本章对Java如何实现字符串的分割,是基于jDK1.8版本中的String.split()方法
-
jQuery setTimeout传递字符串参数报错的解决方法
当你打算调用一些jQuery代码显示隐藏的一个元素,并调用setTimeout()在一段延时之后设置其HTML的内容: 整个页面的代码是这样的. 复制代码 代码如下: <span style="font-size:18px;"><html> <head> <title></title> </head> <body> <a href="#" id='heihei' onclick
-
mybatis多个接口参数的注解使用方式(@Param)
1 简介 1.1 单参数 在 Mybatis 中, 很多时候, 我们传入接口的参数只有一个. 对应接口参数的类型有两种, 一种是基本的参数类型, 一种是 JavaBean . 例如在根据主键获取对象时, 我们只需要传入一个主键的参数即可. 而在插入, 更新等操作时, 一般会涉及到很多参数, 我们就使用 JavaBean . 1.2 多参数 但是, 在实际的情况中, 我们遇到类似这样的情况可能: 接口需要使用的参数多于一个: 接口需要使用的参数又远少于对应 JavaBean 的成员变量, 或者需要
-
python argparse传入布尔参数false不生效的解决
跑代码时,在命令行给python程序传入bool参数,但无法传入False,无论传入True还是False,程序里面都是True.下面是代码: parser.add_argument("--preprocess", type=bool, default=True, help='run prepare_data or not') 高端解决方案 使用可选参数store_true,将上述代码改为: parse.add_argument("--preprocess", ac
随机推荐
- java(jsp)整合discuz同步登录功能详解
- Android编程实现网络图片查看器和网页源码查看器实例
- 使用Python编写基于DHT协议的BT资源爬虫
- 判断客户浏览器是否支持cookie的示例代码
- JavaScript实现打地鼠小游戏
- ASP.NET MVC+EF在服务端分页使用jqGrid以及jquery Datatables的注意事项
- php笔记之:AOP的应用
- JAVA/JSP学习系列之三
- 浅析Python中的多条件排序实现
- Python实现程序的单一实例用法分析
- ASP小偷(远程数据获取)程序的入门教程
- C# Dynamic关键字之:调用属性、方法、字段的实现方法
- node.js使用cluster实现多进程
- MySQL 统计查询实现代码
- 用javascript获取textarea中的光标位置
- win7下IIS7站点页面无法正常显示的解决方法
- python防止随意修改类属性的实现方法
- 微信公众号获取access_token的方法实例分析
- C#应用ToolStrip控件使用方法
- Android 实现右滑返回功能