有如上四个java文件和两个xml文件,核心代码分别如下:
UsersMapper.xml:SELECt * FROM users WHERe username=#{username} AND password=#{password}
UsersDao.java:public Users login( String username,String password);
UsersServiceImpl.java:public Users login(String username, String password) {
return usersDao.login(username,password);
}
UsersService.java:public Users login(String username,String password);
Test.java:Users user = usersService.login("Reach","123");
在数据库连接正常的情况下,如果报了标题这样的异常。
有如下四种解决方法:
第一种:使用注解。需要修改的代码如下:
UsersDao.java:public Users login(@Param("username") String username,@Param("password") String password); 且要注意,使用@Param("名称"),此名称要和映射文件里面的#{参数}一致。
第二种:使用数字占位符,需要修改的代码如下:
UsersMapper.xml:SELECt * FROM users WHERe username=#{0} AND password=#{1}
说明:占位符为从0开始,递增的自然数。顺序要与DAO接口中的参数顺序一致。
第三种:使用Map传递多个参数,需要修改的代码如下:
UsersServiceImpl.java:public Users login(String username, String password) {
Map params = new HashMap();
params.put("username",username);
params.put("password",password);
return usersDao.login(params);
}
第四种:使用实体类传递多个参数,代码与“增加修改”类似,略。



