赞
踩
本文主要实现如何搭建一套自己的数据库框架。包括数据库的创建、表的创建、数据的增删改查功能、以及数据库如何实现分库、如何进行更新。
如何使自己的数据库表的创建以更加优雅的方式,我们就需要注解的方式实现。
针对没有FieldParams注解的字段我们会使用字段名称作为数据库保存的字段名称,对于Exclude注解的字段我们不保存在数据库中。
接口提供增删改查基本功能,供子类实现。
这里使用泛型T表示,做到了实体类的通用。
这个类主要负责数据库的基础增删改查的操作,对于其他特殊的数据库操作功能,我们可以继承这个类去扩展功能。
在init方法进行创建表的操作,大致流程是通过反射拿到实体类的数据库表名,和注解的字段名称及类型,将它们拼接处数据库执行语句,最后通过SQLiteDatabase执行execSQL(sql)即可。主要代码如下:
拼接过程如下:
private String createTableSql(Class<T> clazz) { StringBuilder sb = new StringBuilder(); sb.append("create table if not exists " + tableName + "("); //拿到所有的属性字段 Field[] fields = clazz.getDeclaredFields(); for (Field field : fields) { field.setAccessible(true); //判断是否需要保存字段到数据库 Exclude exclude = field.getAnnotation(Exclude.class); if (exclude != null) { continue; } FieldParams fieldParams = field.getAnnotation(FieldParams.class); //字段名 String columnName; if (fieldParams == null) { columnName = field.getName(); } else { columnName = fieldParams.value(); } if ("serialVersionUID".equals(columnName)) { continue; } caches.put(columnName, field); //拼接类型 Class type = field.getType(); if (type == String.class) { sb.append(columnName + " TEXT,"); } else if (type == Integer.class || type == int.class) { sb.append(columnName + " INTEGER,"); } else if (type == Long.class) { sb.append(columnName + " BIGINT,"); } else if (type == Double.class) { sb.append(columnName + " DOUBLE,"); } else if (type == byte[].class) { sb.append(columnName + " BLOB,"); } else { //不支持的类型号 caches.remove(columnName); continue; } } //去除最后一个, if (sb.charAt(sb.length() - 1) == ',') { sb = sb.deleteCharAt(sb.length() - 1); } sb.append(")"); return sb.toString(); }
最后执行如下:
创建一个用户可以直接操作的类,类中我们进行数据库的创建
并且提供方法,创建数据库表
这里调用init方法后就完成了数据库表的创建,并将数据库SQLiteDatabase对象传给了BaseDao类,拿到它我们就可以进行增删改查操作了。
以上完成了数据库的创建和表的创建,并且BaseDao基类持有了SQLiteDatabase对象,下面开始基础功能的实现
主要执行db.insert()方法。其中第三个参数保存了所有字段及字段值的映射,代码如下:
注意,我这里的caches是一个map集合,key为数据库中字段对应的名称,value为实体类的属性Field
注意,这里的getFields()方法会返回当前查询条件的map集合,然后创建Conditions类,它包含查询需要的两个字段,注释有说明。
getField()方法如下:
Conditions类代码如下:
主要执行db.update()方法。
主要执行db.delete()方法。
以上就完成了数据库基本框架的搭建,提供了基础的四个方法。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。