在使用 Mybatis 時發生了一個 org.apache.ibatis.reflection.ReflectionException: There is no getter for property named 'ids' in 'class java.lang.String' 的異常
案例如下:
Mapper.java 文件代碼:
1 /** 2 * 根據id值,刪除用戶 3 * @param ids 用戶id,可以是多個 4 * @return 刪除成功返回刪除的數據庫記錄數量 5 */ 6 Integer deleteUsers(String ids);
Mapper.xml 文件代碼:
1 <!-- 刪除多個用戶 --> 2 <delete id="deleteUsers" parameterType="java.lang.String"> 3 UPDATE 4 user 5 SET 6 del_flag = 1 7 WHERE 8 user_id in (${ids}) 9 </delete>
解決辦法:
1.在 Mapper.java 文件的抽象方法參數上添加 @Param("ids") 注解
2.在 Mapper.xml 文件中刪除 parameterType 屬性
3.在 Mapper.xml 文件中注入值時使用 param0
4. Mapper.xml 文件中使用 foreach 標簽
1 <!-- 刪除多個用戶 --> 2 <delete id="deleteUsers" parameterType="java.lang.String"> 3 UPDATE 4 user 5 SET 6 del_flag = 1 7 WHERE 8 user_id in 9 <foreach item="item" collection="list" index="index" open="(" close=")" separator=","> 10 #{item} 11 </foreach> 12 </delete>