[发明专利]Spring data JPA实现动态查询的方法在审
申请号: | 201410077357.X | 申请日: | 2014-03-04 |
公开(公告)号: | CN103870555A | 公开(公告)日: | 2014-06-18 |
发明(设计)人: | 逯利军;钱培专;汪金忠;林强;李克民;宋聚平;卢天华 | 申请(专利权)人: | 赛特斯信息科技股份有限公司 |
主分类号: | G06F17/30 | 分类号: | G06F17/30 |
代理公司: | 上海智信专利代理有限公司 31002 | 代理人: | 王洁;郑暄 |
地址: | 210042 江苏省南京*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | spring data jpa 实现 动态 查询 方法 | ||
技术领域
本发明涉及计算机技术领域,尤其涉及动态查询领域,具体是指一种Spring data JPA实现动态查询的方法。
背景技术
Spring data JPA是指一种Spring数据持久化架构,是Spring(一个开源框架,为了解决企业应用程序开发复杂性而创建)基于ORM(Object/Relation Mapping,对象关系映射)框架、JPA(Java Persistence API,存取Java关系数据的企业级标准,JPA通过JDK5.0注解或XML描述对象-关系表的映射关系,并将运行期的实体对象持久化到数据库中)规范的基础上封装的一套JPA应用框架,是一种企业级Java的现代数据访问技术,该技术较完美地将Spring的易用性和JPA的强大数据访问功能结合起来,开发者在使用Spring data(是一个用于简化数据库访问,并支持云服务的开源框架,针对关系型数据库、KV数据库、Document数据库、Graph数据库、Map-Reduce等一些主流数据库,采用统一技术进行访问,并且尽可能简化访问手段的技术)时,连仅剩的实现持久层业务逻辑的工作都省了,唯一要做的,就只是声明持久层的接口,其他都交给Spring Data JPA来帮你完成!
但是Spring data JPA还是有美中不足的地方,就是缺少对动态查询功能。在Spring data中,无论是命名查询还是约定查询,无论你传递的参数是否为空,框架给你构造的查询条件都是一样的。
但是在实际应用中,很多场景都是需要进行动态查询的,尤其是页面查询功能。在开发Web应用时,页面中会有一系列的查询条件,如果你输入了查询值,就要把该条件加入到查询语句中,否则,忽略该条件。
如果使用传统技术来进行编程,无论使用Hibernate(一种开放源代码的对象关系映射框架)还是JDBC(Java Data Base Connectivity,Java数据库连接),都需要写大量的逻辑来对查询条件进行判断,并且还要根据返回对象的属性从查询结果中取值、转换。编程不仅繁琐易错,而且后续的可维护性也不强。不具备通用性和灵活性。
Mybatis3(支持普通SQL查询、存储过程和高级映射的优秀持久层框架)中比较强大的 功能之一就是动态SQL(Structured Query Language,结构化查询语言)语句,类似于脚本语句一样动态进行SQL语句的配置,可以解决这类问题。但是一来这个需要使用Xml来进行配置,并且还是需要写比较复杂的脚本,另外整个编程要使用Mybatis的架构,对于使用hibernate或者JPA架构的开发团队是不适用的。
发明内容
本发明的目的是克服了上述现有技术的缺点,提供了一种能够实现只需要进行接口方法定义声明、而无需进行任何实际编码逻辑的实现、增强软件的维护性、提高软件开发的生产力、具有更广泛应用范围的Spring data JPA实现动态查询的方法。
为了实现上述目的,本发明的Spring data JPA实现动态查询的方法具有如下构成:
该Spring data JPA实现动态查询的方法,其主要特点是,所述的方法包括以下步骤:
(1)采用基于Spring FactoryBean创建的动态查询确认类判断被调用的接口方法是否需要进行动态查询,如果是,则继续步骤(3),否则,继续步骤(2);
(2)采用原Spring data框架处理该被调用的接口方法,然后结束退出;
(3)采用基于Spring FactoryBean创建的动态JPA查询类创建动态查询语句;
(4)所述的动态JPA查询类将所述的动态查询语句发送至JPA框架;
(5)所述的动态JPA查询类将JPA框架的查询结果转换成指定类型的返回对象。
较佳地,所述的判断被调用的接口方法是否需要进行动态查询,具体为:
判断被调用的接口方法是否进行了动态JPA查询类的注解。
较佳地,所述的动态JPA查询类创建动态查询语句,具体为:
(31)所述的动态JPA查询类根据接口方法中的参数定义以及进行接口方法调用的实际传递参数值创建动态查询语句中的条件语句。
更佳地,所述的根据接口方法中的参数定义以及进行接口方法调用的实际传递参数值创建动态查询语句中的条件语句,包括以下步骤:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于赛特斯信息科技股份有限公司,未经赛特斯信息科技股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201410077357.X/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种水泥熟料及制备方法
- 下一篇:一种电磁水处理设备