`
ffychina
  • 浏览: 8790 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

JQuery的启发-教你如何二次处理及优化IBatis和Hibernate的查询结果集

阅读更多
不知不觉地习惯上了的JQueryr的简洁,觉得java开发中有很多地方都太死板了,很多JAVA新手都照葫芦画瓢,别人怎么写就跟着怎么写,缺乏自己的独立判断能力,尽管在我自己的ORM框架中已经有了对输出业务对象结果集(即pojo对象的resultset化)的二次处理,如distinct,sum,sort,group,filter等处理,但是经常要面对的是已经写好的SSH或SSI这类的java开发框架,Hibernate和IBatis框架几乎都是清一色的返回List<T>就完事了,其他的都要程序员自己实现,但业务总是复杂多变的,如系统对接或分布式应用以及优化性能和减少数据库IO操作时都不可避免地对数据集进行二次处理, 光从数据库返回的对象集是绝对不够的,对这些javabean的二次处理在所难免,天天对着那堆for和if实在让我觉得一点创意都没有,我花了两天时间写了一个EasyQuery的对象,实现对List<T>和Object[]的处理,在这实现过程中,sort和distinct,sum这些都很好实现,最复杂的就是filter,以前也实现了Expression对象,调用方法类似于:
memberResultSet.filter(Filter.create("name","张三")),
但是条件一旦复杂,而且还有OR判断时,表达式就会很长,类似于:
Expression e1=new RowExpression("name","张三");
Expression e2=new RowExpression("level","in",1,2,3,4);
Condition cond=Filter.create(new Expressions(e1,e2,e3).setOr(true));
memberResultSet.filter(cond);
如果条件再复杂一些,就写得更长更长了,
但是现在喜欢上JQuery的简洁,不想再写这么长的语句了,用一行文字表达:
memberResultSet.filter("name=张三 or (level=[1,2,3,4] and age<60)");
或:
new EasyQuery<Member>(memberList).filter("name=张三 or (level=[1,2,3,4] and age<60)");
把JQuery的*=, ^=, $=,!= 与 SQL的 or, and 和Java的||,&&等简洁的表达式结合在一起,这样看起来就很舒服了。并兼容Expression的写法,这样的话程序员喜欢哪种写法都行。
这种描述式的写法大大减少IF和For这类过程式写法,可以把几十行的代码缩短到几行,而且一眼就看懂这几行代码的意图,非常优雅。大家有空也可以试一试在JAVA开发中使用,说不定会喜欢上哦。附上源代码供大家学习交流。如有错误,或有更好的想法和建议欢迎指教。
0
0
分享到:
评论

相关推荐

    iBatis和Hibernate的区别

    - iBatis提供了数据库查询结果到Java对象的自动绑定功能,但底层的数据访问逻辑仍然需要手动编写。 - iBatis支持更细粒度的数据库操作优化,比如针对特定字段的更新或查询。 - **应用场景**: - 当项目的需求对...

    ibatis和hibernate的简单介绍

    ### ibatis和Hibernate的简单介绍 #### 一、ibatis简介 ibatis是Apache软件基金会的一个开源项目,它提供了一种轻量级的Java持久层框架。ibatis的核心功能是将SQL语句与Java代码分离,使开发人员可以更加专注于...

    ibatis和hibernate的区别

    在Java开发中,ibatis和Hibernate都是常见的对象关系映射(ORM)框架,它们简化了数据库操作,将Java对象与数据库表之间的映射关系抽象出来,使得开发人员可以使用面向对象的方式处理数据。然而,两者在设计理念和...

    ibatis 与hibernate之间的比较优点和缺点

    本文将深入探讨两个流行的 ORM 工具——Hibernate 和 iBatis(现称 MyBatis),分析它们的特点、优势及局限性,以帮助开发者根据项目需求选择最合适的工具。 #### Hibernate **简介:** Hibernate 是一个全面的 ...

    struts2-spring-ibatis-hibernate(hibernate与ibatis集成)

    Hibernate 提供了强大的ORM能力,可以自动处理对象的持久化,而iBatis则允许更精细的SQL控制,尤其在复杂的查询和性能优化时更有优势。 在这个项目中,可能的实现方式是: 1. **配置Spring**:Spring作为整个项目...

    IBatisVSHibernate

    标题 "IBatisVSHibernate" 暗示了我们将探讨两个知名的Java持久层框架——IBatis和Hibernate之间的差异和特点。这两个工具都是用于简化数据库操作的框架,但在设计理念和使用方式上有所不同。 **IBatis** 是一个轻...

    选用ibatis和hibernate的区别

    在选择Java持久化框架时,Ibatis和Hibernate是两个常用的选择。它们各有特点,适用场景也有所不同。以下是对两者的基本功能、使用步骤以及差异的详细分析: **Hibernate** 是一个全面的对象关系映射(ORM)框架,它...

    ibatis与hibernate的区别

    - **iBatis:** 在iBatis中,虽然也支持对象关系映射,但它更多地依赖于SQL语句和结果集的映射。这种映射方式更加灵活,但在某些情况下可能会增加代码的复杂度。 **3. 性能考虑** - **Hibernate:** Hibernate在...

    apache开源项目源码ibatis-3-core-src-3.0.0.227(ibatis框架java源程序)

    apache开源项目源码ibatis-3-core-src-3.0.0.227 ibatis框架java源程序 spring,struts,hibernate,ibatis,框架源码 各种ibatis框架应用源码,你会从中得到意想不到的效果! apache开源组织开发的开源项目源码,其...

    Ibatis和Hibernate的分析比较

    这为优化查询和处理复杂SQL提供了更大的灵活性。在Ibatis中,SqlMapClient是主要的持久层操作对象,类似Hibernate的Session,但更注重SQL的控制权交给开发者。 两者的区别在于: 1. 自动化程度:Hibernate提供全面...

    ibatis和hibernate配置以及比较

    映射文件中包含具体的SQL语句和结果集映射,使得数据与Java对象之间能够进行绑定。 相比之下,Hibernate是一个更为全面的ORM框架,它提供了更高级的功能,如自动对象关系映射、第一级缓存、第二级缓存等。Hibernate...

    mybatis,ibatis,hibernate 显示查询SQL

    它不仅处理SQL的生成,还支持第二级缓存和查询语言(HQL),使得数据库操作更加面向对象。为了显示查询SQL,Hibernate 提供了`hibernatetool`,可以生成SQL脚本,或者通过配置`logging.level.org.hibernate.SQL`来打印...

    Spring MVC+Hibernate&Ibatis学习 例子 教程

    其主要特性包括:对象-关系映射、事务管理、第二级缓存支持和HQL(Hibernate查询语言)。 **iBatis** 则是一个轻量级的数据访问层框架,它介于Java代码和SQL之间,提供动态SQL支持。与Hibernate不同,iBatis并不...

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis

    Struts2+Spring+Hibernate和Struts2+Spring+Ibatis是两种常见的Java Web应用程序集成框架,它们分别基于ORM框架Hibernate和轻量级数据访问框架Ibatis。这两种框架结合Spring,旨在提供一个强大的、可扩展的、易于...

    对IBatis分页的改进,使ibatis支持hibernate式的物理分页

    公司的大部分项目都开始使用IBatis作为O/R Mapping了,但是在使用的过程中也发现了很多不方便和存在争议的地方,其中一个不方便的地方就是分页,目前的处理方式都是在sqlMap中写针对特定数据库的物理分页Sql语句,对于...

    spring与hibernate以及ibatis集成的实例和具体配置图解

    在IT行业中,Spring、Hibernate和Ibatis是三个非常重要的框架,它们各自在不同的领域发挥着重要作用。Spring是一个全面的后端开发框架,提供依赖注入、AOP(面向切面编程)、MVC(模型-视图-控制器)等功能;...

    ibatis,hibernate 中文参考文档

    其核心特性包括实体管理、事务处理、缓存策略和HQL(Hibernate Query Language),这是一种面向对象的查询语言,类似于SQL但更加面向对象。Hibernate提供了丰富的API,使得开发者可以方便地进行对象的创建、读取、...

    springmvc_hibernate_ibatis_jdbc

    标题中的"springmvc_hibernate_ibatis_jdbc"指的是一个整合了SpringMVC、Hibernate、iBatis和JDBC这四种关键技术的Java应用框架。这个框架旨在提供一个全面且强大的解决方案,便于开发人员进行Web应用程序的构建。 ...

    Struts-Spring-Hibernate-MySql-JDK-ibatis

    `hibernate api帮助文档.chm`可能包括实体管理、会话工厂、查询语言HQL和 Criteria API等内容。 4. JDK:Java Development Kit,是Java开发所需的工具集合,包括JRE(Java运行环境)、编译器javac、Javadoc、JVM...

Global site tag (gtag.js) - Google Analytics