zoukankan      html  css  js  c++  java
  • MyBatis 动态参数时需要注意,用$而不是#

    1、字符串替换
    默认情况下,使用#{}格式的语法会导致MyBatis创建预处理语句属性并以它为背景设置安全的值(比如?)。这样做很安全,很迅速也是首选做法,有时你只是想直接在SQL语句中插入一个不改变的字符串。比如,像ORDER BY,可以这样来使用:
    ORDER BY ${columnName}
    这里MyBatis不会修改或转义字符串。
    重要:接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。


    2、特殊符号处理

    在Mybatis的配置文件中经常会用到<、>等符号,在XML的配置文件中会存在问题。可以通过加入<![CDATA[ ....]]>让在标签中的特殊符号不被处理。如:

    <select id="selectNextArticle" resultType="Article">
            SELECT 
                <include refid="cmsArticleColumns"/>
            FROM cms_article a
            <include refid="cmsArticleJoins"/>
            <![CDATA[
            WHERE a.article_id > #{articleId} ORDER BY id DESC LIMIT 1
            ]]>
        </select>

  • 相关阅读:
    函数
    特殊集合
    集合
    数组复习
    数组
    IPython--转
    python 单例模式总结
    拼多多笔试题
    python 创建实例--待完善
    转--算法时间复杂度
  • 原文地址:https://www.cnblogs.com/xiejava/p/15171463.html
Copyright © 2011-2022 走看看