|
|
简单示例 |
简单的参数 |
<selectid="selectUsers"resultType="User"> select id, username, password from users where id = #{id} </select> |
复杂的对象 |
<insertid="insertUser"parameterType="User"> insert into users (id, username, password) values (#{id}, #{username}, #{password}) </insert> |
如果 User类型的参数对象传递到了语句中,id、username和 password属性将会被查找,然后它们的值就被传递到预处理语句的参数中。 |
|
指定确定的数据类型 |
#{property,javaType=int,jdbcType=NUMERIC} |
除非参数对象是一个HashMap,javaType几乎总是可以从参数对象中获取。那么javaType应该被确定,以确保正确的TypeHandler 使用。 |
对于所有可能为空的列,如果 null被当作值来传递,JDBC Type是需要的。(可以通过阅读PreparedStatement.setNull()方法) |
|
自定义 TypeHandler |
#{age,javaType=int, jdbcType=NUMERIC,typeHandler=MyTypeHandler} |
|
对于数值类型,有一个数值范围 |
#{height, javaType=double, jdbcType=NUMERIC,numericScale=2} |
|
字符串替换 |
|
ORDER BY${columnName} |
接受从用户输出的内容并提供给语句中不变的字符串,这样做是不安全的。这会导致潜在的 SQL注入攻击,因此你不应该允许用户输入这些字段,或者通常自行转义并检查。 |