翻出大半年前写的代码,还是可以揪出点东西、收获良多,比如entiy和协议,数据库的绑定
总结一下
在android下面实现的数据entity的封装。
通过对bean进行配置注解,网络交互,数据库的CRUD操作都只要调用统一接口,具体实现都在BaseEntity父类,以下代码是在发送数据组装的具体实现
@AnoDBType(tableName = "e")
public class ReportShow extends BaseEntity {
@AnoDbField(columnName = "a", isPrymaryKey = true)
private int id;
@AnoDbField(columnName = "b")
@AnoNetField(netName = "time")
private String time;
@AnoDbField(columnName = "c")
@AnoNetField(netName = "position")
BaseEntity类的实现:
public class BaseEntity {
public String createXml() {
StringBuilder builder = new StringBuilder();
Field[] declaredFields = this.getClass().getDeclaredFields();
try {
for (Field field : declaredFields) {
field.setAccessible(true);
AnoNetField annotation = field.getAnnotation(AnoNetField.class);
if (annotation != null) {
String netName = annotation.netName();
builder.append("<").append(netName).append(">");
Object object = field.get(this);
if (object != null) {
builder.append(object);
}
builder.append("</").append(netName).append(">");
}
}
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return builder.toString();
以下代码是实现解析网络数据的具体实现,resultFilePath 参数是本地xml的地址,因为收到数据包之后,为了分析每一条协议,我把他持久化保存在本地磁盘上面。 解析成entity时候通过注解设置相应的值,并通过递归的方式寻找每一个子项,子项的子项。。并给他们设置值。最终转成entity对象。
public BaseEntity parseXml(String resultFilePath) {
PlusXmlParser xmlParser = new PlusXmlParser(resultFilePath);
XmlBean xmlBean = xmlParser.getRootXmlBean();
return buildEntity(xmlBean);
}
public BaseEntity buildEntity(XmlBean mainBean) {
Field[] declaredFields = this.getClass().getDeclaredFields();
try {
for (Field field : declaredFields) {
field.setAccessible(true);
AnoNetField annotation = field.getAnnotation(AnoNetField.class);
if (annotation != null && annotation.netName().length() > 0) {
String netName = annotation.netName();
Set<Entry<Integer, XmlBean>> entrySet = mainBean
.getChildren().entrySet();
if (annotation.isChildEntity()) {
List<BaseEntity> list = new ArrayList<BaseEntity>();
for (Entry<Integer, XmlBean> entry : entrySet) {
XmlBean value = entry.getValue();
if (value.getName().equals(netName)) {
Class<? extends BaseEntity> childClass = annotation
.childClass();
BaseEntity newInstance = childClass
.newInstance();
BaseEntity buildEntity = newInstance
.buildEntity(value);
list.add(buildEntity);
}
}
field.set(this, list);
} else {
for (Entry<Integer, XmlBean> entry : entrySet) {
XmlBean value = entry.getValue();
if (netName.equals(value.getName())) {
field.set(this, value.getContent());
}
}
}
} else {
/** 这里是没有配置注解的属性 */
}
}
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return this;
}
以下是数据库CUID的接口实现,具体代码比较多就不贴上来。因为都是持久化数据,所以这个解析和组装的实现是和网络模块一致的。
public boolean update(BaseEntity entity, BaseEntity alterEntity,String condition) {}
public boolean delete(BaseEntity entity) {}
public boolean insert(BaseEntity baseEntity) {}
public <T> LinkedList<T> query(BaseEntity baseEntity, Class<T> entityClass,
String condition) {}
分享到:
相关推荐
fastjson 1.2.47--json字符串与entity之间的转换,maven依赖代码,
android greenADO自动生成entity代码
ADO.NET Entity Framework使用封装示范代码,这个中封装可以提高开发效率
J2EE开发中,对照MySQL数据库中的表和字段,快速生成Java中的实体类的工具类,有助于快速开发。
EntityFrameWork 6.x Respoistory Extensions,EF 6.x 仓储帮助扩展类,于2016-04-08封装完成,集成了常规CRUD,以及批量增删改和执行SQL操作,非常适合大家使用!
估计很多入门安卓的朋友对entity很困惑,为什么要写实体类?有什么用?写来干什么? 对于实体类的理解我入门的时候也是困惑了好久,后面用多了才慢慢理解,这篇博客就当复习和笔记。 Java中entity(实体类)的写法...
用java写的创建数据库表对应java model类
个人手工编写 多谢支持 EntityFramework持久化支持类 工具父类可直接继承使用 方法支持泛型和linQ 提供如下方法 增删改 批量增删改 查询单个 查询所有 条件查询(排序) 分页查询(条件+排序) 条件条目数查询
ADO.Net Entity Framewo必备工具,有很多范例啊
ADO dot NET Entity Framework使用封装示范代码EFLabModelFirst 本人收藏了3年的资源 现放出 都是总结了很多系统 软件项目实施过程中的经验的 慢慢积累的
修改相应参数生成entity mapper.xml与mapper.java
将JSON字符串生成对应的实体类。同时支持对JSON的格式化(美化),使其更加易读。 本软件由.NET 4.0开发。需要安装.NET 4.0
ef entityframework服务端 封装dll
JsonUtil json工具类 JsonUtil json工具类
5)本demo可以直接运行 本来想测试protobuf进行数据处理的 要放在github上就改成json了(entity中有简单的xml解析:Menu.java 其他的都是json的 json 也可用Gson更方便) 博客链接使用说明:...
根据表结构字段生成实体类,private int? keyId; public int? KeyId{get{return keyId;} set{keyId=value;}}
一般使用springjdbc、hibernate的sql查询,库获取到的数据都是List, Object>>结果集,如果我们要转化为JavaBean,则需要做一系列的map.get(),然后obj.set()...此工程中就是解决List, Object>>转化为JavaBean工具类实现
JAVA在控制台打印表格的工具类,链式调用,注释齐全。 支持自定义:表格对齐方式、是否等宽、左右边距、水平垂直交叉空白填充符,打印数据格式支持: Object[][] List《Object[]》 List《List《Object》》 List...
Entity Framework 6 Recipes Entity Framework 6 Recipes