选择显示字体大小

教您使用xml封装数据库操作语句的实现

在项目开发的过程当中,项目组开发成员的编程风格差异和数据库操作语句sql的灵活性给项目组带来了越来越多的操作和维护难度。

比如:

从user表中取出所有数据,有的人会写成“select * from user”,有的人会写成“select all from user”,虽然在操作中不会有任何的错误,但在其他人读程序的过程时就会产生不好的感觉。

如果这种程序差异在项目中的数量级很多,那么在开发的过程当中程序就会出现各种各样的风格,在维护的过程中就会拼命的挠头并诅咒那些当初写程序的人。

为了整篇文章的举例,现在我们在数据库中建立如下表:

tbl_useruserid bigintusername varchar(20)password varchar(20)createtime datetbl_user_infouserid bigintemail varchar(64)mobile varchar(13)


一:分析

a) 分析select语句

于是使用xml来封装数据库操作语句成为项目规范化操作的第一步骤。在这个步骤中,我们将举几个例子来逐步实现封装的目的。

比如 “ select username, password from tbl_user ” 这个语句,分析成xml文件时可以有各种各样的写法,我们现在使用如下的表达方式:

分析1:

1 <dbtrans name=”selectuser”table=”tbl_user” method=”select”>2 <get>3 <property name=”username”type=”string”/>4 <property name=”password” type=”string”/>5 </get>6 </dbtrans>


在第一行的句子中使用 dbtrans 为节点名称,属性name为这个交易的名称,这里为”selectuser”,属性table为索取表的名称,这里为”tbl_user”,属性method为操作数据库的方法,这里为”select”,子节点意思为从数据库读取数据。子节点为读取的数据库字段,其中:

属性name为字段的名字,属性type为字段的类型,这里设置类型在后面的程序中可以体现出来。

对于

select username, password from tbl_user where userid=123


语句,我们根据上诉的分析,则可将xml描绘为:

分析2

1. <dbtrans name=”selectuserbykey”table=”tbl_user” method=”select”>2. <key>3 <property name=”userid” type=”long”/>4 </key>5 <get>6 <property name=”username” type=”string”/>7 <property name=”password” type=”string”/>8 </get>9 </dbtrans>


如果使用的是like操作,我们可以将第3句描述成为:

<property name=”username”type=”string” match=”like”/>


对于

select username, password from tbl_user order by username desc


这个语句,xml如下分析

分析3

1. <dbtrans name=”selectuser” table=”tbl_user” method=”select”>2 <get>3 <property name=”username” type=”string”/>4 <property name=”password” type=”string”/>5 </get>6 <order name="respcode" match="desc" />6 </dbtrans>


这样的语句分析基本上可以完成了绝大部分的普通数据库的select语句的操作,但是毕竟还是会有一些我们无法预料的数据库操作语句会出现,比如

select username, password from tbl_user where createtime >’2003-7-16’and createtime<’2003-9-16’时,同时出现了createtime在 <key>之中,这时我们可以将xml描绘成为<key><property name=”starttime” column=”createtime” type=”date” match=”>”><property name=”endtime” column=”createtime” type=”date” match=”<”> </key>


但即使使用了以上的变通方法,还是会有很多的特殊语句是无法完成的,比如

select count(*) from tbl_user


这时的操作会出现使用xml语句无法描绘的时候,这个时候我们就可以引入了special这个属性,例如:

分析4

1. <dbtrans name=”selectuser”table=”tbl_user” method=”select”special=”select count(*) from tbl_user”>2. </dbtrans>


这个属性的意思是将所有的特殊交易都特殊表现出来。

b)分析insert语句

insert 语句在关系型数据库中操作可以说是最麻烦的一条语句了,因为如果你需要在tbl_user和tbl_user_info表中建立一条对应的数据时,你需要知道插入数据库的主键的值,在jdbc3.0中可以使用statement.return_generated_keys来获取,但是如果为了兼容性考虑,我们在操作过程之中决定采用另一种办法来实现。

我们在数据库中建立一个表,名为:tsys_primarykey,其中包括三个字段,如下:

tsys_primarykeykeyid biginttablename varchar(64)primarykey varchar(30)


其中tablename保存表名,primarykey保存主键的名称,keyid保存主键的值,这样的做法目的是在insert语句操作前,先取到现在主键的值,并将该值加1,成为现有的主键,然后进行insert操作,操作完成之后我们还需要update一下tsys_primarykey这个表,确保数据的同步。

现在我们开始分析insert语句

insert into tbl_user ( userid, username, password ) values ( 100, ‘test’, ‘test’ )insert into tbl_user_info( userid, email, mobile ) values ( 100, ‘test@test.com’, ‘1234567890’ )


描绘为xml文件时我们可以描绘如下

分析5

1. <dbtrans name=”insertuser” table=”tbl_user” method=”insert”>2 <primarykey name=”userid” >3 <set>4 <property name=”username” type=”string”/>5 <property name=”password” type=”string”/>6 </set>7 </dbtrans>


以及

1. <dbtrans name=”insertuserinfo” table=”tbl_user_info” method=”insert”>2 <set>3 <property name=”userid” type=”long”/>4 <property name=”email” type=”string”/>5 <property name=”mobile” type=”string”/>6 </set>7 </dbtrans>


c) 分析delete语句

delete语句最常用的可以分为两种,一种是按照键值删除,一种是全部删除,为此我们将此操作划分为两种类型,delete和clear。

对于delete类型,举例为:

delete from tbl_user_infowhere userid=123


描述为:

分析6

1. <dbtrans name=”deleteuserinfo”table=”tbl_user_info” method=”delete”>2 <key>3 <property name=”userid” type=”long” />4 </key>5 </dbtrans>


对于clear类型,举例为:

delete from tbl_user_info


描述为:

分析7

1. <dbtrans name=”clearuserinfo” table=”tbl_user_info” method=”clear”>2 </dbtrans>


d)分析update语句

从update通常的操作我们可以知道使用xml表述时将会出现两种tag,包括,比如:

update tbl_user_infoset email=’aaa@aaa.com’where userid=123


描述称xml为:

分析8

1. <dbtrans name=”updateuserinfo”table=”tbl_user_info” method=”update”>2 <key>3 <property name=”userid” type=”long” />4 </key>5 <set>6 <property name=”email” type=”string” />7 </set>8 </dbtrans>

本新闻共2


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范