Zh0uKal1 2022-07-30 21:22 采纳率: 100%
浏览 81
已结题

关于使用Mybatis预编译报错

问题遇到的现象和发生背景

mysql的版本:5.7.24
mybatis的版本:3.5.5

Mybatis操作mysql数据库使用$没问题而使用#却报错

问题相关代码,请勿粘贴截图

Mapper对应的接口

public interface ListDataMapper {
    ArrayList<ListData> selectThirteen(@Param("table")String table, @Param("page")int page);
}

mapper对应的sql

<mapper namespace="com.supercount.mapper.ListDataMapper">
    <select id="selectThirteen" resultType="ListData">
        select name,REPLACE(score,'.','') as score,num from #{table} order by LPAD(score,7,0) asc limit #{(page-1)*13},13;
    </select>
 
</mapper>

mybatis配置信息

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    
    <typeAliases>
        <package name="com.supercount.pojo"/>
    </typeAliases>

    <environments default="development">
        <environment id="development">
            <transactionManager type="JDBC"/>
            <dataSource type="POOLED">
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                
                <property name="url" value="jdbc:mysql:///db1?useSSL=false&useServerPrepStmts=true&cachePrepStmts=true&useUnicode=true&characterEncoding=UTF-8"/>
                <property name="username" value="root"/>
                <property name="password" value="1948"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        
        <package name="com.supercount.mapper"/>
    </mappers>
</configuration>

运行结果及报错内容

运行结果

img

我的解答思路和尝试过的方法

我使用了$可以解决但是不能防止sql注入

我想要达到的结果

使用#进行预编译可以防止注入漏洞

  • 写回答

3条回答 默认 最新

  • DrHeartless 2022-07-30 23:09
    关注

    由于#{}会给传入的参数加上单引号,所以limit后面使用#{}会报错,同样的还有表名动态注入,模糊查询,批量查询等情况下都只能使用${}。可以在代码层面对传到${}中的参数加以校验预防sql注入问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 8月7日
  • 已采纳回答 7月30日
  • 赞助了问题酬金5元 7月30日
  • 创建了问题 7月30日

悬赏问题

  • ¥15 对于知识的学以致用的解释
  • ¥50 三种调度算法报错 有实例
  • ¥15 关于#python#的问题,请各位专家解答!
  • ¥200 询问:python实现大地主题正反算的程序设计,有偿
  • ¥15 smptlib使用465端口发送邮件失败
  • ¥200 总是报错,能帮助用python实现程序实现高斯正反算吗?有偿
  • ¥15 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败