一种基于ibatis的SQL脚本动态加载方法

文档序号:6439143阅读:668来源:国知局
专利名称:一种基于ibatis的SQL脚本动态加载方法
技术领域
本发明涉及一种SQL脚本动态加载方法,尤其涉及一种基于ibatis的SQL脚本动态加载方法。
背景技术
目前Java领域的数据库访问方式,使用比较广主要是hibernate和iBATIS 了, 两者都是属于开源软件。iBATIS—词来源于“internet”和“abatis”的组合,是一个由 Clinton Begin在2001年发起的开放源代码项目。最初侧重于密码软件的开发,现在是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects (DAO),同时还提供一个利用这个框架开发的JPetMore实例。相对Hibernate和 Apache OJB等“一站式” ORM解决方案而言,ikitis是一种“半自动化”的ORM实现。所谓 “半自动化”,是相对Hibernate等提供了全面的数据库封装机制的“全自动化” ORM实现而言,“全自动巧冊实现了 POJO和数据库表之间的映射,以及SQL的自动生成和执行。而 ibatis的着力点,则在于POJO与SQL之间的映射关系。也就是说,ikitis并不会为程序员在运行期自动生成SQL执行。具体的SQL需要程序员编写,然后通过映射配置文件,将 SQL所需的参数,以及返回的结果字段映射到指定P0J0。
但目前iBATIS的使用方式比较适合瀑布式开发,不太符合目前的模块化开发思路。图1为现有基于ibatis的SQL脚本动态加载过程示意图,请参见图1,在一个统一的 sqlConfig文件中配置上所有该系统所需要访问的sql脚本文件,在应用启动过程中就将这些脚本加载到缓存中。在用户需要访问数据库时,直接从缓存中获取对应的脚本,如果不存在直接报错。iBATIS有以下几个缺点(1)必须有唯一一个sqlmapConfig配置文件,里面配置上所有需要访问数据库的 sqlmap文件,集中式管理和模块化开发有冲突;(2)在项目开发中,多人共同去维护这一份sqlmapConfig文件,代码提交容易引起冲突;(3)如果是配置多个数据库,那就意味着需要配置多份sqlmapConfig,其他配置项也同样需要多份,配置文件冗余;(4)不能自动识别不同数据库,加载对应数据库类型的sqlmap文件。
因此有必要对现有的基于ibatis的SQL脚本动态加载方法进行改进,能够自动识别不同数据库并加载对应数据库的脚本配置文件,从而实现模块化开发。发明内容
本发明所要解决的技术问题是提供一种基于ibatis的SQL脚本动态加载方法,能够识别不同sql配置文件并自动加载对应的脚本配置文件,从而实现模块化开发。
本发明为解决上述技术问题而采用的技术方案是提供一种基于ibatis的SQL脚本动态加载方法,包括如下步骤a)配置多个独立的sql配置文件,统一设置所有sql配置文件的缓存区;b)脚本调用方在查找sql信息的时候,先去缓存区里面读取sql脚本配置信息,如果存在,启动程序自动加载相应的sql配置文件到缓存区,否则抛出异常,提示出错,并查找匹配的sql配置文件更新缓存区;C)加载后将该文件信息从sql配置文件中去除;d)最后从缓存区中读取对应的sql脚本信息返回给调用方。
上述的基于ibatis的SQL脚本动态加载方法,其中,所述步骤b)采用遍历的方法进行搜索匹配并加载相应的sql配置文件到缓存区。
上述的基于ibatis的SQL脚本动态加载方法,其中,所述多个不同的sql配置文件分散设置在各自的功能模块中。
上述的基于ibatis的SQL脚本动态加载方法,其中,不同类型的数据库采用不同的sql配置文件。
上述的基于ibatis的SQL脚本动态加载方法,其中,所述不同类型的数据库包括 Oracle、Mysql 禾口 Sql Server 数据库。
本发明对比现有技术有如下的有益效果本发明提供的基于ibatis的SQL脚本动态加载方法,通过配置多个独立的sql配置文件,省去了总控sql配置文件,易于管理和实现模块化开发;此外,本发明的SQL脚本动态加载方法根据需要加载相应的配置文件,从而提升了系统性能。


图1为现有基于ibatis的SQL脚本动态加载过程示意图; 图2为本发明基于ibatis的SQL脚本动态加载过程示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的描述。
图2为本发明基于ibatis的SQL脚本动态加载过程示意图。
请参见图2,本发明提供的基于ibatis的SQL脚本动态加载方法包括如下步骤 a)配置多个独立的sql配置文件,统一设置所有sql配置文件的缓存区;b)脚本调用方在查找sql信息的时候,先去缓存区里面读取sql脚本配置信息,如果存在,启动程序自动加载相应的sql配置文件到缓存区,否则抛出异常,提示出错,并查找匹配的sql配置文件更新缓存区;C)加载后将该文件信息从sql配置文件中去除;d)最后从缓存区中读取对应的sql脚本信息返回给调用方。
本发明提供的基于ibatis的SQL脚本动态加载方法,系统启动过程中会按照一定的规则读取配置文件信息,这个配置文件的信息里面记录了 sqlmap的namespace和sql脚本文件的对应关系,一旦加载之后可从内存中将该条对应记录删除,避免重复加载造成系统异常,物理文件中的内容不会被删除。待系统重启后,又会将文件配置信息完整加载到内存中。
本发明提供的基于ibatis的SQL脚本动态加载方法,具有如下优点1)由于可以不同sql配置文件放到每个功能模块中,而不需要一个总控配置文件,可以做到模块化开发,整个系统可以将不同模块组合在一起,也可以随时将模块移除,而不影响其他功能,不需要做一行代码改动;2)自动加载sql配置文件,还可以提升系统性能,只有在需要某个sql配置文件的时候才会去加载,如果某一个功能已经过时无人使用,那么相应的sql配置文件也不会加载到缓存中去,提升性能。
本发明提供的基于ibatis的SQL脚本动态加载方法,优选采用遍历的方法进行搜索匹配并加载相应的sql配置文件到缓存区;多个不同的sql配置文件可分散设置在各自的功能模块中;不同类型的数据库,如Oracle、Mysql和Sql krver数据库,可采用不同的 sql配置文件。按照不同类型的数据库去访问不同的sql配置文件,解析加载到sql缓存中去。加载后将该文件信息从sql配置文件中去除。由于缓存区不是一次创建完成的,而是在系统执行过程中逐步更新的,而且可以保证缓存中的内容都是被使用过的,不会出现已经不使用的内容还继续保留在缓存中,提高缓存命中率。
本发明提供的基于ibatis的SQL脚本动态加载方法,对多数据源的支持比较友好,只需要相同的一份配置文件就可以支持多数据源的访问,并可以依据当前的数据库类型加载相应的sql文件。如uSer_MySQL. xml和usei^Oracle. xml,当指定的数据源是 MySQL的时候,就自动加载user_MySQL. xml这个数据库文件。当系统需要切换数据库的时候,只需要增加其他数据库对应的sql文件即可,其他数据库访问都无需做改动。
虽然本发明已以较佳实施例揭示如上,然其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,当可作些许的修改和完善,因此本发明的保护范围当以权利要求书所界定的为准。
权利要求
1.一种基于ibatis的SQL脚本动态加载方法,其特征在于,包括如下步骤a)配置多个独立的sql配置文件,统一设置所有sql配置文件的缓存区;b)脚本调用方在查找sql信息的时候,先去缓存区里面读取sql脚本配置信息,如果存在,启动程序自动加载相应的sql配置文件到缓存区,否则抛出异常,提示出错,并查找匹配的sql配置文件更新缓存区;c)加载后将该文件信息从sql配置文件中去除;d)最后从缓存区中读取对应的sql脚本信息返回给调用方。
2.如权利要求1所述的基于ibatis的SQL脚本动态加载方法,其特征在于,所述步骤 b)采用遍历的方法进行搜索匹配并加载相应的sql配置文件到缓存区。
3.如权利要求1或2所述的基于ibatis的SQL脚本动态加载方法,其特征在于,所述多个不同的sql配置文件分散设置在各自的功能模块中。
4.如权利要求1或2所述的基于ibatis的SQL脚本动态加载方法,其特征在于,不同类型的数据库采用不同的sql配置文件。
5.如权利要求4所述的基于ibatis的SQL脚本动态加载方法,其特征在于,所述不同类型的数据库包括Oracle、Mysql和Sql krver数据库。
全文摘要
本发明公开了一种基于ibatis的SQL脚本动态加载方法,包括如下步骤a)配置多个独立的sql配置文件,统一设置所有sql配置文件的缓存区;b)脚本调用方在查找sql信息的时候,先去缓存区里面读取sql脚本配置信息,如果存在,启动程序自动加载相应的sql配置文件到缓存区,否则,查找sql配置文件更新缓存区;c)加载后将该文件信息从sql配置文件中去除;d)最后从缓存区中读取对应的sql脚本信息返回给调用方。本发明提供的基于ibatis的SQL脚本动态加载方法,通过配置多个独立的sql配置文件并根据需要加载相应的配置文件,省去了总控sql配置文件,易于管理和实现模块化开发且提升了系统性能。
文档编号G06F17/30GK102521274SQ20111037741
公开日2012年6月27日 申请日期2011年11月24日 优先权日2011年11月24日
发明者杨飞 申请人:上海明想电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1