为SQL查询设计Java对象

时间:2011-03-23 05:17:27

标签: java sql

是否有任何好的utils / frameworks可以为SQL Query生成Java Object?

3 个答案:

答案 0 :(得分:2)

QueryDsl会自动从Hibernate,JPA或JDO类创建查询对象,但也会from your DB schema

  

使用Querydsl SQL查询是   这很简单:

QCustomer customer = new QCustomer("c");

SQLTemplates dialect = new HSQLDBTemplates(); // SQL-dialect
SQLQuery query = new SQLQueryImpl(connection, dialect); 
List<String> lastNames = query.from(customer)
    .where(customer.firstName.eq("Bob"))
    .list(customer.lastName);

它还supports subqueries

  

要创建子查询,请创建一个   SQLSubQuery实例,定义查询   参数来自from,where等,并使用   unique或list来创建子查询,   这只是一种类型安全的Querydsl   查询的表达式。独特的是   用于唯一(单个)结果和   列表结果列表。

query.from(customer).where(
  customer.status.eq(
      new SQLSubQuery().from(customer2).unique(customer2.status.max()))
  .list(customer.all())  
  

另一个例子

query.from(customer).where(  
  customer.status.in(new SQLSubQuery().from(status).where(
    status.level.lt(3)).list(status.id))  
  .list(customer.all())    

答案 1 :(得分:1)

我不知道它会有多大帮助,但是,当你要求使用utils时,我建议你阅读QUERY OBJECT PATTERN (P of EAA, M. Fowler),如果你有时间实现某些东西,这是一个好的开始,否则你可能会寻找任何ORM框架。

答案 2 :(得分:0)

我正在使用扭矩来做到这一点。有一个示例(教程)显示它在http://db.apache.org/torque/releases/torque-3.3/tutorial/step5.html

可以做什么

但你究竟想要什么?您是一种简单的方法将对象序列化/反序列化到数据库,并根据主/外键加载它们,还是需要发出非常复杂的查询?