MyBatis 参数传递详解
在MyBatis中,参数可以通过多种方式进行传递,以下是一些常用的参数传递方式:
单个参数:
- 如果传递的是单个参数,MyBatis会直接使用这个参数。
多个参数:
- 如果有多个参数,可以通过使用
@Param
注解来命名参数,然后在mapper文件中引用这些命名参数。
- 如果有多个参数,可以通过使用
Java Bean:
- 可以将多个参数封装成一个Java Bean,然后通过一个参数传递整个Java Bean。
Map:
- 可以使用Map来传递参数。
数组或集合:
- 可以传递数组或者集合作为参数,在mapper文件中可以使用foreach进行遍历。
以下是一个使用多种参数传递方式的例子:
<!-- Mapper XML -->
<mapper namespace="com.example.mapper.UserMapper">
<!-- 单个参数 -->
<select id="selectUserById" resultType="com.example.User">
SELECT * FROM users WHERE id = #{id}
</select>
<!-- 使用@Param命名参数 -->
<select id="selectUserByNameAndAge" resultType="com.example.User">
SELECT * FROM users WHERE name = #{name} AND age = #{age}
</select>
<!-- 使用Java Bean -->
<select id="selectUserByUser" resultType="com.example.User">
SELECT * FROM users WHERE name = #{name} AND age = #{age}
</select>
<!-- 使用Map -->
<select id="selectUserByMap" resultType="com.example.User">
SELECT * FROM users WHERE name = #{name} AND age = #{age}
</select>
<!-- 使用数组 -->
<select id="selectUsersByIds" resultType="com.example.User">
SELECT * FROM users WHERE id IN
<foreach item="id" collection="list" open="(" separator="," close=")">
#{id}
</foreach>
</select>
</mapper>
// Mapper 接口
public interface UserMapper {
User selectUserById(int id);
User selectUserByNameAndAge(@Param("name") String name, @Param("age") int age);
User selectUserByUser(User user);
User selectUserByMap(Map<String, Object> params);
List<User> selectUsersByIds(int[] ids);
List<User> selectUsersByIds(List<Integer> ids);
}
在实际使用中,可以根据参数的数量和类型选择最合适的传递方式。
评论已关闭