得到你的数据

  大家学习ofbiz的时候,很想找到对等的sql语句,就像学习hibernate时候,想知道hibernate转换成的sql语句。这个 GenericDelegator object可以做到这些. 必须理解到这样一点 delegator 并不像 select statements 一样。因为这些方法返回的是一个objects的list而不是 cursor.同时他们也不像 hibernate使用一样,应为他们并不返回一个具体对象的List ,而是返回一个 关于GenericValue objects的 List。

  select * from table : 你可以查看 delegator.findAll()。
List peopleList = delegator.findAll("PicnicPeople"); 可以得到 PicnicPeople entity的每一条记录. 你获取的 List 是 GenericValue objects。

  select * from table where... : 当你想获取有限的记录,你可以使用delegator.findByAnd()。findByAnd 可以得到一个添加在where后面的field的names和 values的Map (或者 List) 。这是非常好的,这样你不必担心组织 Where... AND.... AND.... 这样的语句。 你会看到使用了很多一个非常实用的工具方法UtilMisc.toMap()来组织map。
Map fieldMap = UtilMisc.toMap("name","Fred");
List peopleNamedFred = delegator.findByAnd("PicnicPeople", fieldMap);

  select * from table1, table2 where table1.pk = table2.fk : outer joins可以使用 delegator.getRelated()。
如果你已经获取到一个 peopleList,
aPerson = (GenericValue)peopleList.get(1);
List peopleDateList = delegator.getRelated("PicnicDates",aPerson);
可以返回一个 List 包含the picnic dates关于aPerson。
to get the entire list of dates for an entire List of people, 你可以通过 peopleList 和执行 delegator.getRelated(PicnicDates, (GenericValue)peopleList.get(x))来得到每个实体在list中。还有其它很多种方法来处理joins: dynamic views和entity views, 但是我今天仅仅讨论delegator。

select * from table1 where name LIKE 'Amy%'可以使用delegator.findByLike()。
例如 :
delegator.findByLike(P。icnicPeople", UtilMisc.toMap("name","Amy%"));

你可能感兴趣的:(sql,Hibernate)