日期:2014-05-16 浏览次数:20871 次
为了以后的项目使用Android数据库更方便,自已写了一个小的应用框架,不知道算不算称得上框架,反正自已用起来觉得还是挺方便的,参考Hibernate了应用思想。
?
业务介绍
1、建一个数据库madfiger.db
2、建一个用户表UserInfo,包含一些用户基本字段
?
好了那么我们现在来实现吧
?
1、新建UserInfo实体类,继承AbstractBaseModel,UserInfo的类名为数据库表名,字段分别为实现了Get与Set方式的实性字段;
?
UserInfo代码如下:
package cn.company.android.project.model;
import java.util.Calendar;
import java.util.Date;
import java.util.Locale;
import cn.madfinger.android.core.AbstractBaseModel;
import cn.madfinger.android.core.util.DateUtils;
public class UserInfo extends AbstractBaseModel{
private static final long serialVersionUID = -7079062473198239915L;
private String id;
private String username;
private String password;
private String birthday;
private int gender;
private float weight;
private Date createTime=DateUtils.long2Date(Calendar.getInstance(Locale.CHINESE).getTimeInMillis());
public UserInfo(){
super();
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
public float getWeight() {
return weight;
}
public void setWeight(float weight) {
this.weight = weight;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
}
?
?
AbstractBaseModel代码如下:
package cn.madfinger.android.core;
import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
import org.json.JSONObject;
import android.util.Log;
/**
* 实体模型基类
*
* @author wiley
*/
public abstract class AbstractBaseModel implements Serializable {
private static final long serialVersionUID = -4685989463430616599L;
private static String TAG = AbstractBaseModel.class.getSimpleName();
private static Map<String, String> TYPES = new HashMap<String, String>();
static {
TYPES.put("date", "TEXT");
TYPES.put("string", "TEXT");
TYPES.put("integer", "INTEGER");
TYPES.put("int", "INTEGER");
TYPES.put("short", "INTEGER");
TYPES.put("long", "INTEGER");
TYPES.put("float", "REAL");
TYPES.put("double", "REAL");
}
public AbstractBaseModel() {
TAG = this.getClass().getSimpleName();
}
public abstract String getId();
public abstract void setId(String id);
public Set<String> toFieldSet(){
return this.toFieldMap().keySet();
}
public Map<String, String> toFieldMap() {
Map<String, String> fieldMap = new HashMap<String, String>();
Method[] methods = this.getClass().getMethods();
try {
String propertyName;
String typeString;
for (Method method : methods) {
String methodName = method.getName();
if (!methodName.startsWith("get")
|| methodName.equalsIgnoreCase("getClass")
|| methodName.equalsIgnoreCase("get"))
continue;
typeString = method.getReturnType().getSimpleName();
propertyName = methodName.substring(3);
fieldMap.put(propertyName, typeString);
}
} catch (Exception e) {
Log.e(TAG, e.getMessage());
}
return fieldMap;
}
public String toCreateTableString() {
StringBuilder sb = new StringBuilder();
sb.append("CREATE TABLE ");
sb.append(this.getClass().getSimpleName());
sb.append(" (");
int i = 0;
Map<String, String> fieldMap = toFieldMap();
Iterator<String> it = fieldMap.keySet().iterator();
while