Andrid数据库框架——greenDAO(二)
来源:互联网 发布:乒乓球 知乎 编辑:程序博客网 时间:2024/05/27 09:46
上一篇Andrid数据库框架——greenDAO(一)对熟悉了下greenDao的简单使用。一般我们项目中使用第三方框架的时候都会在封装一层。一是使用起来更加方便 二是也方便以后万一我们换别的框架只需更改封装类 具体业务类不用动。
定义一个DaoManager
package com.chs.greendaotext;import android.content.Context;import com.chs.greendaotext.db.DaoMaster;import com.chs.greendaotext.db.DaoSession;import org.greenrobot.greendao.query.QueryBuilder;/** * 1、创建数据库 * 2、创建数据库的表 */public class DaoManager { private static final String DB_NAME="hellouf_db";//数据库名称 private volatile static DaoManager manager;//防止多线程同时访问 private static DaoMaster.OpenHelper helper; private static DaoMaster daoMaster; private static DaoSession daoSession; private Context context; /** * 使用单例模式获得操作数据库的对象 * @return */ public static DaoManager getInstance(){ if (manager==null){ synchronized (DaoManager.class){ if (manager==null){ manager = new DaoManager(); } } } return manager; } public void init(Context context){ this.context = context; } /** * 判断是否存在数据库,如果没有则创建数据库 * @return */ public DaoMaster getDaoMaster(){ if (daoMaster==null){ DaoMaster.OpenHelper helper = new DaoMaster.OpenHelper(context,DB_NAME,null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } return daoMaster; } /** * 完成对数据库的添加、删除、修改、查询的操作,仅仅是一个接口 * @return */ public DaoSession getDaoSession(){ if (daoSession==null){ if (daoMaster==null){ daoMaster = getDaoMaster(); } daoSession = daoMaster.newSession(); } return daoSession; } /** * 打开输出日志的操作,默认是关闭的 */ public void setDebug(){ QueryBuilder.LOG_SQL = true; QueryBuilder.LOG_VALUES = true; } /** * 关闭所有的操作,数据库开启的时候,使用完毕了必须要关闭 */ public void closeConnection(){ closeHelper(); closeDaoSession(); } public void closeHelper(){ if (helper!=null){ helper.close();; helper = null; } } public void closeDaoSession(){ if (daoSession!=null){ daoSession.clear();; daoSession = null; } }}
然后为每个实体类(其实每个实体类就是一个表)建立一个操作增删改查的util类来管理 比如我们上一篇中的Note类 建立一个NoteUtil
package com.chs.greendaotext;import android.content.Context;import android.util.Log;import com.chs.greendaotext.db.NoteDao;import org.greenrobot.greendao.query.Query;import java.util.List;/** * 完成对某一张表的具体操作,ORM 操作的是对象,Note */public class NoteUtils { private DaoManager manager; public NoteUtils(Context context) { manager = DaoManager.getInstance(); manager.init(context); } /** * 完成对数据库中note 表的插入操作 * @return */ public boolean insert(Note note) { boolean flag = false; flag = manager.getDaoSession().insert(note) != -1 ? true : false; Log.i("CommonUtils", "----insertNote--result is -->>" + flag); return flag; } /** * 插入多条记录,需要开辟新的线程 * @param Notes * @return */ public boolean insertMultNote(final List<Note> Notes){ boolean flag = false; try{ manager.getDaoSession().runInTx(new Runnable() { @Override public void run() { for(Note Note:Notes){ manager.getDaoSession().insertOrReplace(Note); } } }); flag = true; }catch(Exception e){ e.printStackTrace(); } return flag; } /** * 完成对Note的某一条记录的修改 * @return */ public boolean updateNote(Note note){ boolean flag = false; try{ manager.getDaoSession().update(note); flag = true; }catch(Exception e){ e.printStackTrace(); } return flag; } /** * 查詢 * @return */ public List<Note> getNoteList(){ Query<Note> notesQuery = manager.getDaoSession().getNoteDao().queryBuilder().build(); return notesQuery.list(); } /** * 根据id刪除 * @param id */ public void delete(int id){ List<Note> userList = manager.getDaoSession().getNoteDao().queryBuilder().where(NoteDao.Properties.Id.eq(id)).build().list(); for (Note note : userList) { manager.getDaoSession().getNoteDao().delete(note); } } /** * 刪除 * @return */ public boolean deleteNote(Note note) { boolean flag = false; try { //按照指定的id进行删除 delete from Note where _id = ? manager.getDaoSession().delete(note); //manager.getDaoSession().deleteAll();//删除所有的记录 flag = true; } catch (Exception e) { e.printStackTrace(); } return flag; } /** *刪除所有 */ public void deleteAllNote(Class cls){ manager.getDaoSession().deleteAll(cls); } /** * 返回多行记录 * * @return */ public List<Note> listAll() { return manager.getDaoSession().loadAll(Note.class); } /** * 按照主键返回单行记录 * * @param key * @return */ public Note listOneNote(long key) { return manager.getDaoSession().load(Note.class, key); }}
使用:
比如插入:
NoteUtils noteUtils= new NoteUtils (this); for(int i = 0;i<10;i++){ Note note = new Note(null,"item"+i,"itemsss"); noteUtils.insert(note); }
OK 封装完毕 我们就可以使用对应的util传入相应的参数来方便的操作数据库了。
0 0
- Andrid数据库框架——greenDAO(二)
- Andrid数据库框架——greenDAO(一)
- Andrid数据库框架——greenDAO(三)
- Andrid数据库框架——greenDAO(三)
- Android 数据库ORM框架——GreenDao
- Android ORM数据库框架之-greenDao(二)
- Android数据库框架greenDao学习笔记(二)---注解
- Android框架学习之GreenDao(二)数据库升级
- Andrid数据库——可视化工具
- GreenDAO 3.x官方文档 — Android ORM框架(二)
- GreenDAO 3.x官方文档 — Android ORM框架(二)
- Android 操作数据库的框架——greenDAO的学习
- Android 操作数据库的框架——greenDAO的学习
- 数据库框架GreenDao——比Realm好一点
- Android开源:数据库ORM框架GreenDao学习(二)数据库查询篇
- GreenDAO框架(二)基本使用篇
- android GreenDao数据库框架学习(1)
- android GreenDao数据库框架学习(2)
- WebApi 全局变量 Global.asax 文件
- TabarItem图片显示过大如何解决方案
- linux 3306端口转发
- Jquery电话号码的验证
- Mining Twitter Data with Python Part 3: Term Frequencies
- Andrid数据库框架——greenDAO(二)
- 跟我学Spring的学习笔记
- [译] MYSQL索引最佳实践
- 阿里云unbutu服务器配置 nginx + tomcat8 手记
- phpMyAdmin 尝试连接到 MySQL 服务器,但服务器拒绝连接--解决方法
- 关于surfaceView视频的拉伸问题
- Orinda无线ap
- webshell学习总结
- Mining Twitter Data with Python Part 4: Rugby and Term Co-occurrences