4.8 映射类——数据库表和java类的一一对应

如何根据主键查询一整条记录呢?例如根据用户名abcd,把abcd的密码、昵称、创建日期,角色等信息都查出来。
这就需要一个类,来保存这些信息,首先创建一个类和Use表一一对应:类的属性和user表的字段一一对应:
public class User{
    private String username;
    private String password;
    private String nickname;
    private String role;
    private String createDate;
    public String getUsername(){
        return username;
    }
    public void setUsername(String username){
        this.username=username;
    }
    public String getPassword(){
        return password;
    }
    public void setPassword(String password){
        this.password=password;
    }
    public String getNickname(){
        return nickname;
    }
    public void setNickname(String nickname){
        this.nickname=nickname;
    }
    public String getRole(){
        return role;
    }
    public void setRole(String role){
        this.role=role;
    }
    public String getCreateDate(){
        return createDate;
    }
    public void setCreateDate(String createDate){
        this.createDate=createDate;
    }
}
可以看出来,这个User类和User表是一一对应的:


接下来,在UserData添加下面的函数:
/**
*根据账号取得用户的所有数据,并保存到一个User对象 * @param username * @return
 */
public static User findUserByUsername(String username){
    //最终返回的user对象
    User user=new User();
    user.setUsername(username);
    // 要执行的sql语句,通过字符串拼接出来
    String SQLTEXT="select * from user where username = '"+username+"'";
    try{
        // 使用上面的DBConifg类的getCon方法,建立一个连接
        Connection con=DBConfig.getCon();
        // 准备执行sql的实体
        Statement stmt=con.createStatement();
        // 执行sql,并把查询结果赋给
        ResultSet rst=stmt.executeQuery(SQLTEXT);
        while(rst.next()){
            // 查询结果,并把结果逐个设置到user对象
            user.setPassword(rst.getString("password"));
            user.setNickname(rst.getString("nickname"));
            user.setCreateDate(rst.getString("create_date"));
            user.setRole(rst.getString("role"));
        }
        // 后使用先关闭原则,关闭各个对象,特别是con如果不关闭,会造成连接泄露
        rst.close();
        stmt.close();
        con.close();
    }
    catch(SQLException e){
        e.printStackTrace();
    }
    return user;
}
1.第6行代码,User user=new User();新建一个User对象,最终返回的数据都将保存在这里。
2.观察第20行到23行代码,这是把查询到的结果取出来,然后设置到user的四个属性:密码,昵称,创建日期,角色

最终使用的时候,就需要一个User对象,接受查询的结果:
public static void main(String[]args){
    User user=UserData.findUserByUsername("abcd");
    System.out.println(user.getUsername()+"\t"+user.getPassword()+"\t"+user.getNickname()+"\t"+user.getCreateDate());
}