您的位置:首页 > 移动开发

Java 通用存储过程ORMapping的实现 [基类实现篇]

2007-10-01 22:57 295 查看
在[设想篇]中,ASon是继承自A,而A这个基类,我们必须实现它,将A更名成:JxDataStoreProcedure

实现代码:


import java.io.*;


import java.lang.reflect.*;






/** *//**


* <p>Title: 存储过程类</p>


* <p>Description: 数据库映射组件</p>


* <p>Copyright: Copyright (c) 2007</p>


* <p>Company: itbabysoftware</p>


* @author javasuki


* @version 1.0


*/


public class JxDataStoreProcedure implements Serializable




...{


private Object JxSpObject;


private Class JxSpClass;


protected JxDataStoreProcedure() throws Exception




...{




//该类为受保护,通过反射进行调用,为便于管理是放在不同的包中的


JxSpClass = Class.forName("JXDO.Data.Factory.JxStoredProcedure");


JxSpObject = RefCreateObj.getPublicObj(JxSpClass);//反射建立,如果你放在同一包中,就直接使用new 建立对象吧!




}






/** *//**


* 执行存储过程,如果存储过程有返回结果,则返回,否则返回null


* @return 必须注意:如果存储过程,最后一条程序语句后返回值,并且最后第二条程序语句为[select * from table],则该函数执行后的返回结果是com.sun.rowset.CachedRowSetImpl类型,存储Return的返回值,将放置在指定的属性中


* @throws Exception


*/


public Object Exectue() throws Exception




...{


//等同于执行,new JXDO.Data.Factory.JxStoredProcedure().Exectue(this);




Method method = JxSpClass.getDeclaredMethod("Exectue", new Class[]...{Object.class});


method.setAccessible(true);




Object objResult = method.invoke(JxSpObject, new Object[]...{this});


method.setAccessible(false);


return objResult;


}






/** *//**


* 执行存储过程,动态映射成实例的类对象,只有满足:存储过程执行后返回的是数据集,并且该数据集结构与实际数据库中表或视图的结构相同


* @param InstanceClass 映射成对象的类型,//此段代码必须注意,本人有TABLE和VIEW的ORMapping,所以提供此方法


* @return Object[]


* @throws Exception


*/


public Object[] ExectueToObject(Class InstanceClass) throws Exception




...{


//等同于执行,new JXDO.Data.Factory.JxStoredProcedure().ExectueToObject(InstanceClass);




Method method = JxSpClass.getDeclaredMethod("ExectueToObject", new Class[]...{Object.class,Class.class});


method.setAccessible(true);




Object objResult = method.invoke(JxSpObject, new Object[]...{this,InstanceClass});


method.setAccessible(false);


return (Object[])objResult;


}


}

如需转载,请表明出处
anthor:zerodj@163.com/javasuki@hotmail.com
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: