我遇到的问题,MyBatis需要传入的参数有三个,(list+另外的两个普通参数)
将三个参数封装进实体类里,传参实体类,因为一开始使用了@param(“xxxx”)注解,未对应上xml文件
-
修改collection=“xxxx.userIds"
-
或者不使用@param(”xxxx“)注解
首先明确这个注解是为SQL语句中参数赋值而服务的。
@Param的作用就是给参数命名,比如在mapper里面某方法A(int id),当添加注解后A(@Param("userId") int id),也就是说外部想要取出传入的id值,只需要取它的参数名userId就可以了。将参数值传如SQL语句中,通过#{userId}进行取值给SQL的参数赋值。
-
如果mapper层传输参数为两个或多个属性,建议用@param()方便外部取出所传参数
-
如果mapper层传输参数为一个属性,没必要用,因为就一个,不会认错
-
如果mapper层传输参数为一个实体类,没必要用,会自动解析
-
@Param注解JavaBean对象,SQL语句通过@Param注解中的别名把对象中的属性取出来然后复制
mapper中的方法: public List<User> getAllUser(@Param("user") User u);