1. 顺序传参
- 优点:减少代码量
- 缺点:必须按照顺序传参
Mapper代码
User getUserByParam(String phone, String password);
xml代码
<select id="getUserByParam" resultType="com.example.demo.model.User">
select `user_id`,`real_name`,`nick_name`,`sex`,`phone`,`password` from bss_user
where `phone` = #{param1} and `password` = #{param2}
</select>
2. 使用@Param传参
@Param为该参数属性赋予key值- 如果1-4个参数使用该方式,超过推荐map或实体类
mapper代码
User getUserByParam(@Param("key1") String phone, @Param("key2") String password);
xml代码
<select id="getUserByParam" resultType="com.example.demo.model.User">
select `user_id`,`real_name`,`nick_name`,`sex`,`phone`,`password` from bss_user
where `phone` = #{key1} and `password` = #{key2}
</select>
3. 使用Map传参
mapper代码
User getUserByParam(Map<String, Object> params);
xml代码
<select id="getUserByParam" resultType="com.example.demo.model.User">
select `user_id`,`real_name`,`nick_name`,`sex`,`phone`,`password` from bss_user
where `phone` = #{phone} and `password` = #{password}
</select>
4. 使用@Param和Map组合传参
- 如果超过4个参数推荐使用该方式
mapper代码
User getUserByParam(@Param("params") Map<String, Object> params);
xml代码
<select id="getUserByParam" resultType="com.example.demo.model.User">
select `user_id`,`real_name`,`nick_name`,`sex`,`phone`,`password` from bss_user
where `phone` = #{params.phone} and `password` = #{params.password}
</select>
5. 使用实体类传参
mapper代码
User getUserByParam(User user);
xml代码
<select id="getUserByParam" resultType="com.example.demo.model.User">
select `user_id`,`real_name`,`nick_name`,`sex`,`phone`,`password` from bss_user
where `phone` = #{phone} and `password` = #{password}
</select>
6. List传参
mapper代码
User getUserByParam(List<User> paramList);
xml代码
<select id="getUserByParam" resultType="com.example.demo.model.User">
select `user_id`,`real_name`,`nick_name`,`sex`,`phone`,`password` from bss_user
where
<foreach collection="list" item="item" separator=",">
`phone` = #{item.phone} and `password` = #{item.password}
</foreach>
</select>
还可参考以下文章:
参考文章一:https://www.cnblogs.com/mike-mei/p/13265942.html
参考文章二:https://blog.youkuaiyun.com/u014292162/article/details/52079615
本文详细介绍了MyBatis中参数传递的五种常见方式:顺序传参、@Param注解、Map传参、@Param与Map组合及实体类传参,并提供了对应的Mapper和XML代码示例。对于超过四个参数的场景,推荐使用Map或实体类传参以保持代码的清晰和可维护性。
1097

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



