MyBatis 提供了多种传参方式,以适应不同的查询需求。以下是一些常用的传参方法:
1. 单个参数
当查询只需要一个参数时,可以直接传递该参数。
Mapper XML:
xml<select id="findUserById" resultType="User">
SELECT * FROM user WHERE id = #{id}
</select>
Java 接口:
javaUser findUserById(int id);
2. 多个参数
当需要传递多个参数时,可以使用以下几种方法:
使用 Map
传递一个 Map
对象,其中键是参数名,值是参数值。
Mapper XML:
xml<select id="findUserByNameAndAge" resultType="User">
SELECT * FROM user WHERE name = #{name} AND age = #{age}
</select>
Java 接口:
javaUser findUserByNameAndAge(Map<String, Object> params);
Java 调用:
javaMap<String, Object> params = new HashMap<>();
params.put("name", "Alice");
params.put("age", 30);
userMapper.findUserByNameAndAge(params);
使用 @Param 注解
在接口方法参数上使用 @Param
注解来指定参数名。
Mapper XML:
xml<select id="findUserByNameAndAge" resultType="User">
SELECT * FROM user WHERE name = #{name} AND age = #{age}
</select>
Java 接口:
javaUser findUserByNameAndAge(@Param("name") String name, @Param("age") int age);
Java 调用:
javauserMapper.findUserByNameAndAge("Alice", 30);
3. 复杂对象
当需要传递一个复杂对象作为参数时,可以直接传递该对象。
Java 类:
javapublic class UserQuery {
private String name;
private int age;
// getters and setters
}
Mapper XML:
xml<select id="findUserByQuery" resultType="User">
SELECT * FROM user WHERE name = #{query.name} AND age = #{query.age}
</select>
Java 接口:
javaUser findUserByQuery(UserQuery query);
Java 调用:
javaUserQuery query = new UserQuery();
query.setName("Alice");
query.setAge(30);
userMapper.findUserByQuery(query);
4. 使用 @Param 注解传递复杂对象
当传递复杂对象时,也可以使用 @Param
注解来指定参数名。
Mapper XML:
xml<select id="findUserByQuery" resultType="User">
SELECT * FROM user WHERE name = #{userQuery.name} AND age = #{userQuery.age}
</select>
Java 接口:
javaUser findUserByQuery(@Param("userQuery") UserQuery userQuery);
Java 调用:
javaUserQuery userQuery = new UserQuery();
userQuery.setName("Alice");
userQuery.setAge(30);
userMapper.findUserByQuery(userQuery);
这些传参方式可以根据具体的需求和场景灵活选择。
标签:userQuery,Java,name,age,Param,如何,参数,mybatis From: https://www.cnblogs.com/wzihan/p/18123877