5.3.2 修改查询函数

接下来我们要准备好查询函数,之前的查询函数是根据角色查询,并没有根据关键字查询。
这里打算把keyword用在nickname的查询,查询所有nickname包含有关键字的user,
把下面的函数复制到UserData.java里:
public static List<UserfindUsersByKeyword(String keyword){
    List<Userresult=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语句不同,后面的代码都是一样的。这一点我们接下来要优化一下。