MyBatis两点注意事项:
1、 parameterType 可以不填, MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数。
2、字符串替换
默认情况下,使用#{}格式的语法, MyBatis 会创建预处理语句属性并安全地设置值(比如?)。这样做更安全、更迅速,通常也是首选做法,不过有时你只是想直接在 SQL 语句中插入一个不改变的字符串。比如,像 ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这种方式 MyBatis 不会修改或转义字符串。
以这种方式接受从用户输出的内容并提供给语句中不变的字符串是不安全的,会导致潜在的 SQL 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。
所以不要采用这种方式:
1、 parameterType 可以不填, MyBatis 可以通过 TypeHandler 推断出具体传入语句的参数。
2、字符串替换
默认情况下,使用#{}格式的语法, MyBatis 会创建预处理语句属性并安全地设置值(比如?)。这样做更安全、更迅速,通常也是首选做法,不过有时你只是想直接在 SQL 语句中插入一个不改变的字符串。比如,像 ORDER BY,你可以这样来使用:
ORDER BY ${columnName}
这种方式 MyBatis 不会修改或转义字符串。
以这种方式接受从用户输出的内容并提供给语句中不变的字符串是不安全的,会导致潜在的 SQL 注入攻击,因此要么不允许用户输入这些字段,要么自行转义并检验。
所以不要采用这种方式:
<!-- update -->
<update id="update" parameterType="DictItem">
update dict_item set
name='${t.name}',
code='${t.code}',
remark='${t.remark}'
where
id='${t.id}'
</update>
要采用这种方式:
<!-- update -->
<update id="update" >
update dict_item set
name=#{t.name},
code=#{t.code},
remark=#{t.remark}
where id=#{t.id}
</update>