mybatis动态传入表名和字段名问题

mybatis动态传入表名和字段名会有sql注入的危险,如果我指定返回类型是不是就可以解决这个问题?

3个回答

楼上说的差不多了,其实你可以先去看下$ 和# 的区别,第二,客户端输入也不是不可以用$ ,只是会设计到一些列的验证,常见的就是检查关键字,比如and ,insert 等等

wu_0916
竖心旁的情 我们领导也是这样说,实在不行就不用
大约 2 年之前 回复

指定返回类型和sql注入没有关系,返回类型表示这个sql都已经执行了。
动态传入表名和字段名,只要这个字段不是来自用户输入的话,就不会存在sql注入的问题。如果是客户端输入的话,就不能使用$ 符了

wu_0916
竖心旁的情 回复CHAS-许可: 不,我的意思是:我的本来要进行select操作,但动态传入字段时有人想搞事,把它传入insert或者delete语句。
大约 2 年之前 回复
hao18735044791
CHAS-许可 回复竖心旁的情: inster 为什么还要设置实体 况且他也直接返不给你啊 , 你返回个状态不就行了么。
大约 2 年之前 回复
wu_0916
竖心旁的情 我的意思是:比如我设置返回实体类,如果执行insert之类的返回结果不是实体类而报错,而防止这个问题,这样行吗?
大约 2 年之前 回复

如果能明确动态传入的数据类型,可以在SQL里强转。
如果根本就不能确定动态传入的数据类型,那么最好是在后台转成与数据库字段对应的数据类型,再调用SQL。
比较想要玩,就得游戏规则,这对后期系统维护也是好的!

wu_0916
竖心旁的情 测试的说如果有搞事的人就不好了,不是游戏规则的问题
大约 2 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MyBatis动态传入字段名、表名
Mybatis动态传入字段名、表名 以下以字段名为例,此功能是用以实现传入数据库中的字段名和此字段名对应的值,将数据库中对应的记录都取出来 在Dao中 map = new ConcurrentHashMap(); map.put("zdm",zdm);//[color=red]zdm代表的是数据库中字段的名称:如v_dwid[/color] map.put("value",value...
MyBatis动态传入表名,字段名参数的解决办法
要实现动态传入表名、列名,需要做如下修改 添加属性statementType="STATEMENT" 同时sql里的属有变量取值都改成${xxxx},而不是#{xxx} 1. statementType:STATEMENT(非 预编译),PREPARED(预编译)或CALLABLE中的任意一个,这就告诉 MyBatis 分别使用 Statement,PreparedStatement或者Cal...
Mybatis 动态传如表名 字段名 的解决办法
要实现动态传入表名、列名,需要做如下修改1.添加属性statementType="STATEMENT" 2.同时sql里的属有变量取值都改成${xxxx},而不是#{xxx} <delete id="deleteDataBaseTable" parameterType="java.util.List" statementType="STATEMENT"> <foreach collectio
MyBatis,动态传入表名,字段名的解决办法
http://blog.csdn.net/ppby2002/article/details/34433521 今天做项目,遇到的问题就是需求修改数据表的记录,而且字段名都不是固定的,也就是说是需要通过参数传入的, 本来这也不是什么难题,按照平常的JDBC,或者hibernate里也都好实现,可问题是现在项目用的mybatis这个持久层框架,按照我的刚开始的想法初使sql是这
iBatis动态传入表名,字段名
$和#     public List getProjectCodes(String table, String column, String returnColumn, String value) {     Map map = new HashMap();     map.put("table", table);     map.put("column", column);     map.p
ibatis动态传入表名、字段名
 java Map&amp;lt;String,Object&amp;gt; params = new HashMap&amp;lt;String,Object&amp;gt;(); params.put(&quot;tableName&quot;, tableName); params.put(&quot;sidFieldName&quot;, sidFieldName); params.put(&quot;la...
【MyBatis】myBatis动态传入表名、字段名(列名)进行查询
由于分表就涉及到了有相近查询语句只是表名不同的情况,刚开始使用了 <select id="selectById" resultMap="BaseResultMap" parameterType="java.util.Map" > select <include refid="Base_Column_List" /> from TABLENAME = #{openId,jdbcType
MyBatis动态传表名,字段名
要实现动态传入表名、列名,需要做如下修改 添加属性statementType=”STATEMENT” 同时sql里的属有变量取值都改成${xxxx},而不是#{xxx}<mapper namespace="com.vip.collection.biz.repository.collection.DeleteDataByBatchDayRepository" > <resultMap id="
Mybatis之 ${}和#{}区别及动态传入表名
动态传入表名 #和$区别 {} #能防止sql注入,$不能 $方式一般用于传入数据库对象,例如传入表名. MyBatis排序时使用order by 动态参数时需要注意,用$而不是# 传入值是引用,而$是其本身: id = 1, select #{id} from tablename -&amp;gt; select 1 from tablename(引用) id = 1, selec...
关于mybatis动态字段名和表名的问题
mybatis动态字段名和表名会出现sql注入问题,如果我指定返回类型是不是就不会出现select的时候还执行update和delete的注入问题,如果不是有什么解决办法,或者有更好的解决办法。
mybatis动态传入表名,字段名,查询条件进行查询
mybatis动态传入表名,字段名,查询条件进行查询 菜鸟一枚,不足之处请多多指出 BaseMapper.xml // BaseMapper.xml &amp;amp;amp;lt;select id=&amp;amp;quot;findByFiled&amp;amp;quot; resultType=&amp;amp;quot;java.util.Map&amp;amp;quot; statementType=&amp;amp;quot;STATEMENT&amp;amp;quot; &amp;a
MyBatis动态传入表名,字段名参数的解决办法,一种思路
有几种解决方法,我感觉这种最简单 &amp;lt;select id=&quot;getByReselleid&quot; resultType=&quot;java.util.HashMap&quot; parameterType=&quot;java.util.HashMap&quot;  &amp;gt;  SELECT  *    FROM Info  WHERE  ${idname} =#{id}&amp;lt;/select&amp;gt;${resellerid} $将传入...
Mybatis使用statementType="STATEMENT"实现动态传入表名或字段名
mybatis中使用statementType="STATEMENT"实现动态传入字段名时一直报语句错误,但实际上语句并没有毛病,爬了一天坑才找到问题,记录一下。 整条语句中里所有传入的值都要使用${xxx},不能使用#{xxx}。 &lt;select id="listMap" resultMap="Goodsbarcodes" parameterType="java.util.Ma...
Mybatis动态sql传入表名
批量上传到可选数据库表,我是 由于公司要求,进行分表操作, 以致于多个表都是一样的,想到动态sql,能不能传入表名, 于是乎实验了俩天,最终成功了, 由于测试的时候直接拿mapper层来测试,大家写一定要调用service,然后一层一层调用,我这里只是展示而已. &lt;insert id="insertdynamictable" statementType="PREPARED" par...
mybatis 动态传入表名,表名作为参数示例
物理表名称 作为参数 传入 mybatis xml 文件,动态加载sql
mybatis动态注入字段名
今天公司有个需求,要求基于mysql数据库做字段的模糊查询接口,本人比较懒,总想着写的更通用一点,不想一个需求对应一个接口,那么接下来问题来了。 首先,我在原有的参数类的基础上增加了两个成员变量,一个是查询字段的集合(List),另一个是模糊查询输入框的值,如下: 然后,也就是重点来了,在mybatis的查询SQL配置当中select元素当中增加statementType属性,属性值为
mybatis 动态传入列名
SELECT FROM custom_sf_ola_report '' ]]>   AND oyear = ${olaYear}
Mybatis动态传表名
Mybatis动态传表名和传字段参数是一样的,不过表格或者需要返回的字段需要提前确定,因为需要有一个接受类型的类。 Mybatis的部分:<select id="getDataByTable" resultType="com.dl.location.admin.data.Location"> SELECT * FROM #{tables} </select>在这个Locat
表名和字段名作为参数传入存储过程
表名和字段名作为参数传入存储过程或函数rnrnrn帮忙举个例子
Mybatis 动态表名,插入数据
Mapper 中方法: int insert(@Param("tableName") String tableName, @Param("user") User user); Mybatis xml 代码 : insert id="insert" parameterType="c
ibatis 动态传入表名和列名
规格严格-功夫到家-哈工大威海人......博客园社区首页新随笔联系管理订阅 随笔- 138 文章- 2 评论- 10 (总结)ibatis 动态传入表名和列名 项目中需要根据不同的表名和列名生成不同的select语句,我想ibatis这里也应该是用预编译的形式存储???? 不太了解具体原理,反正我知道在用oci库的时候,是可以的;用sprinf(&quot;sql&quot;,&quot;xx&quot;,&quot;xx&quot;)...
12.mysql 字段名表名传入过程,动态语句(tcy)
1. 存储过程变量   2019/2/10 #实例:统计表的行数,验证参数的传入和结果的获取 /*最方便的方法是直接在MySQL Workbench sql语句执行窗口编写*/ drop table if exists tb_1;  create table tb_1 (name varchar(10), age int);  insert into tb_1 values('Tom',...
日记 - mybatis如何在Mapper.xml里动态传入表名
我这里就提供一篇文章就好:http://blog.sina.com.cn/s/blog_4adc4b090102uy51.html  
MyBatis的sql动态传入表名和字段名,并判断是否为空
id:方法名 parameterType:入参类型 resultType:返回类型,默认map statementType:预编译,还是非预编译 预编译:PRESTATEMENT,在系统初始化时就会读取这段sql代码,在系统运行时替换掉其中的变量。 非预编译:STATEMENT,在系统初始化时不会读取这段sql代码,只有系统运行时替换掉其中的变量。 动态传入字段名:使用#{}传递, select...
SSM框架中mybatis采用动态传入表名的方法
最近公司项目用到了SSM框架中mybatis部分需要动态传入表名进行查询,本人也刚接触不久,如有错误,还望指出。 表名字段前半部分是一样的,后面跟上年月来区分,例如  t_yhdr_xn_jcsk_data201801 前端部分采用jQuery datatables插件,通过ajax传入当前的年月,参数用datetime表示: $.ajax({ type : "post",
关于数据库表名,和字段名的问题
能不能把表名,和字段名作为变量来用rnrn例如,我有两个变量 ls_tab_title,ls_tfld_name rn能用下面的update语句吗?其中prj_id是一个固定的字段名rnupdate :ls_tab_titlernset (:ls_tfld_name = :value)rnwhere prj_id = :ls_prj_idrnusing sqlca;rn为什么报错,帮我看看rn谢谢啦 rn
[表名]![字段名]和[表名].[字段名],有没有什么区别
[表名]![字段名]和[表名].[字段名],有没有什么区别
mybatis 传入表名参数,如何判断呢?
比如有 3张表 A,B,C,我要选择性查询这3张表,在java后台传入一个参数name,到xml里,怎么判断?rn贴上xmlrn代码:[code=XML]rn select $colName from $tableName$rn rn dept_id=#deptIDrn rn rn[/code]rn
mybatis动态传递表名和字段
1:mybatis动态传递表名和字段不能用#{}这种  因为这种会被解析为带‘’的字符串 所以要用${}这种, 2:并且不是预编译的形式&amp;lt;select id=&quot;XXXX&quot; resultType=&quot;java.util.Map&quot; statementType=&quot;STATEMENT&quot;&amp;gt; , 3:这里判断参数的时候也要不同,以前是 两遍是双引号 判断null直接判断 &amp;lt;if tes...
MyBatis#{}与${}区别与动态传入字段名问题解决
MyBatis动态传入字段名或表名解决 MyBatis #{}与${}区别
VS2005下动态配置数据源、获取表名及字段名
用户在程序中使用向导配置连接字符串,并获取连接下的所有表名,及每个表的全部字段名
动态参数:表名,字段名,filter条件的存储过程
需要用到动态游标的,通过表名,字段名,filter条件,查询出表的count,sum结果输出的存储过程
ibatis动态传入表名,操作符,参数
我这样一样一个需求rn表 A,表Brnrnselect * from A a jint B b on a.id = b.aid rnrnwhere a.id > 5 and b.code in ('003' ,'004')rnrn如果用ibatis实现的 话rnrn我查询字段,操作符以及 参数 都是动态传入到 sqlmap中的rnrnrn请问怎么实现我说的功能谢谢 rnrnrn
Java ibatis 注解中 动态传入表名
Java ibatis @Select注解中 动态传入表名   举例 @Select(&quot;select card_number cardNumber,name from ${tableName} where card_number=#{cardNumber}&quot;) public IdCard getIdCardByCardNumber(@Param(&quot;cardNumber&quot;) String ...
总结)ibatis 动态传入表名和列名
总结)ibatis 动态传入表名和列名
mybatis多参数传入问题
package com.demo.sys.mapper; import java.util.List; import com.demo.sys.entity.Menu; public interface MenuMapper { public List&amp;lt;Menu&amp;gt; queryRootMenu(String locale); public Li...
SSM框架应用-Mybatis动态调用表名和字段名问题处理方法
在使用Mybatis查询表单中一个字段所有元素:&amp;lt;select id=&quot;list_tab&quot; parameterType=&quot;string&quot; resultType=&quot;Double&quot;&amp;gt;        select #{XXX} from tab1&amp;lt;/select&amp;gt;运行时候出现报错:    There is no getter for property named 'XXX' in...
beetlsql SQL中使用传入的参数作为表名、字段名
需求背景: 前端页面修改数据值、后端根据当前时间获取以年分表的表名、以及当前修改过数据的字段名 SQL代码: updateByComId === * 更新数据 UPDATE #text(tableName)# SET #text(filedName)# = #value#,UPDATE_TIME = SYSTEM WHERE COM_ID = #comId# ...
根据字段名查找表名
oracle中,根据字段名查找表名 记录一下: SELECT table_name FROM USER_TAB_COLUMNS WHERE column_name = '字段名'; SELECT table_name FROM ALL_TAB_COLUMNS WHERE column_name = '字段名';
string 表名得到字段名
select COLUMN_NAME from information_schema.COLUMNS where table_name = 't_log_settings';
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池