一 核心接口类: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的名称。(可扩展以对应多种生成方式)