当前位置: 首页 > 专利查询>褚晶晶专利>正文

一种基于Spring实现DAO接口的方法、装置及设备制造方法及图纸

技术编号:24456042 阅读:18 留言:0更新日期:2020-06-10 15:34
本申请属于数据开发领域,公开了一种基于Spring实现DAO接口的方法、装置及设备,通过Spring框架指定扫描包的预定范围,将带预定注解的DAO接口类和FactoryBean建立对应关系,生成相应的动态代理对象存储到缓存库中,若找到该DAO接口类的命令对应的动态代理对象,则执行该命令,若找不到,则根据该命令生成相应的特征值,存储至缓存库中,再执行该命令,最后若该结果集中包含有Convert注解,需要根据Convert注解将结果集转换成相应的目标类型后返回,若该结果集中没有Convert注解,则直接将该结果集返回,保证得到的DAO接口能够同时支持SQL和HQL,进行应用构建时,无需将数据整体迁移,不会产生大量的XML配置文件,管理简洁方便,开发人员只需对开发代码进行维护,提高开发效率。

A method, device and device of realizing Dao interface based on spring

【技术实现步骤摘要】
一种基于Spring实现DAO接口的方法、装置及设备
本申请涉及数据开发
,特别是涉及一种基于Spring实现DAO接口的方法、装置及设备。
技术介绍
DAO模式是标准的J2EE(Java2PlatformEnterpriseEdition)设计模式之一,开发人员使用这个模式把底层的数据访问操作和上层的商务逻辑分开,它的全称是DataAccessObject数据访问对象,典型的DAO的组件分为DAO工厂类、DAO接口类、实现DAO接口的具体类、数据传递对象,具体的DAO类包含了从特定的数据源访问数据的逻辑。iBATIS是一个基于SQL(StructuredQueryLanguage,结构化查询语言)映射支持Java的持久层框架。支持通过DAO接口与XML(ExtensibleMarkupLanguage,可扩展标记语言)映射文件的绑定,自动生成接口实现类,提高开发效率。但也会带来以下问题:(1)iBATIS只支持SQL结构化查询语言。不支持HQL(HibernateQueryLanguage)Hibernate查询语言。(2)基于在iBATIS上构建的应用,需要整体迁移时,成本较高。(3)需要编写XML映射文件,会造成大量的XML配置文件,配置文件过多导致管理变得困难。(4)开发人员不得不同时维护代码和配置文件,开发效率变得低下。
技术实现思路
有鉴于此,本申请提供了一种基于Spring实现DAO接口的方法、装置及设备。主要目的在于解决目前的系统框架构建应用所需成本较高,附带产生的配置文件较多,影响开发效率的技术问题。基于上述技术问题,本专利技术的第一方面提出了一种基于Spring实现DAO接口的方法,所述方法的步骤包括:在Spring.xml配置文件中确定扫描包的预定范围;扫描所述预定范围内的扫描包中带预定注解的DAO接口类,将FactoryBean与所述带预定注解的DAO接口类建立映射关系;生成所述带预定注解的DAO接口类的动态代理对象,并将所述动态代理对象存储至缓存库中;接收DAO接口类的命令,根据所述DAO接口类的命令从所述缓存库中查找对应的动态代理对象,若找到与所述DAO接口类的命令对应的动态代理对象,则执行所述DAO接口类的命令,得到结果集,否则,生成所述DAO接口类的命令对应的特征值存储在所述缓存库中,并执行所述DAO接口类的命令,得到结果集;判断所述结果集中是否包含Convert注解,若是,则从Convert注解的参数中获取所述结果集对应的转换对象的目标类型,将所述结果集转换成所述目标类型,返回转换后的结果集,否则,直接将所述结果集返回。进一步地,所述在Spring.xml配置文件中确定扫描包的预定范围,具体包括:在Spring.xml配置文件中利用BeanDefinitionRegistryPostProcessor确定扫描包的预定范围;为所述扫描包设定对应的注解名称,其中,设定所述扫描包的初始注解名称为AutoDaoImpl;为AutoDaoImpl匹配相应的entityClass参数,利用entityClass参数来对应所述带指定注解的DAO接口类的具体操作的实体类对象。进一步地,所述扫描所述预定范围内的扫描包中带预定注解的DAO接口类,将FactoryBean与所述带预定注解的DAO接口类建立映射关系,具体包括:扫描所述预定范围内的扫描包中带预定注解的DAO接口类;定义ClassPathBeanDefinitionScanner生成BeanDefinition,在BeanDefinition中定义FactoryBean与带预定注解的DAO接口类的映射关系,并为BeanDefinition设置对应的注入模式。进一步地,所述生成所述带预定注解的DAO接口类的动态代理对象,并将所述动态代理对象存储至缓存库中,具体包括:将所述带预定注解的DAO接口类设置成自定义DAO接口;利用Proxy对象和所述自定义DAO接口,生成所述自定义DAO接口的动态代理对象,将所述动态代理对象存储至缓存库中。进一步地,所述生成所述DAO接口类的命令对应的特征值存储在所述缓存库中,具体包括:从所述DAO接口类的命令中获取执行名称,对所述执行名称进行解析,得到对应的返回值;根据所述执行名称确定对应的执行参数,其中,所述执行参数包括:常用参数和回调函数参数,所述回调函数参数中记录有回调函数参数的索引位置;根据所述执行名称从数据中查找对应的执行对象;利用Convert将所述执行对象转换成对应的特定对象类型,其中,所述Convert中设定了各种特征值对应转换的对象类型,以及每种对象类型的转换方案;根据所述执行名称的命名规则,对所述执行名称进行拆分,得到对应的特征值,将所述特征值存储在所述缓存库中。进一步地,所述根据所述执行名称的命名规则,对所述执行名称进行拆分,得到对应的特征值,具体包括:根据所述命名规则将所述执行名称拆分为前缀、中部、后缀、关键词,将拆分得到的前缀、中部、后缀、关键词作为特征值;其中,所述前缀包括但不限于下列任一或组合:保存命令、删除命令、修改命令和查询命令;所述中部为自定义执行业务名称;所述后缀包括但不限于下列任一或组合:查询所有数据命令、根据ID查询命令、多属性关联查询命令、自定义HQL查询命令、自定义SQL查询命令、自定义SQL逻辑查询命令;所述关键词为By,用于将前缀、中部和后缀分开。进一步地,所述执行所述DAO接口类的命令,得到结果集,具体包括:从所述缓存库中查找所述DAO接口类的命令对应的目标特征值,根据所述目标特征值确定对应的执行逻辑;根据所述执行逻辑生成相应的HQL和SQL语句并执行,得到所述结果集。本专利技术的第二方面提出了一种基于Spring实现DAO接口的装置,包括:确定模块、扫描模块、生成模块、查找模块和判断模块依次连接;所述确定模块,用于在Spring.xml配置文件中确定扫描包的预定范围;所述扫描模块,用于扫描所述预定范围内的扫描包中带预定注解的DAO接口类,将FactoryBean与所述带预定注解的DAO接口类建立映射关系;所述生成模块,用于生成所述带预定注解的DAO接口类的动态代理对象,并将所述动态代理对象存储至缓存库中;所述查找模块,用于接收DAO接口类的命令,根据所述DAO接口类的命令从所述缓存库中查找对应的动态代理对象,若找到与所述DAO接口类的命令对应的动态代理对象,则执行所述DAO接口类的命令,得到结果集,否则,生成所述DAO接口类的命令对应的特征值存储在所述缓存库中,并执行所述DAO接口类的命令,得到结果集;所述判断模块,用于判断所述结果集中是否包含Convert注解,若是,则从Convert注解的参数中获取所述结果集对应的转换对象的目标类型,将所本文档来自技高网...

【技术保护点】
1.一种基于Spring实现DAO接口的方法,其特征在于,所述方法的步骤包括:/n在Spring.xml配置文件中确定扫描包的预定范围;/n扫描所述预定范围内的扫描包中带预定注解的DAO接口类,将FactoryBean与所述带预定注解的DAO接口类建立映射关系;/n生成所述带预定注解的DAO接口类的动态代理对象,并将所述动态代理对象存储至缓存库中;/n接收DAO接口类的命令,根据所述DAO接口类的命令从所述缓存库中查找对应的动态代理对象,若找到与所述DAO接口类的命令对应的动态代理对象,则执行所述DAO接口类的命令,得到结果集,否则,生成所述DAO接口类的命令对应的特征值存储在所述缓存库中,并执行所述DAO接口类的命令,得到结果集;/n判断所述结果集中是否包含Convert注解,若是,则从Convert注解的参数中获取所述结果集对应的转换对象的目标类型,将所述结果集转换成所述目标类型,返回转换后的结果集,否则,直接将所述结果集返回。/n

【技术特征摘要】
1.一种基于Spring实现DAO接口的方法,其特征在于,所述方法的步骤包括:
在Spring.xml配置文件中确定扫描包的预定范围;
扫描所述预定范围内的扫描包中带预定注解的DAO接口类,将FactoryBean与所述带预定注解的DAO接口类建立映射关系;
生成所述带预定注解的DAO接口类的动态代理对象,并将所述动态代理对象存储至缓存库中;
接收DAO接口类的命令,根据所述DAO接口类的命令从所述缓存库中查找对应的动态代理对象,若找到与所述DAO接口类的命令对应的动态代理对象,则执行所述DAO接口类的命令,得到结果集,否则,生成所述DAO接口类的命令对应的特征值存储在所述缓存库中,并执行所述DAO接口类的命令,得到结果集;
判断所述结果集中是否包含Convert注解,若是,则从Convert注解的参数中获取所述结果集对应的转换对象的目标类型,将所述结果集转换成所述目标类型,返回转换后的结果集,否则,直接将所述结果集返回。


2.根据权利要求1所述的方法,其特征在于,所述在Spring.xml配置文件中确定扫描包的预定范围,具体包括:
在Spring.xml配置文件中利用BeanDefinitionRegistryPostProcessor确定扫描包的预定范围;
为所述扫描包设定对应的注解名称,其中,设定所述扫描包的初始注解名称为AutoDaoImpl;
为AutoDaoImpl匹配相应的entityClass参数,利用entityClass参数来对应所述带指定注解的DAO接口类的具体操作的实体类对象。


3.根据权利要求1所述的方法,其特征在于,所述扫描所述预定范围内的扫描包中带预定注解的DAO接口类,将FactoryBean与所述带预定注解的DAO接口类建立映射关系,具体包括:
扫描所述预定范围内的扫描包中带预定注解的DAO接口类;
定义ClassPathBeanDefinitionScanner生成BeanDefinition,在BeanDefinition中定义FactoryBean与带预定注解的DAO接口类的映射关系,并为BeanDefinition设置对应的注入模式。


4.根据权利要求1所述的方法,其特征在于,所述生成所述带预定注解的DAO接口类的动态代理对象,并将所述动态代理对象存储至缓存库中,具体包括:
将所述带预定注解的DAO接口类设置成自定义DAO接口;
利用Proxy对象和所述自定义DAO接口,生成所述自定义DAO接口的动态代理对象,将所述动态代理对象存储至缓存库中。


5.根据权利要求1所述的方法,其特征在于,所述生成所述DAO接口类的命令对应的特征值存储在所述缓存库中,具体包括:
从所述DAO接口类的命令中获取执行名称,对所述执行名称进行解析,得到对应的返回值;
根据所述执行名称确定对应的执行参数,其中,所述执行参数包括:常用参数和回调函数参数,所述回调函数参数中记录有回调函数参数的索引位置;
根据所...

【专利技术属性】
技术研发人员:褚晶晶
申请(专利权)人:褚晶晶
类型:发明
国别省市:内蒙;15

相关技术
    暂无相关专利
网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1