MyBatis 支持哪些传参数的方法?

MyBatis 提供了多种传参数的方式:

  1. 直接传参:如果我们的SQL语句只有一个参数,那么我们可以直接传递这个参数,然后在SQL语句中使用#{}来引用这个参数。例如:
<select id="selectUserById" parameterType="int" resultType="com.example.User">
  SELECT * FROM user WHERE id = #{value}
</select>

在上面的例子中,我们传递了一个int类型的参数,然后在SQL语句中通过#{value}来引用这个参数。

  1. 使用@Param注解:如果我们的SQL语句有多个参数,那么我们可以使用@Param注解来为每个参数命名,然后在SQL语句中通过这些名字来引用这些参数。例如:
List<User> selectUser(@Param("firstName") String firstName, @Param("lastName") String lastName);
<select id="selectUser" resultType="com.example.User">
  SELECT * FROM user WHERE first_name = #{firstName} AND last_name = #{lastName}
</select>

在上面的例子中,我们为两个参数分别命名为firstNamelastName,然后在SQL语句中通过#{firstName}#{lastName}来引用这两个参数。

  1. 使用Map:我们也可以使用Map来传递多个参数,然后在SQL语句中通过Map的键来引用这些参数。例如:
Map<String, Object> params = new HashMap<>();
params.put("firstName", "John");
params.put("lastName", "Doe");
List<User> users = sqlSession.selectList("com.example.UserMapper.selectUser", params);
<select id="selectUser" resultType="com.example.User">
  SELECT * FROM user WHERE first_name = #{firstName} AND last_name = #{lastName}
</select>

在上面的例子中,我们创建了一个Map,并将两个参数存放在这个Map中,然后在SQL语句中通过#{firstName}#{lastName}来引用这两个参数。

  1. 使用POJO:如果我们的SQL语句有很多参数,那么我们可以创建一个POJO(Plain Old Java Object)来封装这些参数,然后在SQL语句中通过POJO的属性名来引用这些参数。例如:
public class UserQuery {
  private String firstName;
  private String lastName;
  // getters and setters...
}
UserQuery query = new UserQuery();
query.setFirstName("John");
query.setLastName("Doe");
List<User> users = sqlSession.selectList("com.example.UserMapper.selectUser", query);
<select id="selectUser" resultType="com.example.User">
  SELECT * FROM user WHERE first_name = #{firstName} AND last_name = #{lastName}
</select>

在上面的例子中,我们创建了一个UserQuery类来封装参数,然后在SQL语句中通过#{firstName}#{lastName}来引用这两个参数。

这些就是MyBatis支持的传参数的方法。

发表评论

后才能评论