基于ActiveAndroid框架的BaseModel
来源:互联网 发布:java开发是做什么的 编辑:程序博客网 时间:2024/05/29 21:18
简介
基于ActiveAndroid框架,自己封装的BaseModel类,其他的一些操作类只需要继承自BaseModel便可以拥有数据库操作的方法了,使用非常方便。
关于ActiveAndroid的使用方法,在我的另外一篇博客有讲:
http://blog.csdn.net/hbdatouerzi/article/details/53504809
源码
BaseModel是抽象模板类,其中含有抽象方法getTag(),子类必须实现此抽象方法,另外子类需要传入继承自Model的Class。
//数据库操作基类public abstract class BaseModel<T extends Model> { private List<T> mCache; private Class<T> cl; public BaseModel(final Class<T> cl){ this.cl = cl; mCache = new Select().from(cl).execute(); if(mCache == null){ mCache = new ArrayList<>(); } } //添加 public void add(final T instance){ for(T t : mCache){ if(t.equals(instance)){ Log.i(getTag(),"is aready added"); return; } } mCache.add(instance); ThreadFactory.getNormalPool().execute(new Runnable() { @Override public void run() { instance.save(); Log.i(getTag(),"instance added success"); } }); } //保存 public void save(final T instance){ for(T t : mCache){ if(t.equals(instance)){ mCache.remove(t); } } mCache.add(instance); ThreadFactory.getNormalPool().execute(new Runnable() { @Override public void run() { instance.save(); } }); } //删除 public void delete(T instance){ T tobeDel = null; int size = mCache.size(); for(int i=0;i<size;i++){ if(mCache.get(i).equals(instance)){ tobeDel = mCache.get(i); mCache.remove(i); } } if(tobeDel != null){ final T finalTobeDel = tobeDel; ThreadFactory.getNormalPool().execute(new Runnable() { @Override public void run() { finalTobeDel.delete(); } }); } } //查找 public List<T> find(Map<String,Object> condition){ if(condition == null || condition.isEmpty()){ return null; } //组合查询参数 StringBuilder builder = new StringBuilder(); Set<String> keys = condition.keySet(); Iterator<String> iterator = keys.iterator(); while(iterator.hasNext()){ String key = iterator.next(); builder.append(key); builder.append(" = "); builder.append("\""); builder.append(condition.get(key)); builder.append("\""); if(iterator.hasNext()){ builder.append(" and "); } } List<T> result = new Select().from(cl).where(builder.toString()).execute(); return result; } public List<T> getAll(){ return mCache; } public abstract String getTag();}
子类Model
以FriendModel为例来说明,FriendModel是操作FriendDB表的操作类,只需要继承BaseModel,然后传入FriendDB.class就可以拥有对FriendDB表进行增删改查的功能了。
如果想要另外的特殊功能,比如getManFriend()得到男生朋友,或者getWomenFriend()得到女生朋友,直接在Friend Model里面添加就可以了。
public class FriendModel extends BaseModel { public FriendModel() { super(FriendDB.class); } @Override public String getTag() { return "FriendModel"; }}
总结
之前见过别人基于hibernate对数据库进行封装,使用起来非常的方便,所以自己也想尝试一下,BaseModel把一些对表共有的操作封装起来放在父类,子类只需要继承自BaseModel便可以很方便的使用了。
阅读全文
0 0
- 基于ActiveAndroid框架的BaseModel
- Android之数据库框架ActiveAndroid的使用
- BaseModel
- BaseModel
- BaseModel
- baseModel
- BaseModel
- BaseModel
- ORM轻量级框架---ActiveAndroid
- Android ORM 框架ActiveAndroid
- ORM轻量级框架---ActiveAndroid
- android ORM数据库框架ActiveAndroid的简单使用
- Android ORM框架之-ActiveAndroid的简单分析
- 玩转Android之数据库框架ActiveAndroid的使用
- 自己比较喜欢用的安卓数据库框架ActiveAndroid
- ios baseModel的封装方法
- (九)BaseModel的简单使用
- ThinkPHP 框架下 BaseModel 类整理
- ExtJs之结构树 Ext.tree.panel详细用法
- Spring学习,ApplicationContext与BeanFactory最大的不同
- Retrofit的url 的拼接
- Java开发微信公众号(一)——微信开发环境搭建
- JPA
- 基于ActiveAndroid框架的BaseModel
- computer vision笔记(二)
- Leetcode:718. Maximum Length of Repeated Subarray
- Dto--数据传输对象的应用
- C#正则表达式用于手机号判断
- 文章标题
- 腾讯电脑管家(qq电脑管家)官方正式版V12.9.19152.219下载 | 电脑管家官方网下载
- 多线程
- 学习Hadoop的第一课(开始进入大数据的世界)