【MyBatis】MyBatis SQL代码的抽取方法有几种?

Mybatis中的SQL代码有几种常用的抽取方法:

  1. 使用parameter接收参数:
<select id="findUser" parameterType="String" resultType="User">
  select * from user where name = #{username}
</select>

在代码中设置parameters:

map.put("username", "John");
mapper.selectUser(map);
  1. 使用@param注解指定参数别名:
<select id="findUser" resultType="User">
  select * from user where name = @{name,jdbcType=VARCHAR}  
</select>

设置parameters:

map.put("name", "John");
mapper.selectUser(map);  
  1. 使用@Param注解实际参数名:
<select id="findUser" resultType="User">
  select * from user where name = @username  
</select>

设置parameters:

map.put("username", "John");
mapper.selectUser(map);  
  1. 使用sql片段抽取:
<sql id="selectColumns"> 
  id, name, age 
</sql>

<select id="findUsers" resultType="User">
  select <include refid="selectColumns"/> from users
</include>
  1. 使用property抽取:
<property name="username" value="zhangsan"/>

select * from user where name = ${username}

使用上述几种方式,可以有效减少SQL代码的重复,提高维护性。

  1. 这种抽取方法也适用于Mybatis的where、set、foreach语句。