MyBatis两点注意事项:
一、 parameterType 能够不填, MyBatis 能够经过 TypeHandler 推断出具体传入语句的参数。
二、字符串替换
默认状况下,使用#{}格式的语法, 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>