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 
		
		总结
事物 解决了 还有多表问题 大家多给点鼓励哦 ^_^