整个接口的使用分为两部分:
第一部分为和表对应的实体类的定义,下面以表TAB_MOA_PACKAGES为例,sequence以默认的SEQ_MOA_PACKAGES建立。对应的类如下:
@Table(tableName="TAB_MOA_PACKAGES") //可省略
@Seq(seqName="SEQ_MOA_PACKAGES") //可省略
public class TabMoaPackages {
@Field(columnName="ID",isPrimaryKey=true)
private Long id;
private String packageType;//固顶资源库还是自定义资源库的标识
@Field(columnName="PACKAGE_DATA",isSpecialCol=true)
private String packageData;//xml存储
...
}
1.因为类的命名规则按照了默认的规则,并且sequence的建立也都按照了默认的命名规则,所以这里@Table和@Seq其实都是可以省略的。类属性packageType也按照了默认命名规则,所以不必用标注标示出该属性对应数据库表字段的命名。
2. 这个类属性 id和packageData两个属性比较特殊;
id对应的数据库字段是表的主键,所以在这里要用isPrimaryKey来标示出来(考虑是否将主键的属性独立出来,这样在主键的类命名符合默认规则的情况下就不用再定义columnName,目前因为是主键,所以即使是符合了默认命名规则,也得把Field标示出来,代码重构时处理)
packageData在数据对应得字段中,存放的是一个xml格式的clob数据,也是业务需求的数据,涉及到一些特殊处理,所以这里以isSpecialCol标示出,表示需要特殊处理(在目前项目中,表示要返回该属性的值);同样的,目前存在和主键字段相同的标示重复的问题。
目前的设计的并不完善,所以该类的建立,基本按照贫血模型来建立,即不能有其他和业务操作紧密关联的其他属性和方法
第二部分为根据业务的需要分别调用三个不同的方法。
1.当需要获取一个封装成Configuration对象的xml数据时,调用 getXmlCon方法。如:
TabMoaPackages packages=new TabMoaPackages();
Configuration conf=DbCommon.getXmlCon(packages,true,"packageType","EXTEND");
Long id=packages.getId();
...
以上代码 传入了一个TabMoaPackages对象,并且需要持久化这个对象,这样方法执行完后,可以使用该对象。如果没有必要使用该对象第二个参数传入false,可以提高些效率。
2.当需要更新某个xml时,可以调用updateXMLCon(Object, Configuration, String, String)方法.如:
TabMoaPackages packages=new TabMoaPackages();
Configuration conf=DbCommon.getXmlCon(packages,true,"packageType","EXTEND");
Long id=packages.getId();
//对conf做了一系列的操作
...
DbCommon.updateXMLCon(packages,conf,"packageType","EXTEND");
...
这里先是获取了一个xml,然后做了些操作,并更新回数据库,更新方法的参数和读取方法基本类似。
这里有个问题需要注意:如果是直接新new了一个对象,作为参数传入updateXMLCom方法的,后面的查询条件参数对应的是主键及其值,即以主键作为查询条件时,这样不会有任何问题,但是如果查询的条件参数是非主键,这时就需要先在新new的这个对象里,给它的主键属性里赋上值后再作为参数传入;上面的例子里就不是以主键id作为查询条件,所以updateXMLCon方法传入的object里,主键属性需要有值,不能为null;
3.当需要插入条数据时,调用insertData方法。
TabMoaPackages packages=new TabMoaPackages();
//对packages里除主键属性以外的属性进行赋值
...
DbCommon.insertData(packages);
...
同样需要new一个对象,并给需要插入的字段对应的属性赋上值(这里主键id不用赋值),然后传入方法就行了