BUG修订 09-21 15:44
时间类不能Update 问题 (如果在上面时间前下载那请从新下载)
在上一版本有大改动 自用小框架:DB工厂
1. 添加 jdbc 事物
2. 结构更合理
3. 速度加快
工具简单说明
脱离 DB 影射包 java 数据类 ,动态在内存中生成 动态数据类 ( 使用BeanUtils的DyanBean类 ) .
操作DB 面向对象操作(当然是动态^_^)
为了更实用 我用了张 50多属性的大表进行测试.阅读起来可能有点困难,希望大家海涵.
version
jdk 1.4
下载
DyanDBUtils.rar
包文件说明 :
Config : JDBC 需要的 驱动 密码等
DBResources : 根据Config给出 Connection , PreparedStatement
DynaClass : 根据元数据 和 table 给出 动态BasicDynaClass
SQLSpelling : 给出 sql 语句和 sql语句中 ? 的值 ,格式为 List : lise.get(0)为sql语句 后其他为值
DyanDBUtils.java : 为本Util主要入口点 也是运行点
数据库表 z_jcyy_basepersonnel
有53个属性 (什么类型都有)
4 个不为空属性 personid , workno , depotid , hname
测试
package
DyanDBUtils.test;
import
java.util.Iterator;
import
org.apache.commons.beanutils.BeanUtils;
import
DyanDBUtils.DyanDBUtils;
import
junit.framework.TestCase;
public
class
testUtil
extends
TestCase {
static
private
DyanDBUtils dyd
=
DyanDBUtils.getDyanDBUtil() ;
static
private
Object obj
=
null
;
//SELECT
public
void
testSelete()
throws
Exception{
dyd.setIsShowSQL(
true
);
for
(Iterator it
=
dyd.select(
"
select t.*, t.rowid from z_jcyy_basepersonnel t where t.personid = '0301003719'
"
).iterator();
it.hasNext();){
Object obj
=
it.next();
}
}
//INSERT
public
void
testInsert()
throws
Exception{
obj
=
dyd.getDyanDBBean(
"
z_jcyy_basepersonnel
"
);
BeanUtils.setProperty(obj,
"
personid
"
,
"
1000
"
);
BeanUtils.setProperty(obj,
"
workno
"
,
"
2000
"
);
BeanUtils.setProperty(obj,
"
depotid
"
,
"
300
"
);
BeanUtils.setProperty(obj,
"
hname
"
,
"
刘凯毅
"
);
dyd.insert(obj); //INSERT
}
//UPDATE
public
void
testUpdate()
throws
Exception{
BeanUtils.setProperty(obj,
"
hname
"
,
"
思考..
"
);
dyd.updateOrInsert(obj); //UPDATE
}
//DELECT
public
void
testDelete()
throws
Exception{
dyd.delete(obj);//DELECT
System.out.println(
"
******************************************
"
);
}
public
void
testCommit()
throws
Exception{
dyd.openCommit() ;
Object obj
=
dyd.select(
"
select t.*, t.rowid from z_jcyy_basepersonnel t where t.personid ='0301003719'
"
).get(
0
);
BeanUtils.setProperty(obj,
"
hname
"
,
"
刘凯毅
"
);
dyd.updateOrInsert(obj);
BeanUtils.setProperty(obj,
"
workno
"
,
null
);
//
不可为空
dyd.updateOrInsert(obj);
dyd.colseCommit();
testSelete();
}
}
测试测试结果 (注意: 开头的 李家佳 3719 和后面的 3719 没变 就是事物的结果)
李家佳
3719
insert
into
z_jcyy_basepersonnel( depotid,drivekm,hname,hundreds,personid,resbaseknowledge,rescheck,resctrl,resproknowledge,ressaferules,roomarea,safekm,status,workno)
values
( ?,?,?,?,?,?,?,?,?,?,?,?,?,?)
//刘凯毅 2000 print insert
//
思考..
2000 print update
delete
from
z_jcyy_basepersonnel
where
1
=
1
and
personid
=
?
******************************************
delete
from
z_jcyy_basepersonnel
where
1
=
1
and
personid
=
?
insert
into
z_jcyy_basepersonnel( beginworktime,depotid,deptid,dob,drivekm,drivelocotype,dynamicinfo,dynamicinfo2,dynamicinfo3,eductionlevel,folk,hname,hundreds,marrystatus,minordriveno,nativeplace,personid,political,postid,promoteminordriverdate,resbaseknowledge,rescheck,resctrl,resproknowledge,ressaferules,roomarea,safebeginday,safekm,sex,status,techniclevel,workno)
values
( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
delete
from
z_jcyy_basepersonnel
where
1
=
1
and
personid
=
?
insert
into
z_jcyy_basepersonnel( beginworktime,depotid,deptid,dob,drivekm,drivelocotype,dynamicinfo,dynamicinfo2,dynamicinfo3,eductionlevel,folk,hname,hundreds,marrystatus,minordriveno,nativeplace,personid,political,postid,promoteminordriverdate,resbaseknowledge,rescheck,resctrl,resproknowledge,ressaferules,roomarea,safebeginday,safekm,sex,status,techniclevel)
values
( ?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)
java.sql.SQLException: ORA
-
01400
: 无法将
NULL
插入 ("JCYY"."Z_JCYY_BASEPERSONNEL"."WORKNO") //事物运行良好 哦
李家佳 3719
总结
事物 解决了 还有多表问题 大家多给点鼓励哦 ^_^