java pojo映射_java – 将ResultSet映射到Pojo对象

那真是令人尴尬我已经制作了一个标准的pojo类和它的dao类用于数据检索.我很难理解如何处理Pojo类的自定义查询数据的基本过程.

假设我的用户类是

public class User{

private int userId;

private String username;

private int addressId;

}

public class Address{

private int addressId;

private String zip;

}

public class UserDAO{

public void getUserDetails(){

String getSql = select u.userId, u.username, a.zipcode from user u, address a where u.addressId = a.addressId;

//no pojo class is now specific to the resultset returned. so we can't map result to pojo object

}

}

现在我应该如何使用我的pojo类对其进行建模,就好像使用String来管理这个面向对象的概念消失一样,未来复杂性也会增加.亲切的指导!

更新进一步说明

我们知道我们可以使用相同的pojo类映射相同的表对象,但是当查询被自定义并且返回的数据没有映射到任何特定的类时,那么程序是什么?即我们应该再上一堂课?或者我们应该将这些数据放在String变量中?请举一些例子.

最佳答案 为此,您可以使用

JPA的实现之一.但是,如果您想手动执行,我会给您一个小例子.

UPD:

public class User {

private int userId;

private String username;

private Address address; // USE POJO not ID

}

public class Address{

private int addressId;

private String zip;

List users;

}

public User getUserById(Connection con, long userId) {

PreparedStatement stmt;

String query = "select u.user_id, u.user_name, a.id, a.zip from user u, address a where a.address_id = u.id and u.id = ?";

User user = new User();

Address address = new Address;

try {

stmt = con.prepareStatement(query);

stmt.setLong(1, userId);

ResultSet rs = stmt.executeQuery();

address.setId(rs.getInt("id"));

address.setZip(rs.getString("zip");

user.setId(rs.getInt("id"));

user.setUsername(rs.getString("user_name"));

user.setAddressId(rs.getInt("address_id"));

user.setAddress(address); // look here

} catch (SQLException e) {

if (con != null) {

try {

System.err.print("Transaction is being rolled back");

con.rollback();

} catch (SQLException excep) {

}

}

} finally {

if (stmt != null) {

stmt.close();

}

}

return user;

}

您不应该为该查询执行新的POJO,您应该编写正常的查询.请记住 – 您的对象模型是主要的,DB中的表只是一种保存应用程序数据的方法.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值