今天在编写持久层修改密码的代码时,测试时发现parameter not found的情况。
该update语句为:
UPDATE t_user SET password=#{password},modified_user=#{modifiedUser},modified_time=#{modifiedTime} WHERE uid=#{uid}
接口为:
Integer updatePasswordByUid(Integer uid, String password,
String modifiedUser, Date modifiedTime);
查阅资料,有一个解决方案。
将接口的方法改为:
Integer updatePasswordByUid(@Param("uid") Integer uid, @Param("password") String password,
@Param("modifiedUser") String modifiedUser, @Param("modifiedTime") Date modifiedTime);
此注解表示接口Integer uid要和"uid"相对应
注解内的uid表示SQL映射文件中#{}占位符的变量名
方法参数无法识别,具体原因待补充。