user=queryRunner.query(sql1,new BeanHandler<>(User.class),username); // for (User user1 : list) { // System.out.println(user1.getName() + " :"+user1.getPassword()); // } if (user.getName().equals(username)&&user.getPassword().equals(password)){ return 1;不能这样用码
时间: 2024-02-06 11:04:18 浏览: 135
这段代码中的注释有误,代码中使用了一个 `user` 对象来存储从数据库中查询到的用户信息,但是在判断用户名和密码是否匹配时,使用的是 `user.getName().equals(username) && user.getPassword().equals(password)`,这是不正确的。应该使用查询到的用户对象中的用户名和密码进行匹配,代码应该改成:
```
if (user != null && user.getName().equals(username) && user.getPassword().equals(password)) {
return 1;
}
```
其中,`user != null` 用于保证查询到了用户信息,避免空指针异常。
相关问题
{ User user = null; try { QueryRunner queryRunner = new QueryRunner(DBUtils.getDataSource()); String sql = "select * from user where username=?"; user = queryRunner.query(sql, new BeanHandler<User>(User.class), username); if (user != null) { return "true"; } else { return "false"; } } catch (Exception e) { e.printStackTrace(); } return "none"; }将此段代码中的queryRunner替换
可以使用PreparedStatement对queryRunner进行替换,示例代码如下:
```
User user = null;
try {
Connection conn = DBUtils.getConnection();
String sql = "select * from user where username=?";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(1, username);
ResultSet rs = ps.executeQuery();
if (rs.next()) {
user = new User();
user.setId(rs.getInt("id"));
user.setUsername(rs.getString("username"));
user.setPassword(rs.getString("password"));
user.setAge(rs.getInt("age"));
// ...
}
rs.close();
ps.close();
conn.close();
} catch (Exception e) {
e.printStackTrace();
}
if (user != null) {
return "true";
} else {
return "false";
}
```
需要注意的是,此处需要手动关闭数据库连接,避免资源泄露。同时,代码中也需要手动从ResultSet中读取数据,再赋值给User对象,相对于BeanHandler来说,代码量稍微多一些。
public class UsersDaoImpl implements UsersDao { QueryRunner runner = new QueryRunner(DruidUtils.getDatasource()); @Override public Users login(Users u) { try { return runner.query( "select * from t_user where username=? and password=?", new BeanHandler<Users>(Users.class), u.getUsername(), u.getPassword()); } catch (SQLException e) { e.printStackTrace(); } return null; } }
这是一个 Java 类 `UsersDaoImpl` 的实现,实现了接口 `UsersDao`。代码使用了 Apache 的 `QueryRunner` 类库来执行 SQL 查询,查询的结果通过 `BeanHandler` 转换成了一个 `Users` 对象。该类中只有一个方法 `login`,用于用户登录,接收一个 `Users` 对象作为参数,其中包含了用户的用户名和密码。在方法中,使用 `QueryRunner` 对象执行 SQL 查询,查询语句是 `select * from t_user where username=? and password=?`,查询的结果被转换成 `Users` 对象并返回。如果查询失败,则返回 `null`。该类使用了 Druid 数据库连接池来获取数据库连接。
阅读全文