以下代码是根据ID进行查询  但我不明白原理  特别是SET和GET方法这有点糊涂  哪位大大能帮我从上到下解释下代码 小弟感激不尽  特别是判断语句IF那 多谢 public UserDTO findById(int id) {
UserDTO dto = new UserDTO();
conn = GetConnection.getConnection();
try {
ps = conn.prepareStatement("select * from t_user where id=?");
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
dto.setId(rs.getInt("id"));
dto.setUsername(rs.getString("username"));
dto.setPwd(rs.getString("pwd"));
dto.setSex(rs.getString("sex"));
}
} catch (SQLException e) {

e.printStackTrace();
}
return dto;
} public static void main(String[] args) {
UserDAOfindById dao = new UserDAOfindById();
UserDTO dto = dao.findById(6);
System.out.print(dto.getId());
System.out.print(dto.getUsername());
System.out.print(dto.getPwd());
System.out.print(dto.getSex());
}
}

解决方案 »

  1.   

    这个是对数据库进行更新的操作  最后一句是dao.update(dto);这个也帮忙解释下  感谢public void update(UserDTO dto) {
    conn = GetConnection.getConnection();
    try {
    ps = conn.prepareStatement("update t_user set username=?,pwd=?,sex=? where id=?");
    ps.setString(1, dto.getUsername());
    ps.setString(2, dto.getPwd());
    ps.setString(3, dto.getSex());
    ps.setInt(4, dto.getId());
    boolean s = ps.execute();
    System.out.println(s);
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    // 关闭连接
    GetConnection.closeConnection(ps, conn);
    } } public static void main(String[] args) {
    UserDAOupdate dao = new UserDAOupdate();
    UserDTO dto = new UserDTO();
    dto.setUsername("李小龙");
    dto.setPwd("小龙");
    dto.setSex("男");
    dto.setId(4);
    dao.update(dto);
    }}
      

  2.   

    应该是关系型数据转换为对象数据的一种转换形式,类似Hibernate中get方法的功能。
    先通过id从数据库表t_user中找到所对应的记录,再把找到的记录按各个字段设置到对象UserDTO中,在main方法中通过UserDTO对象输出数据。而UserDTO中的属性和t_user表中的字段是一一对应的
      

  3.   

    public UserDTO findById(int id) {
    UserDTO dto = new UserDTO(); //初始化BEAN
    conn = GetConnection.getConnection();//获得数据库连接
    try {
    ps = conn.prepareStatement("select * from t_user where id=?"); //预处理SQL语句 ?等于是一个标识符
    ps.setInt(1, id);//设置标识符
    rs = ps.executeQuery();执行SQL语句
    if (rs.next()) {//如果SQL语句返回的结果有下一个。就执行
    dto.setId(rs.getInt("id"));//set是设置 get是得到 先赋值 后使用
    dto.setUsername(rs.getString("username"));
    dto.setPwd(rs.getString("pwd"));
    dto.setSex(rs.getString("sex"));
    }
    } catch (SQLException e) {//捕捉数据库异常e.printStackTrace(); //这个我不了解没用过
    }
    return dto;返回bean类
    }public static void main(String[] args) {
    UserDAOfindById dao = new UserDAOfindById();//实例化dao
    UserDTO dto = dao.findById(6); //调用dao.findById(int id)方法
    System.out.print(dto.getId());打印通过findById(int id)得到的ID
    System.out.print(dto.getUsername());打印通过findById(int id)得到的用户名
    System.out.print(dto.getPwd());打印通过findById(int id)得到的密码
    System.out.print(dto.getSex());打印通过findById(int id)得到的性别
    }
    }
      

  4.   

    dao.update(dto);   将封装好的DTO类 传递给dao.uodate执行    这里采用的是封装的概念!
      

  5.   

    先给对象UserDTO设值,把设好值的对象dto传给update方法中的dto。
    update语句中所有参数值都来自于dto这个对象,从main方法看来是更新UserDTO对象
    实际上还是通过更新d_user表来达到这一目的
      

  6.   

    建议楼主看看Hibernate,知道这个框架理解起来就容易多了
      

  7.   

    public void update(UserDTO dto) {
    conn = GetConnection.getConnection();//获取数据库链接
    try {
    ps = conn.prepareStatement("update t_user set username=?,pwd=?,sex=? where id=?");预处理SQL
    ps.setString(1, dto.getUsername());设置标识符 对应的值
    ps.setString(2, dto.getPwd());
    ps.setString(3, dto.getSex());
    ps.setInt(4, dto.getId());
    boolean s = ps.execute();执行SQL语句 返回值保存进 S(布尔型)
    System.out.println(s);//打印s值(非TRUE 既false)
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } finally {
    // 关闭连接
    GetConnection.closeConnection(ps, conn);
    }}public static void main(String[] args) {
    UserDAOupdate dao = new UserDAOupdate();//实例化DAO
    UserDTO dto = new UserDTO();//实例化bean 
    dto.setUsername("李小龙");设置bean属性 
    dto.setPwd("小龙");
    dto.setSex("男");
    dto.setId(4);
    dao.update(dto);//执行更新!传递封装bean
      

  8.   

    public UserDTO findById(int id) {
    UserDTO dto = new UserDTO();  //UserDTO为封装数据的实体类,属性有Id,Username,Pwd,Sex
    conn = GetConnection.getConnection(); //取得数据库连接
    try {
    ps = conn.prepareStatement("select * from t_user where id=?");//执行预处理语句
    ps.setInt(1, id); //对问号赋值
    rs = ps.executeQuery(); //返回结果集
    if (rs.next()) {      //如果结果集中存在则给对象dto赋值
    dto.setId(rs.getInt("id"));
    dto.setUsername(rs.getString("username"));
    dto.setPwd(rs.getString("pwd"));
    dto.setSex(rs.getString("sex"));
    }
    } catch (SQLException e) {e.printStackTrace(); //否则捕捉异常
    }
    return dto;
    }public static void main(String[] args) {
    UserDAOfindById dao = new UserDAOfindById();
    UserDTO dto = dao.findById(6);     //用对象dto调用findById(id)方法
    System.out.print(dto.getId());      //打印属性值
    System.out.print(dto.getUsername());
    System.out.print(dto.getPwd());
    System.out.print(dto.getSex());
    }
    }
      

  9.   

    第一段代码:根据楼主贴出来的代码 UserDTO是一个JAVABEAN(里面有get、set方法)对应数据库的 t_user表findById是一个根据ID查询用户信息的方法。
    ps = conn.prepareStatement("select * from t_user where id=?"); //SQL查询语句
    ps.setInt(1, id);                                              //把传入参数(id)给占位符
    rs = ps.executeQuery();                                        //执行语句

    if (rs.next()) {                     //是否查询到数据?
    dto.setId(rs.getInt("id"));          //把查询到的数据赋值
    dto.setUsername(rs.getString("username"));
    dto.setPwd(rs.getString("pwd"));
    dto.setSex(rs.getString("sex"));
    整体意思就是你通过传入一个 ID查询数据,如果查询到数据,把相应数据set到 UserDTO 中,那你通过UserDTO的get方法就可以得到相应的数据。 不知道明白否,能力就那么多了,只能这么解释了
      

  10.   

    if (rs.next()) { //是否查询到数据?
    dto.setId(rs.getInt("id")); //把查询到的数据赋值    这句话让人很纠结!  查询出来的数据就可以直接赋值 ! 是口误?
    dto.setUsername(rs.getString("username"));
    dto.setPwd(rs.getString("pwd"));
    dto.setSex(rs.getString("sex"));
      

  11.   

    路过
      希望楼主给点分。大伙都讲了,我就没必要。
    不过还是建议楼主去看下jdbc的API,对你会有好处的。