该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-03-15
yiding_he 写道 非常感兴趣!结果跑到 sf 上一看,一个文件都没有。
主要考虑到工具很小。看samples的代码就基本可以明白了,所以没有写文档。 可以下载源代码/web cvs,看samples下面的例子。 例子都是很简单的,基本上一看就清楚了。 |
|
返回顶楼 | |
发表时间:2007-03-15
所谓动态查询, 一般都是指从 ui 上得来的查询条件吧, 如果是这样, 完全可以实现查询条件的自动装配, 我们的架构中, 增加一个查询条件只要在页面上声明就可以了, 后台自动转换为 Criteria 并叠加到已有条件上, e.g
xml 代码
|
|
返回顶楼 | |
发表时间:2007-03-15
不管怎么说我觉得还是给动态查询带来很大方便的,关注
|
|
返回顶楼 | |
发表时间:2007-03-16
Why not generate the SQL statement with template engine like
Velocity or FreeMarker. select city.name cityName from CITY city where 1=1 #if($cityName) and city.name like #{citytName} #end |
|
返回顶楼 | |
发表时间:2007-03-16
zrq 写道 Why not generate the SQL statement with template engine like
Velocity or FreeMarker. select city.name cityName from CITY city where 1=1 #if($cityName) and city.name like #{citytName} #end 跟我前面那个帖子思路很类似阿,这是具体实现方法了嘛! |
|
返回顶楼 | |
发表时间:2007-03-16
zrq 写道 Why not generate the SQL statement with template engine like
Velocity or FreeMarker. select city.name cityName from CITY city where 1=1 #if($cityName) and city.name like #{citytName} #end 这个方法不错,我同意用这个方法阿,跟我前面法的帖子思路一样,这是具体实现的办法 |
|
返回顶楼 | |
发表时间:2007-03-20
acceptTag 是否可以用一个HashMap代替? 虽然实际是一样的,但是我更倾向于放入HashMap,用遍历HashMap来调用acceptTag,而不是这样直接调用acceptTag。
|
|
返回顶楼 | |
发表时间:2007-08-26
动态拼装我们是这样处理的,不知道这样如何
select * from aaa where 1 = 1 ${and aaa.a = :aa} ${and aaa.b = :bb} 页面传入的查询条件vo中有aa这个参数,那么and aaa.a = ? 会拼接上去,sql编译成 select * from aaa where 1 = 1 and aaa.a = ? 相关的值会自动set到PrepareStatements中 感觉这样好像比用tag来分割看起来舒服 |
|
返回顶楼 | |
发表时间:2007-08-26
Feiing 写道: 所谓动态查询, 一般都是指从 ui 上得来的查询条件吧, 如果是这样, 完全可以实现查询条件的自动装配, 我们的架构中, 增加一个查询条件只要在页面上声明就可以了, 后台自动转换为 Criteria 并叠加到已有条件上, e.g
xml 代码
同时用户可随意选择所要汇总的列以及这些列的显示顺序。 |
|
返回顶楼 | |
发表时间:2007-09-06
动态生成查询语句后,还有一个给hql赋值的问题,比如
select o from User o where 1 = 1 and o.name = :name and o.age = :age and o.height = :height如何给相应的参数赋值呢?也就是下面代码中的 executeQuery(String hql,Map params)方法怎么写? public Object executeQuery(String hql, Map params) { // very easy return null; } public static final QueryTool QT = new QueryTool(new FilterTag("ignore", "<", ">", "</", ">")); private static final String userHql = " <count>select count(*)</count> <list>select o</list> from User o " + " <NOTNULL:departmentCity|NOTNULL:departmentName>join o.department dep</NOTNULL:departmentCity|NOTNULL:departmentName> where 1 = 1 <NOTNULL>and o.name = :userName</NOTNULL> <NOTNULL>and o.desc = :userDesc</NOTNULL>" + " <NOTNULL>and o.sex = :sex</NOTNULL> <GTZERO>and o.age = :age</GTZERO> <GTZERO>and o.height = :height</GTZERO> <NOTNULL>and dep.city = :departmentCity</NOTNULL>" + " <NOTNULL>and dep.name = :departmentName</NOTNULL>"; private static final DynamicQFactory userHqlF = QT.pattern(userHql); private DynamicQ getQuryUserDynamicQ(UserQueryVO vo) { return userHqlF.newDynamicQ().setProperties(vo); } public List queryUsersByDynamicQ(UserQueryVO vo) { DynamicQResult dq = this.getQuryUserDynamicQ(vo).acceptTag("list") .generate(); System.out.println(dq.getQueryStr()); System.out.println(dq.getParams()); return (List) executeQuery(dq.getQueryStr(), dq.getParams()); } |
|
返回顶楼 | |