MyBatis 是一个强大的持久层框架,支持多种方式将参数传递给 SQL 语句,以实现数据库操作。在使用 MyBatis 进行开发时,正确理解和使用参数传递机制对于构建高效、可维护的应用至关重要。本文将详细介绍 MyBatis 中常见的参数传递方式及其使用场景。
1. 单参数传递
MyBatis 支持将单个参数传递给 SQL 语句,这种方式在简单的查询或操作中非常常见。
1.1 基本数据类型参数
假设我们有一个用户表 users,包含字段 id、name 和 email。下面演示如何通过用户 ID 查询用户信息。
Mapper 接口
package com.example.mybatisdemo.mapper;
import com.example.mybatisdemo.model.User;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM users WHERE id = #{id}")
User selectUserById(int id);
}
XML 映射文件
<select id="selectUserById" resultType="com.example.mybatisdemo.model.User">
SELECT * FROM users WHERE id = #{id}
</select>
2. 多参数传递
当我们需要传递多个参数时,可以使用以下几种方式。
2.1 使用 @Param 注解
使用 @Param 注解可以为每个参数指定一个名称,在 SQL 语句中通过名称引用参数。
Mapper 接口
package com.example.mybatisdemo.mapper;
import com.example.mybatisdemo.model.User;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
public interface UserMapper {
@Select("SELECT * FROM users WHERE name = #{name} AND email = #{email}")
User selectUserByNameAndEmail(@Param("name") String name, @Param("email") String email);
}
XML 映射文件
<select id="selectUserByNameAndEmail" parameterType="map" resultType="com.example.mybatisdemo.model.User">
SELECT * FROM users WHERE name = #{name} AND email = #{email}
</select>
2.2 使用 Map 传递参数
另一种方式是使用 Map 传递参数,这种方式尤其适合参数数量较多的场景。
Mapper 接口
package com.example.mybatisdemo.mapper;
import com.example.mybatisdemo.model.User;
import org.apache.ibatis.annotations.Select;
import java.util.Map;
public

最低0.47元/天 解锁文章
183

被折叠的 条评论
为什么被折叠?



