mybatis如何传参数

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);

这些传参方式可以根据具体的需求和场景灵活选择。

posted @   奥兰王子  阅读(140)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
点击右上角即可分享
微信分享提示