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
测试
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 没变 就是事物的结果)
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
总结
事物 解决了 还有多表问题 大家多给点鼓励哦 ^_^