<update id="updateByPrimaryKeySelective" parameterType="com.example.pojo.Admin" > update admin <set > <if test="username != null" > username = #{username,jdbcType=VARCHAR}, </if> <if test="password != null" > password = #{password,jdbcType=VARCHAR}, </if> </set> where id = #{id,jdbcType=INTEGER} </update>
时间: 2024-03-22 12:37:30 浏览: 86
MyBatis-03动态SQL-01.<if>元素的使用
这是一个 MyBatis 的更新语句,id 为 updateByPrimaryKeySelective,参数类型为 com.example.pojo.Admin。该语句将会更新 admin 表中主键为 id 的记录。
在该更新语句中,使用了 <set> 和 <if> 标签来动态生成 SQL 语句。其中,<set> 标签用于设置需要更新的列和值,<if> 标签用于判断属性是否为 null,如果不为 null,则将属性名和属性值拼接到 SQL 语句中。
该更新语句只更新 username 和 password 两个列,同时也只更新非 null 的属性值。在实际的更新语句中,会使用 #{property,jdbcType=TYPE} 占位符来插入参数值,从而避免了 SQL 注入的风险。
最终生成的 SQL 语句类似于:
```
update admin set username = ?, password = ? where id = ?
```
其中,? 是 JDBC 的占位符,实际执行时会被替换为传入的参数值。
阅读全文