是否有任何好的utils / frameworks可以为SQL Query生成Java Object?
答案 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);
要创建子查询,请创建一个 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
可以做什么但你究竟想要什么?您是一种简单的方法将对象序列化/反序列化到数据库,并根据主/外键加载它们,还是需要发出非常复杂的查询?