使用XML封装数据库操作语句的实现

黑暗中国百姓

黑暗中国百姓

2016-01-29 16:24

使用XML封装数据库操作语句的实现,使用XML封装数据库操作语句的实现
 

在项目开发的过程当中,项目组开发成员的编程风格差异和数据库操作语句SQL的灵活性给项目组带来了越来越多的操作和维护难度。
比如:从user表中取出所有数据,有的人会写成“select * from user”,有的人会写成“select all from user”,虽然在操作中不会有任何的错误,但在其他人读程序的过程时就会产生不好的感觉。
如果这种程序差异在项目中的数量级很多,那么在开发的过程当中程序就会出现各种各样的风格,在维护的过程中就会拼命的挠头并诅咒那些当初写程序的人。

为了整篇文章的举例,现在我们在数据库中建立如下表
TBL_USER
USERID BIGINT
USERNAME VARCHAR(20)
PASSWORD VARCHAR(20)
CREATETIME DATE

TBL_USER_INFO
USERID BIGINT
EMAIL VARCHAR(64)
MOBILE VARCHAR(13)

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/sqlserver/)

一、分析

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”,
子节点<get</get意思为从数据库读取数据。
子节点<property /为读取的数据库字段,其中:
属性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" /
7 </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语句

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/sqlserver/)

INSERT 语句在关系型数据库中操作可以说是最麻烦的一条语句了,因为如果你需要在TBL_USER和TBL_USER_INFO表中建立一条对应的数据时,你需要知道插入数据库的主键的值,在JDBC3.0中可以使用Statement.RETURN_GENERATED_KEYS来获取,但是如果为了兼容性考虑,我们在操作过程之中决定采用另一种办法来实现。
我们在数据库中建立一个表,名为:TSYS_PRIMARYKEY,其中包括三个字段,如下:
TSYS_PRIMARYKEY
KEYID BIGINT
TABLENAME VARCHAR(64)
PRIMARYKEY VARCHAR(30)
其中TABLENAME保存表名,PRIMA

展开更多 50%)
分享

猜你喜欢

使用XML封装数据库操作语句的实现

SQLServer
使用XML封装数据库操作语句的实现

使用组件封装数据库操作(一)

ASP
使用组件封装数据库操作(一)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

使用组件封装数据库操作(二)

ASP
使用组件封装数据库操作(二)

使用组件封装ASP的数据库操作

ASP
使用组件封装ASP的数据库操作

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

PHP中对数据库操作的封装

PHP
PHP中对数据库操作的封装

ASP中使用SQL语句操作数据库

ASP
ASP中使用SQL语句操作数据库

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

“网上邻居”与Windows网络配置(1)

“网上邻居”与Windows网络配置(1)

SQL Server自动备份无法删除过期的备份文件

SQL Server自动备份无法删除过期的备份文件
下拉加载更多内容 ↓