表名不固定,为避免$引起sql注入问题,通过存储过程动态地向表中存入数据

为避免数据库表过大,要求按月分表。当时是先创建了两年的数据库表,然后存储数据的时候,根据当前日期的年月确定存入的数据库表,xml中的插入语句如下:

<insert id="insertCloudSwitch" parameterType="CloudSwitch">
	<selectKey keyProperty="id" resultType="String" order="BEFORE">
      		select REPLACE(UUID(),"-","")
		</selectKey>
       insert into 
       <if test="tableName!=null and tableName!=''">
       ${tableName} 
       </if>
       (id,phone,poldswitch,pnowswitch,uoldswitch,unowswitch,timestamp) 
       values(#{id},#{cloudSwitch.phone},#{cloudSwitch.poldswitch},#{cloudSwitch.pnowswitch},#{cloudSwitch.uoldswitch},#{cloudSwitch.unowswitch},#{cloudSwitch.timestamp})	    
 	</insert>

由于表名tableName是作为参数传进来的,在这里需要用到${tableName}。

由于$存在sql注入的风险,但是表名无法通过#来传,通过查阅资料,决定利用存储过程,把sql语句写到数据库的存储过程中去。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值