专利名称:数据库操作命令的处理方法及装置的制作方法
技术领域:
本发明涉及计算机技术领域,具体而言,涉及一种数据库操作命令的处理方法及
直O
背景技术:
本发明涉及数据库数据命令的处理方法的封装,为开发人员提供一种通用的数据 库操作的方法,保证数据层操作的可重用性,统一性,从而保证系统的稳定。在项目开发的过程当中,项目组开发成员的编程风格差异和数据库操作语句SQL 的灵活性给项目组带来了越来越多的操作和维护难度。比如从user表中取出所有数据, 有的人会写成select*fromuser ;有的人会写成select all from user ;有的人会写Select Name (所有的字段)from user。虽然在操作中不会有任何的错误,但在其他人读程序的过程时就会产生不好的感 觉,同时会产生冗余的代码,如果这种程序差异在项目中的数量级很多,那么在开发的过程 当中程序就会出现各种各样的风格,维护的难度大大增加。目前,对于数据库操作封装用的最广的是Hibernate,优缺点如下。优点包括抛 弃了数据库中心的思想,完全的面向对象思想,不需要数据库知识,项目成员入门门槛低; 缺点包括在大量多表、复杂查询下难以驾驭,需要很深厚的功底;调试困难,不容易上手; 映射复杂,集成环境比较烦锁。针对相关技术中对数据库的操作比较复杂的问题,目前尚未提出有效的解决方案。
发明内容
针对相关技术中对数据库的操作比较复杂的问题而提出本发明,为此,本发明的 主要目的在于提供一种数据库操作命令的处理方法及装置,以解决上述问题。为了实现上述目的,根据本发明的一个方面,提供了一种数据库操作命令的处理 方法。根据本发明的数据库操作命令的处理方法包括对数据库操作命令进行封装;对 封装后的数据库操作命令进行调用。优选地,在对数据库操作命令进行封装之前,方法还包括接收数据库操作命令。优选地,数据库操作命令包括以下种类之一插入操作命令、修改操作命令、删除 操作命令、查询操作命令。优选地,在数据库操作命令为插入操作命令、修改操作命令和删除操作命令之一 的情况下,方法还包括在执行数据库操作命令时判断是否存在异常;在存在异常的情况 下,则进行数据回滚;在不存在异常的情况下,则提交数据。优选地,在提交数据之后,方法还包括返回对封装后的数据库操作命令进行调用 的执行结果。
优选地,在数据库操作命令为查询操作命令的情况下,方法还包括在执行数据库 操作命令时判断是否存在异常;在不存在异常的情况下,则返回执行查询操作命令的结果。优选地,对封装后的数据库操作命令进行调用包括创建数据库的实体类。优选地,对封装后的数据库操作命令进行调用包括设置用于调用的以下条件调 用数据库操作命令的表名、需要操作的字段、以及操作种类。为了实现上述目的,根据本发明的另一方面,提供了一种数据库操作命令的处理装置。根据本发明的数据库操作命令的处理装置包括封装模块,对数据库操作命令进 行封装;调用模块,用于对封装后的数据库操作命令进行调用。优选地,处理装置还包括判断模块,用于判断在执行数据库操作命令时是否存在异常。通过本发明,采用对数据库操作命令进行封装;对封装后的数据库操作命令进行 调用,解决了对数据库的操作比较复杂的问题,进而达到了简便地实现对数据库的操作的 效果。
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的数据库操作命令的处理方法的流程图;图2是根据本发明实施例优选的数据库操作命令的处理方法的流程图;图3是根据本发明实施例的数据库操作命令的处理装置的示意图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。根据本发明的实施例,提供了 一种数据库操作命令的处理方法及装置。图1是根据本发明实施例的数据库操作命令的处理方法的流程图。如图1所示,该方法包括如下的步骤S202至步骤S204 步骤S102,对数据库操作命令进行封装;步骤S104,对封装后的数据库操作命令进行调用。优选地,在对数据库操作命令进行封装之前,该方法还包括接收数据库操作命 令。优选地,数据库操作命令包括以下种类之一插入操作命令、修改操作命令、删除 操作命令、查询操作命令。优选地,在数据库操作命令为插入操作命令、修改操作命令和删除操作命令之一 的情况下,该方法还包括在执行数据库操作命令时判断是否存在异常;在存在异常的情 况下,则进行数据回滚;在不存在异常的情况下,则提交数据。优选地,在提交数据之后,该方法还包括返回对封装后的数据库操作命令进行调 用的执行结果。
优选地,在数据库操作命令为查询操作命令的情况下,该方法还包括在执行数据 库操作命令时判断是否存在异常;在不存在异常的情况下,则返回执行查询操作命令的结^ ο优选地,对封装后的数据库操作命令进行调用包括创建数据库的实体类。优选地,对封装后的数据库操作命令进行调用包括设置用于调用的以下条件调 用数据库操作命令的表名、需要操作的字段、以及操作种类。下面将结合实例对本发明实施例的实现过程进行详细描述。图2是根据本发明实施例优选的数据库操作命令的处理方法的流程图。本发明数据库操作命令的处理方法提供一种面对对象的数据库操作的封装方法, 为开发人员提供统一的数据库操作的入口,提高软件开发的效率,从而提高软件的稳定性。 对于数据库操作主要有四种INSERT、UPDATE、DELETE、SELECT。如图2所示,该方法包括如下步骤步骤S201,创建实体类。数据库接收到操作请求之后,创建数据库的实体类;步骤S202,设置需要操作的数据库表名;步骤S203,设置需要查询和修改的数据库字段和值;步骤S204,设置条件(查询、修改、删除时);步骤S205,数据库数据命令处理,即对数据库进行相应操作;步骤S206,插入INSET操作命令,之后转入步骤S210 ;步骤S207,修改UPDATE操作命令,之后转入步骤S210 ;步骤S208,删除DELETE操作命令,之后转入步骤S210 ;步骤S209,选择SELECT操作命令,之后转入步骤S211 ;步骤S210,设置数据库操作命令自动提交;步骤S211,拼成SQL语句;步骤S212,设置 Pi^pared Statement 数据;步骤S213,执行数据库操作命令;步骤S214,判断操作命令是否有异常,如果异常转入步骤S215,否则,转入步骤
5216;步骤S215,回滚数据;步骤S216,提交数据,随后进入步骤S217 ;其中,步骤S218至步骤S221同步骤S211至步骤S214 ;步骤S221,判断操作命令是否有异常,如果异常结束该操作命令,否则,转入步骤
5217;步骤S217,返回结果。优选地,对该四个数据库操作进行实现的分析,这四种数据库操作的语句分析过 程如下插入INSERTINSERT 语句如下INSERT INTO USER(SERID,USERNAME,PASSWORD)VALUES(100, ‘test,, ‘test,)
对于hsert语句,主要是表名,字段名、字段值,我们建立一个实体类类EntityClass是数据库表的实体类。private HashMap<String, Integer>intMap = null -J/ 整型字段禾口值的 mapprivate HashMap<String, String>stringMap = null -J/ 字符串字段禾口值的 mapprivate HashMap<String, Date>dateMap = null -J/ 曰期字段禾口值的。private HashMap<String, Float>fIoatMap = null -J/ 浮点型字段和值的 private String tabIeName = null ;// 数据库表名通过初始化设置类的表名,表示需要操作哪一个表,再设置字段值,这样就可以完 成对数据库插入的操作,对于ID的生成可以用数据库自动生成或最大值加1。操作方法为EntityClass entityClass = new EntityClass ( "USER");entityClass. put ( ‘‘USERID”,”userid,,);entityClass. put ( "USERNAME,,,,,username,,);entityClass. put ( "PASSWORD", "password");EntityDAO. getlnstance (). save (entttyClass);删除DELETEDELETE的语句如下DELETE FROM USER WHERE ID = 123对于删除delete操作,只要一个表名和一个查询的条件即可,因些也可以用上面 的实体类来封装。封装方法为EntityClass entityClass = new EntityClass( "USER");entityClass. setld(123);EntityDAO. getlnstance(). delete(entityClass);对于复杂的批量的删除也可以指定一个查询条件来删除,查询条件见查询SELETE 语句,基本调用语句为EntityDAO. getlnstance(). delete(entityClass, criteria) ;//criteria 为查 询条件。修改UPDATEUpdate的语句如下UPDATE USER SET EMAIL =’ aaaiaaa. com,WHERE ID = 123对于update操作,有表名、要更新的字段名和值、更新的条件三个部分组成,因些 也可以用上面的方法来封装,封装如下EntityClass entityClass = new EntityClass( "USER");entityClass. put ( "EMAIL",,,aaaiaaa. com,,);entityClass. setld (123);EntityDAO. getlnstance (). update(entityClass);同时,对于批量的更新也可以指定一个查询条件来更新,基本调用语句为EntityDAO. getlnstance(). update(entityClass, criteria) ;//criteria 为查
6询。查询SELECTSelect的语句如下SELECT USERID, USERNAME, EMAIL FROM USER WHEREUSERNAME like =,%王%,;对于update操作,有表名,查询的字段、查询的条件组成,查询的条件里也是字段 名、条件、和字段值组成,所以查询条件类的定义如下类Condition是条件类,主要有以下几个属性private String fieldname = null -J/ 字段名private String stringValue = null -J/ Ψ^τΦ^Ψ^ΟΜ.private Integer [] inlntList = null ;//整型数组,用于 in 操作private String[] inStringList = null ;//字符串数组,用于 in 操作private Date dateValue = null -J/ 日期的字段值private Integer intValue = null -J/ ^MW^Sitprivate Float floatValue = null ;//浮点数类Criteria是条件的集合,主要有以下几种方法List<Condition>expressionlist = null -J/List<0rder>orderlist = null -J/类ConditionGroup 条件组,通过 ConditionGroup、Condition、Criteria 三个类可 以组成复杂的查询条件,满足各种数据库查询用。封装方法如下EntityClass entityClass = new EntityClass ( “USER,,);entityClass. putField( “USERID”);//设置查询字段entityClass. putField( “USERNAME”);//设置查询字段entityClass. putField( "EMAIL") ;//设置查询字段Criteria criteria = new Criteria ();criteria, add (Expression. like( “USERNAME”,”王”))-J / 设置 like 查询条件List<EntityClass>list = EntityDAO. getlnstance(). findAll(entityClass, criteria);//criteria 为查询条件。返回结果为实体类的列表,对于多个表的查询,指定表名的时候可以指定多个表, 同时查询的实体类也可以指定几个表相交的SQL条件。优选地,该方法基于JAVA环境下数据库操作的对象化封装,需要JDK1. 5以上,优 选的实施例如下优选地,以对数据表her进行增加、删除、修改、查询操作为例表her的数据结构为ID Number(10,0)NOT NULL PRIMARY KEY,USERID VARCHAR2(40)NOT NULL,USERNAME VARCHAR2(40)NOT NULL,PAS SWORD VARCHAR2(20)NOT NULL,
7
EMAIL VARCHAR2(100)NULL增加增加一条数据。EntityClass entityClass = new EntityClass ( "USER");entityClass. put ( ‘‘USERID,,,”userid,,);entityClass. put ( "USERNAME,,,,,username,,);entityClass. put ( "PASSWORD", "password");entityClass. put ( "EMAIL”,” email,,);EntityDAO. getlnstance (). save (entityClass);删除删除一条ID为123的用户。EntityClass entityClass = new EntityClass( "USER");entityClass. setld(123);EntityDAO. getlnstance (). delete (entityClass);删除所有的姓“王“字的用户。EntityClass entityClass = new EntityClass( "USER");Criteria criteria = new Criteria ();criteria, add (Expression, rightlike ( “USERNAME”,”王”))-J / 设置 like 查询 条件。EntityDAO. getlnstance(). delete(entityClass, criteria);修改把ID为123的用户的EMAIL修改成a. aia. com。EntityClass entityClass = new EntityClass( "USER");entityClass. put ( "EMAIL", "aaaiaaa. com");entityClass. setld(123);EntityDAO. getlnstance (). update (entityClass);把所有姓王的EMAIL修改成a. aia. com。EntityClass entityClass = new EntityClass( "USER");entityClass. put ( "EMAIL", "aaaiaaa. com");Criteria criteria = new Criteria ();criteria, add (Expression, rightlike ( “USERNAME”,”王”))-J / 设置 like 查询 条件。EntityDAO. getlnstance(). update(entityClass, criteria);查询查询所有姓王的用户EntityClass entityClass = new EntityClass ( “USER,,);entityClass. putField(;//设置查询字段。Criteria criteria = new Criteria ();criteria, add (Expression, rightlike ( ‘‘USERNAME,,,”王”))-J / 设置 like 查询条件。
0170]
List<EntityClass>
0171]list = EntityDAO. getlnstance(). findAll(entityClass, criteria);
0172]//criteria 为查询条件。
0173]如果另外一个表(USERINF0)存在用户的年龄等其它信息,这个表有两个字段
0174]ID NUMBER(10,0)NOT NULL,
0175]AGE NUMBER(3,0)NOT NULL
0176]调用方法如下
0177]EntityClass entityClass = new EntityClass( "USER, USERINFO");
0178]entityClass. setJoinCondition( "USER. ID = USERINFO. ID);
0179]entityClass. putField( “AGE,,);//设置查询字段
0180]entityClass. putField( “USERNAME,,);//设置查询字段
0181]entityClass. putField( “USERID”);//设置查询字段
0182]entityClass. putField( “PASSWORD”);//设置查询字段
0183]Criteria criteria = new Criteria ();
0184]criteria, add (Expression, rightlike ( “USERNAME”,”王”))-J / 设置 like 查询 条件。
0185]List<EntityClass>
0186]list = EntityDAO. getlnstance(). findAll(entityClass, criteria);
0187]
0188]
//criteria为查询条件。
从以上的描述中,可以看出,本发明实现了如下技术效果利用现有技术实现数据 库数据命令的对象化的处理方法,开发人员可以快速的掌握对数据库的编程,提高编程的 效率,保证数据层操作的可重用性,从而提高软件的稳定性。包括对数据库的操作命令进 行统一的封装,从而保证数据库操作层的可重用性,保证系统的稳定性;开发人员可以不管 SQL语法就可以完成数据库的操作;所有的操作都用I^reparecKtatement,提高数据库操作 的性能;调用简单,容易上手;集成环境简单;支持任意复杂的查询。根据本发明的实施例,提供了 一种数据库操作命令的处理装置。需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的 计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不 同于此处的顺序执行所示出或描述的步骤。图3是根据本发明实施例的据库操作命令的处理装置的示意图。如图3所示,该装置包括封装模块301和调用模块302。封装模块301,对数据库操作命令进行封装;调用模块302,用于对封装后的所述数据库操作命令进行调用。优选地,所述处理装置还包括判断模块303。判断模块303,用于判断在执行所述数据库操作命令时是否存在异常。显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用 的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成 的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们 中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的 硬件和软件结合。 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种数据库操作命令的处理方法,其特征在于,包括 对数据库操作命令进行封装;对封装后的所述数据库操作命令进行调用。
2.根据权利要求1所述的处理方法,其特征在于,在对数据库操作命令进行封装之前, 所述方法还包括接收所述数据库操作命令。
3.根据权利要求1所述的处理方法,其特征在于,所述数据库操作命令包括以下种类 之一插入操作命令、修改操作命令、删除操作命令、查询操作命令。
4.根据权利要求3所述的处理方法,其特征在于,在所述数据库操作命令为所述插入 操作命令、所述修改操作命令和所述删除操作命令之一的情况下,所述方法还包括在执行所述数据库操作命令时判断是否存在异常; 在存在异常的情况下,则进行数据回滚; 在不存在异常的情况下,则提交所述数据。
5.根据权利要求4所述的处理方法,其特征在于,在提交所述数据之后,所述方法还包括返回对封装后的所述数据库操作命令进行调用的执行结果。
6.根据权利要求3所述的处理方法,其特征在于,在所述数据库操作命令为查询操作 命令的情况下,所述方法还包括在执行所述数据库操作命令时判断是否存在异常; 在不存在异常的情况下,则返回执行所述查询操作命令的结果。
7.根据权利要求1所述的处理方法,其特征在于,对封装后的所述数据库操作命令进 行调用包括创建数据库的实体类。
8.根据权利要求1所述的处理方法,其特征在于,对封装后的所述数据库操作命令进 行调用包括设置用于调用的以下条件调用所述数据库操作命令的表名、需要操作的字段、以及操作种类。
9.一种数据库操作命令的处理装置,其特征在于,包括 封装模块,对数据库操作命令进行封装;调用模块,用于对封装后的所述数据库操作命令进行调用。
10.根据权利要求9所述的处理装置,其特征在于,所述处理装置还包括 判断模块,用于判断在执行所述数据库操作命令时是否存在异常。
全文摘要
本发明公开了一种数据库操作命令的处理方法及装置。其中,该方法包括对数据库操作命令进行封装;对封装后的数据库操作命令进行调用。通过本发明,能够简便地实现对数据库的操作命令的处理。
文档编号G06F17/30GK102110111SQ20091024420
公开日2011年6月29日 申请日期2009年12月29日 优先权日2009年12月29日
发明者杨汉强, 王绪胜, 谢成辉, 陈欣 申请人:北京北大方正电子有限公司, 北京大学, 北京方正电子政务信息科技有限公司, 北大方正集团有限公司