特定项目用数据库反射框架的尝试(基本使用篇)

整个接口的使用分为两部分:

第一部分为和表对应的实体类的定义,下面以表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不用赋值),然后传入方法就行了

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值