该帖已经被评为良好帖
|
|
---|---|
作者 | 正文 |
发表时间:2009-04-03
downpour 写道 还是挺有想法的,不过好像除了少敲了几个字母以外,好像看不出什么原创性的东西。不知道能否加上一些动态查询的封装,比如对参数进行判断,当参数为null时,不用在外面再包一层来判断。
不过再怎么说,也比拼SQL的工具来得有想法。 public Selector $eq(String column, Object value) { return $eq(column, value, defaultIgnoreCase, defaultIgnoreBank); } public Selector $eq(String column, Object value, boolean ignoreCase) { return $eq(column, value, ignoreCase, defaultIgnoreBank); } public Selector $eq(String column, Object value, boolean ignoreCase, boolean ignoreBank) { return $createSelector(Condition.EQ, column, value, ignoreCase, ignoreBank, defaultMatch); } 看我的构造 boolean ignoreCase, 是否忽略大小写 默认否 除非设置 boolean ignoreBank 是否忽略空值 默认是 为null 时 这个Selector不生效。 这样的判断应该是最基本 一直都有 呵呵。 HQuery里所有的东西都用的Hibernate提供的API 没有自己发明这个轮子 要说创,那么顶多说的上是模仿 不算创 。为的确实就是"少敲了几个字母" |
|
返回顶楼 | |
发表时间:2009-04-03
pertghost 写道 QBC 一对多时,多方为EAGER加载,查询一方会有自动全连接的问题 不知道楼主是怎么解决这个问题的?
HQuery里没有用到FetchMode.EAGER 类似这样的代码 setFetchMode("orders",FetchMode.EAGER) 关联的持久化类全部是 Criteria.createAlias() |
|
返回顶楼 | |
发表时间:2009-04-03
如果能做到写查询语句 全部有代码提示就好了,包括要查的主对象下的所有字段
|
|
返回顶楼 | |
发表时间:2009-04-03
xiao0556 写道 如果能做到写查询语句 全部有代码提示就好了,包括要查的主对象下的所有字段
我没有理解你的意思 不过 你可以给出伪代码。谢谢 |
|
返回顶楼 | |
发表时间:2009-04-03
楼主 你的东东我大致了解了下 个人认为你的东西只限于项目组内推广使用 我相信大家不会为了少写几个单词而使用你再次封装的东西 而且源码里跳出个$是不是有点别扭
我只喜欢页面上出现${} ,至于后台 我想那就算了 另 我不是打击你啊 我只是说我的看法 没恶意 |
|
返回顶楼 | |
发表时间:2009-04-03
最后修改:2009-04-03
stevensinclair 写道 楼主 你的东东我大致了解了下 个人认为你的东西只限于项目组内推广使用 我相信大家不会为了少写几个单词而使用你再次封装的东西 而且源码里跳出个$是不是有点别扭
我只喜欢页面上出现${} ,至于后台 我想那就算了 另 我不是打击你啊 我只是说我的看法 没恶意 理解 HQuery的最初设计也是解决部门内部开发的问题。 再一个就是让项目做到尽量简洁. 再者,同样的事情 少写几行代码不是更好。 因为设计的另一个 [url="http://www.iteye.com/topic/232885" ]guiceSide[/url]也是为了简洁. 但是如果要集成的话也很简单,它可以代替dao. 对于$这个 在JAVA里出现 仁者见仁了 |
|
返回顶楼 | |
发表时间:2009-04-04
期待进一步完善,我觉得这个对于熟悉jquery的java的开发者来说,会是一个很好的开源项目
|
|
返回顶楼 | |
发表时间:2009-04-04
最后修改:2009-04-04
stevensinclair 写道 我相信大家不会为了少写几个单词而使用你再次封装的东西 而且源码里跳出个$是不是有点别扭
我只喜欢页面上出现${} ,至于后台 我想那就算了 另 我不是打击你啊 我只是说我的看法 没恶意 我赞同stevensinclair的观点:不为了少写单词,引入另外一种“语法”。楼主的改造,有些类似一种新的语法了(区别与java的语法)。 我赞同楼主创新精神、效率精神:write less, do more! 确实很多代码非常类似,又不好抽取。呵呵,但换个思路,大部分还是能够抽取出来的。比如Spring的jdbc template。呵呵,Spring之前,我当时也搞了个template。很多Jdbc操作代码变的简单了。 我有个建议和楼主探讨一下: 使用类似JAVA API的方式,提供这种write less, do more! 这样的好处是: 1,让广大java初学者不至于迷茫,也让我这样爱偷懒的编程者(我也不大喜欢学习新语法)有福; 2,用有意义的词做api,比这种语法更有表现意义。(你的语法已经有表现意义了,我只是觉得可以更有表现意义些) 3,用api调试起来会更方便一些。 例如您的update例子,是否可以这么改造一下(也不知道是否对,期望指正): public static void update( Collection entities, DetachedCriteria dc ) { ... } |
|
返回顶楼 | |
发表时间:2009-04-05
metadmin 写道 我赞同stevensinclair的观点:不为了少写单词,引入另外一种“语法”。楼主的改造,有些类似一种新的语法了(区别与java的语法)。 我赞同楼主创新精神、效率精神:write less, do more! 确实很多代码非常类似,又不好抽取。呵呵,但换个思路,大部分还是能够抽取出来的。比如Spring的jdbc template。呵呵,Spring之前,我当时也搞了个template。很多Jdbc操作代码变的简单了。 我有个建议和楼主探讨一下: 使用类似JAVA API的方式,提供这种write less, do more! 这样的好处是: 1,让广大java初学者不至于迷茫,也让我这样爱偷懒的编程者(我也不大喜欢学习新语法)有福; 2,用有意义的词做api,比这种语法更有表现意义。(你的语法已经有表现意义了,我只是觉得可以更有表现意义些) 3,用api调试起来会更方便一些。 例如您的update例子,是否可以这么改造一下(也不知道是否对,期望指正): public static void update( Collection entities, DetachedCriteria dc ) { ... } 1.对于这种“新的语法”确实对于一些人来说 需要花时间去理解去学习,但是对于JQuery用户来说我觉得能迅速掌握,包括当初我开发这个的时候基本的方法名称,参数传递方式都是按照JQuery来的 2.HQuery现在我还在内部测试阶段,基本功能都已经完成,准备看看有没有什么性能,线程,和使用的优化,接着生成JavaDocs 让大家能尽快试用,至于有用的词语可待我API出来以后大家看看 并提建议。 3.update例子,我个人觉得 如果改造成传2个参数的Collection entities, DetachedCriteria dc方法 那么又回到最初的模式去了,dc又需要自己构造,entities也同样。而且又有一部分人需要学习dc的构造 类似如上代码 HQuery $($eq("deptName","HQuery")).save(Entity.class); 省去2点 1 DC的构建在$eq("deptName","HQuery")已经完成 2 entities在save方法执行前会去判断是否需要从数据库进行加载 这也是自动完成 3 至于SAVE方法调用的是session.saveOrUpdate();这也是我个人使用的原因 因为大部分时候我没有用到session.save() session.update() 而是直接saveOrUpdate 而在封装时候以save方法名称而已 谢谢你的建议 |
|
返回顶楼 | |
发表时间:2009-04-05
nbkangta 写道 期待进一步完善,我觉得这个对于熟悉jquery的java的开发者来说,会是一个很好的开源项目
恩 对于jquery的使用者来说, 应该对HQuery的语法会比较容易接受。 会进一步完善的。 |
|
返回顶楼 | |