特定项目用数据库反射框架的尝试(接口结构及基本信息篇)

 

一 核心接口类:DbCommon

 

1.核心方法

(1).

public static  Configuration getXMLCon(Object obj,boolean isGetObj,String paramName,String paramValue)

 主要完成从数据库中的对应表中取出xml格式(clob)的文本,转存成Configuration对象(org.apache.avalon.framework.configuration.Configuration),并返回。并根据需要,决定是否要持久化该表对应的对象。

(2).

public static void updateXMLCon(Object obj,Configuration conf,String paramName,String paramValue )

 主要完成特定表中,某条记录中的xml字段更新的操作。

(3).

public static void insertData(Object obj,Object... objs)

 主要完成向某个 传入对象所对应表中插入数据的操作。

 

 

2.所涉及的工具方法:

(原先moa中的数据库连接,及大文本字段赋值的公共方法这里不介绍)

 

(1).

private static String classNameSwitch(String str)

 该方法完成java类及其属性的命名到数据库表及其列的命名的单向转换。如  将类名TabMoaPackage 转成 对应的数据库表名 TAB_MOA_PACKAGE ,类属性与数据库列的转换类似。(方法的命名有些不规范,重构时修改);

 

(2).

private static  String tableNameSwitch(String str ,boolean isUpper)

 该方法完成数据库表及其列的命名到java类及其属性的命名的单向转换。如 将表名TAB_MOA_PACKAGE转成 对应的类名

TabMoaPackage。 并可通过参数 isUpper决定是否需要转换后的字符串的首字母大写 (列名转成类属性名时,该值多为false,即对应java属性的命名规则)。(方法的命名有些不规范,重构时修改);

 

(3)

private static String strDeal(String str)

 该方法主要做字符串处理,将任意一个字符串的首字母转为大写。(功能有可以合并的空间,重构时修改);

 

(4)

private static String defaultSeq(String tableName)

 该方法针对目前项目所指定的数据库命名规范,根据表名来生成一个符合当前所制定的规则的sequence。如 表TAB_MOA_PACKAGE 对应的默认sequence就是 SEQ_MOA_PACKAGE ; 如果表名是 PACKAGE,则他所对应的sequence默认名为SEQ_PACKAGE

 

(5).

private static String getSeq(String seqName)

 获取一个sequence(下个值),以string类型返回。

 

二.标注类

目前根据需要定义了三个标注类。

(1).

@Target(ElementType.TYPE)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented
public @interface Table {
	String tableName();
}
 

标注类table用于表和类关联 ,定义一个标注属性tableName ,用此来标示表名

 

(2).

@Target(ElementType.FIELD)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented  
public @interface Field {
	String columnName();
	boolean isPrimaryKey() default false;
	boolean isSpecialCol() default false;
}

标注类field用于列和属性字段关联。定义的三个属性,分别用来标示列名,是否主键,是否特殊字段(本项目中用来标示需要业务操作的xml数据)。

 

(3).

@Target(ElementType.TYPE)  
@Retention(RetentionPolicy.RUNTIME)  
@Documented
public @interface Seq {
	String pkGenType() default "SEQ";
	String seqName();
}

 用于标示主键生成方式及值的信息。pkGenType用于标示主键的生成方式,默认为sequence,seqName用于标示sequence的名称。(可扩展以对应多种生成方式)

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值