Mybatis的几种传参方式

对象入参

对象需要有对应的get/set方法,#{} 的参数即为User类的属性。

@Update("update user set username = #{username},userAccount = #{userAccount},avatarUrl=#{avatarUrl},gender=#{gender},phone=#{phone},email=#{email},userStatus=#{userStatus},userRole=#{userRole} where id = #{id}")
int updateUser(User user);

@Param 注解入参

适用于多参数入参的情况,使用**@Param** 注解指明参数和变量之间的对应关系。

在 MyBatis 中,如果你想再传入一个额外的参数,可以使用 @Param 注解为额外的参数命名,并在 SQL 中引用这个参数。在你的例子中,假设你想再传入一个名为 extraParam 的参数,你可以这样修改:

java
Copy code
@Update("update user set username = #{username}, userAccount = #{userAccount}, avatarUrl = #{avatarUrl}, gender = #{gender}, phone = #{phone}, email = #{email}, userStatus = #{userStatus}, userRole = #{userRole} where id = #{id} and someColumn = #{extraParam}")
int updateUser(@Param("username") String username,
               @Param("userAccount") String userAccount,
               @Param("avatarUrl") String avatarUrl,
               @Param("gender") int gender,
               @Param("phone") String phone,
               @Param("email") String email,
               @Param("userStatus") int userStatus,
               @Param("userRole") int userRole,
               @Param("id") Long id,
               @Param("extraParam") String extraParam);

在传入对象和普通参数时,对象的#{}的参数需要是对象名.属性名的格式

@Update("update address set uid=#{address.uid}, province=#{address.province}, city=#{address.city}, county=#{address.county}, fulladdress=#{address.fulladdress}, telphone=#{address.telphone}, name=#{address.name}, defaddress=#{address.defaddress} where id=#{id}")
void editAddress(@Param("address") Address address, @Param("id") Long id);

Map对象入参

下标传参

参考文档

MyBatis 中传递多个参数的 4 种方式 - 斯文败类i - 博客园 (cnblogs.com)

MyBatis的使用三(在sql语句中传值) - zwGitOne - 博客园 (cnblogs.com)

问题集锦

解决Mybatis报错:org.apache.ibatis.reflection.ReflectionException: There is no getter for property named-CSDN博客