原創(chuàng)小框架: 動(dòng)態(tài)面向?qū)ο髷?shù)據(jù)庫(kù)操作(不要影射類哦)
Posted on 2007-09-21 14:46 G_G 閱讀(1822) 評(píng)論(6) 編輯 收藏 所屬分類: JDBC
BUG修訂 09-21 15:44
???時(shí)間類不能Update 問(wèn)題 (如果在上面時(shí)間前下載那請(qǐng)從新下載)
?
在上一版本有大改動(dòng) 自用小框架:DB工廠??
?????????1.? 添加 jdbc ?事物
?????????2.? 結(jié)構(gòu)更合理
???????? 3.? 速度加快
工具簡(jiǎn)單說(shuō)明
??????脫離 DB 影射包 java 數(shù)據(jù)類 ,動(dòng)態(tài)在內(nèi)存中生成 動(dòng)態(tài)數(shù)據(jù)類 ( 使用BeanUtils的DyanBean類?)??????.
????? 操作DB 面向?qū)ο蟛僮?當(dāng)然是動(dòng)態(tài)^_^)
????? 為了更實(shí)用 我用了張 50多屬性的大表進(jìn)行測(cè)試.閱讀起來(lái)可能有點(diǎn)困難,希望大家海涵.?
version?
???jdk 1.4
下載
??????DyanDBUtils.rar
包文件說(shuō)明 :
?????????Config ? :? JDBC 需要的 驅(qū)動(dòng) 密碼等
???????? DBResources :?? 根據(jù)Config給出 Connection ,? PreparedStatement
?????????DynaClass :? 根據(jù)元數(shù)據(jù) 和 table 給出 動(dòng)態(tài)BasicDynaClass?
?????????SQLSpelling : 給出 sql 語(yǔ)句和 sql語(yǔ)句中 ? ?的值?,格式為 List?:?lise.get(0)為sql語(yǔ)句 后其他為值??
?????????DyanDBUtils.java : 為本Util主要入口點(diǎn) 也是運(yùn)行點(diǎn)
數(shù)據(jù)庫(kù)表? z_jcyy_basepersonnel
??????有53個(gè)屬性?(什么類型都有)
??????4 個(gè)不為空屬性 personid , workno , depotid ,? hname?????
測(cè)試
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();
????}
????
}
測(cè)試測(cè)試結(jié)果 (注意: 開(kāi)頭的 李家佳?3719? 和后面的 3719? 沒(méi)變 就是事物的結(jié)果)
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 :?無(wú)法將? NULL ?插入?("JCYY"."Z_JCYY_BASEPERSONNEL"."WORKNO") //事物運(yùn)行良好 哦
李家佳?3719
總結(jié)
事物 解決了 還有多表問(wèn)題 大家多給點(diǎn)鼓勵(lì)哦 ^_^?