posts - 165, comments - 198, trackbacks - 0, articles - 1
  BlogJava :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理

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

总结
事物 解决了 还有多表问题 大家多给点鼓励哦 ^_^ 


评论

# re: 原创小框架: 动态面向对象数据库操作(不要影射类哦)  回复  更多评论   

2007-09-21 15:08 by G_G
我希望有人 和我一起把这个小东西 弄成个 开元框架

# re: 原创小框架: 动态面向对象数据库操作(不要影射类哦)  回复  更多评论   

2007-09-21 15:18 by 千里冰封
呵呵,挺不错的

# re: 原创小框架: 动态面向对象数据库操作(不要影射类哦)  回复  更多评论   

2007-09-21 15:47 by G_G
^_^

# re: 原创小框架: 动态面向对象数据库操作(不要影射类哦)  回复  更多评论   

2007-09-21 21:17 by sitinspring
作个记号,有空细看.

# re: 原创小框架: 动态面向对象数据库操作(不要影射类哦)[未登录]  回复  更多评论   

2007-09-22 16:21 by 小天
哇~~真的很不錯耶,在前些日子才在想說 您是否有空可以修改,沒想到您已經
改好了,真的很棒,來去試試看~若有問題,再提出來跟大家分享

# re: 原创小框架: 动态面向对象数据库操作(不要影射类哦)  回复  更多评论   

2007-09-23 14:13 by Alexander.Yu
我也有做一只,呵呵,现在正试着用在正式的项目上...

只有注册用户登录后才能发表评论。


网站导航: