Java 通用存储过程ORMapping的实现 [基础篇]
2007-10-01 22:49
429 查看
在[设想篇]中,提到的一些注解,在本篇中进行实现
@JXDatatSet(SchemaName="CityCount",schemaFlag=SchemaFlag.IsStoredProcedure)
@JXDatatSet为一个注解,标识存储过程的名称,SchemaFlag为枚举,可能你希望他还有IsTable,IsView这样的数据,用于其它结构的枚举
实现代码:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface JXDatatSet
...{
String SchemaName();
SchemaFlag schemaFlag() default SchemaFlag.IsTable;
}
其中使用枚举SchemaFlag代码如下
public enum SchemaFlag
...{
/** *//**
* 表
*/
IsTable(0),
/** *//**
* 视图
*/
IsView(1),
/** *//**
* 存储过程
*/
IsStoredProcedure(2);
private int value;
SchemaFlag(int value)
...{
this.value=value;
}
public int getValue()
...{
return this.value;
}
}
@JXExectueReturn(PrivateFieldName="_ReturnValue",JavaSqlTypes="java.sql.Types.INTEGER",Flag = ReturnFlag.IsDouble)
@JXExectueReturn标识返回值,存储过程可以有多个返回值,比如RETURN前有SELECT语句,会返回结果集,同样RETURN的也会返回,而在ORACLE中会有CURSOR返回结果集
实现代码:
import java.lang.annotation.*;
/** *//**
* 存储过程返回结果的注解
* @author suki
* @since 1.0
* jdk java5
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.CONSTRUCTOR)
public @interface JXExectueReturn
...{
/** *//**
* 保存返回结果的私有变量名
* @return
*/
String PrivateFieldName();
/** *//**
* JAVA存储过程对应的参数类型
* 如果 Flag == ReturnFlag.IsDataSet,则此设置无效
*/
String JavaSqlTypes() default "java.sql.Types.VARCHAR";
/** *//**
* 存储过程返回值的类型枚举
* @return
*/
ReturnFlag Flag() default ReturnFlag.IsNonResult;
}
其中使用枚举ReturnFlag代码如下
public enum ReturnFlag
...{
/** *//**
* 返回结果集
*/
IsDataSet(0),
/** *//**
* 返回值
*/
IsValue(1),
/** *//**
* 无任何返回值
*/
IsNonResult(2),
/** *//**
* 即返回结果集对象,又有Return的返回值,结果集对象作为方法执行的返回结果,Return的返回值则保存在指定的get方法中
*/
IsDouble(3);
private int value;
ReturnFlag(int value)
...{
this.value=value;
}
public int getValue()
...{
return this.value;
}
}
@JXVar(Name="parameter1",PrivateFieldName="sIn",JavaTypeName="java.lang.Integer",JavaSqlTypes="java.sql.Types.INTEGER",Flag=VarIOFlag.IsOutput)
@JXVar是标识存储过程的参数信息
实现代码:
/** *//**
* <p>存储过程的参数注解</p>
* <p>Title: JXDO数据库映射</p>
* <p>Description: 数据库映射组件</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: itbabysoftware</p>
* @author javasuki
* @version 1.0
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface JXVar
...{
/** *//**
* 存储过程参数变量名称
* @return
*/
String Name();
/** *//**
* 参数变量Get或Set方法中对应的私有变量的名称
* @return
*/
String PrivateFieldName();
/** *//**
* 参数的值对应[Java中的类型],默认[java.lang.Object]
* @return
*/
String JavaTypeName() default "java.lang.Object";
/** *//**
* 源数据名称[字段类型]
* @return
*/
String DataTypeName() default "";
/** *//**
* JAVA存储过程对应的参数类型
*/
String JavaSqlTypes() default "java.sql.Types.VARCHAR";
/** *//**
* 输入/出的参数枚举类型,默认[IsInput]
* @return
*/
VarIOFlag Flag() default VarIOFlag.IsInput;
}
其中使用枚举VarIOFlag代码如下
public enum VarIOFlag
...{
/** *//**
* 输入参数
*/
IsInput(0),
/** *//**
* 输出参数
*/
IsOutput(1),
/** *//**
* 输入,输出参数
*/
IsDouble(2);
private int value;
VarIOFlag(int value)
...{
this.value=value;
}
public int getValue()
...{
return this.value;
}
}
以上这些定义的注解,将在真正实现存储的类中进行反射,取得存储执行时的必要信息
如需转载,请表明出处
anthor:zerodj@163.com/javasuki@hotmail.com
@JXDatatSet(SchemaName="CityCount",schemaFlag=SchemaFlag.IsStoredProcedure)
@JXDatatSet为一个注解,标识存储过程的名称,SchemaFlag为枚举,可能你希望他还有IsTable,IsView这样的数据,用于其它结构的枚举
实现代码:
import java.lang.annotation.*;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public @interface JXDatatSet
...{
String SchemaName();
SchemaFlag schemaFlag() default SchemaFlag.IsTable;
}
其中使用枚举SchemaFlag代码如下
public enum SchemaFlag
...{
/** *//**
* 表
*/
IsTable(0),
/** *//**
* 视图
*/
IsView(1),
/** *//**
* 存储过程
*/
IsStoredProcedure(2);
private int value;
SchemaFlag(int value)
...{
this.value=value;
}
public int getValue()
...{
return this.value;
}
}
@JXExectueReturn(PrivateFieldName="_ReturnValue",JavaSqlTypes="java.sql.Types.INTEGER",Flag = ReturnFlag.IsDouble)
@JXExectueReturn标识返回值,存储过程可以有多个返回值,比如RETURN前有SELECT语句,会返回结果集,同样RETURN的也会返回,而在ORACLE中会有CURSOR返回结果集
实现代码:
import java.lang.annotation.*;
/** *//**
* 存储过程返回结果的注解
* @author suki
* @since 1.0
* jdk java5
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.CONSTRUCTOR)
public @interface JXExectueReturn
...{
/** *//**
* 保存返回结果的私有变量名
* @return
*/
String PrivateFieldName();
/** *//**
* JAVA存储过程对应的参数类型
* 如果 Flag == ReturnFlag.IsDataSet,则此设置无效
*/
String JavaSqlTypes() default "java.sql.Types.VARCHAR";
/** *//**
* 存储过程返回值的类型枚举
* @return
*/
ReturnFlag Flag() default ReturnFlag.IsNonResult;
}
其中使用枚举ReturnFlag代码如下
public enum ReturnFlag
...{
/** *//**
* 返回结果集
*/
IsDataSet(0),
/** *//**
* 返回值
*/
IsValue(1),
/** *//**
* 无任何返回值
*/
IsNonResult(2),
/** *//**
* 即返回结果集对象,又有Return的返回值,结果集对象作为方法执行的返回结果,Return的返回值则保存在指定的get方法中
*/
IsDouble(3);
private int value;
ReturnFlag(int value)
...{
this.value=value;
}
public int getValue()
...{
return this.value;
}
}
@JXVar(Name="parameter1",PrivateFieldName="sIn",JavaTypeName="java.lang.Integer",JavaSqlTypes="java.sql.Types.INTEGER",Flag=VarIOFlag.IsOutput)
@JXVar是标识存储过程的参数信息
实现代码:
/** *//**
* <p>存储过程的参数注解</p>
* <p>Title: JXDO数据库映射</p>
* <p>Description: 数据库映射组件</p>
* <p>Copyright: Copyright (c) 2007</p>
* <p>Company: itbabysoftware</p>
* @author javasuki
* @version 1.0
*/
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.FIELD)
public @interface JXVar
...{
/** *//**
* 存储过程参数变量名称
* @return
*/
String Name();
/** *//**
* 参数变量Get或Set方法中对应的私有变量的名称
* @return
*/
String PrivateFieldName();
/** *//**
* 参数的值对应[Java中的类型],默认[java.lang.Object]
* @return
*/
String JavaTypeName() default "java.lang.Object";
/** *//**
* 源数据名称[字段类型]
* @return
*/
String DataTypeName() default "";
/** *//**
* JAVA存储过程对应的参数类型
*/
String JavaSqlTypes() default "java.sql.Types.VARCHAR";
/** *//**
* 输入/出的参数枚举类型,默认[IsInput]
* @return
*/
VarIOFlag Flag() default VarIOFlag.IsInput;
}
其中使用枚举VarIOFlag代码如下
public enum VarIOFlag
...{
/** *//**
* 输入参数
*/
IsInput(0),
/** *//**
* 输出参数
*/
IsOutput(1),
/** *//**
* 输入,输出参数
*/
IsDouble(2);
private int value;
VarIOFlag(int value)
...{
this.value=value;
}
public int getValue()
...{
return this.value;
}
}
以上这些定义的注解,将在真正实现存储的类中进行反射,取得存储执行时的必要信息
如需转载,请表明出处
anthor:zerodj@163.com/javasuki@hotmail.com
相关文章推荐
- Java 通用存储过程ORMapping的实现 [设想篇]
- Java 通用存储过程ORMapping的实现 [基类实现篇]
- Java 通用存储过程ORMapping的实现 [真正实现篇]
- C# 通用存储过程ORMapping的实现 [基础篇]
- 用Java实现异构数据库的高效通用分页查询功能
- java 实现视频转换通用工具类:视频截图-Ffmpeg(四)
- 利用java的反射机制实现通用dao
- C# 通用存储过程ORMapping的实现 [基类实现篇]
- Java Web Application 自架构 三 通用DAO类实现
- java 实现视频转换通用工具类:视频相互转换-总方法及Mencoder(二)
- 对sql查询语句组合查询的通用实现算法(c++版,java版)
- 通用 Java 文件上传和下载组件的设计与实现
- Java实现通用组合算法
- java实现 n阶幻方(奇偶通用)
- java多线程系类:基础篇:02常用的实现多线程的两种方式
- Effective Java - 对于所有对象都通用的方法 - 考虑实现 Comparable 接口
- java反射实现的通用toString
- Java-Maven-POI 简单导入导出Excel通用工具,默认使用基于poi实现
- Java和.Net版通用工具类实现--生成自定义Web Html/Excel测试用例和测试报告
- 用java实现的通用内存分页函数