5.3.2 修改查询函数
接下来我们要准备好查询函数,之前的查询函数是根据角色查询,并没有根据关键字查询。
这里打算把keyword用在nickname的查询,查询所有nickname包含有关键字的user,
把下面的函数复制到UserData.java里:
public static List<User> findUsersByKeyword(String keyword){ List<User> result=new ArrayList<User> (); // 要执行的sql语句,通过字符串拼接出来 String SQLTEXT="select * from user where nickname like '%"+keyword+"%' limit 10;"; try{ // 使用上面的DBConifg类的getCon方法,建立一个连接 Connection con=DBConfig.getCon(); // 准备执行sql的实体 Statement stmt=con.createStatement(); // 执行sql,并把查询结果赋给rst ResultSet rst=stmt.executeQuery(SQLTEXT); while(rst.next()){ // 查询结果,在这里是查询字段为password的值 String username=rst.getString("username"); String password=rst.getString("password"); String role1=rst.getString("role"); String nickname=rst.getString("nickname"); String createDate=rst.getString("create_date"); User user=new User(); user.setUsername(username); user.setPassword(password); user.setNickname(nickname); user.setCreateDate(createDate); user.setRole(role1); result.add(user); } // 安装后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露 rst.close(); stmt.close(); con.close(); } catch(SQLException e){ e.printStackTrace(); } return result;}和之前的findUsersByRole相比,我们会发现,出了执行的sql语句不同,后面的代码都是一样的。这一点我们接下来要优化一下。