GreenDao数据库框架 最精简使用教程 并对其进行简单封装
来源:互联网 发布:父母之爱 知乎 编辑:程序博客网 时间:2024/06/06 16:33
GreenDao框架的使用步骤:(android studio)
1.首先在project的build.gradle下进行添加如下依赖:
dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.1.1' }
2.然后在Module的build.gradle下添加如下:
sourceSets{ main{ java.srcDirs=['src/main/java','src/main/java-gen'] }}dependencies {compile 'org.greenrobot:greendao:3.1.1'compile 'org.greenrobot:greendao-generator:3.1.0'}
3.依赖模块加载完毕之后,添加greendao generator模块
1.在 .src/main 目录下新建一个与 java 同层级的「java-gen」目录,用于存放由 greenDAO 生成的 Bean、DAO、DaoMaster、DaoSession 等类。 2.然后在project中新添加一个纯java模块,也就是一个java library 3.在新创建的java Module中添加依赖: dependencies { compile 'org.greenrobot:greendao-generator:3.1.0' }
4.在新建的模块中唯一的java类中编写,要创建的数据库
public static void main(String[] args) { //创建一个用于添加实体(Entity)的模式(Schema)对象 // 两个参数分别代表:数据库版本号 和 自动生成实体类的包路径。 Schema schema = new Schema(1, "com.student.entity"); //设置自动生成的Dao类所在的包 schema.setDefaultJavaPackageDao("com.student.dao"); // 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以 // 及是否使用 keep sections。 // schema2.enableActiveEntitiesByDefault(); // schema2.enableKeepSectionsByDefault(); //向Schema对象(数据库)中添加实体类(表) addStudent(schema); //最后我们将使用 DAOGenerator 类的 generateAll() 方法自动生成代码, //此处你需要根据自己的情况更改输出目录(既之前创建的 java-gen)。 try { new DaoGenerator().generateAll(schema, "E:\\AndroidWorkSpace\\GreenDaoDemo\\app\\src\\main\\java-gen"); } catch (Exception e) { e.printStackTrace(); }}//创建数据库的表private static void addStudent(Schema schema) { Entity entity = schema.addEntity("Student");//创建数据库的表 entity.addIdProperty();//主键 是int类型 entity.addStringProperty("name"); entity.addStringProperty("address"); entity.addIntProperty("age");}
4.执行添加的Moudule的main方法,将在设置好的java-gen目录下生成对应的代码.
5.然后就在安卓工程中进行数据库操作吧
6.首先定义一个单例manager用于得到对数据库进行操作的Session对象.
/** * 1.创建数据库 * 2.创建表 * 3.增删改查 * 4.对数据库的升级 * Created by ZheWei on 2016/9/9. */public class DaoManager { private static final String TAG = "DaoManager"; private static final String DB_NAME = "mydb.sqlite";//数据库名称 private volatile static DaoManager manager;//多线程访问声明为单例模式 private static DaoMaster.DevOpenHelper helper; private static DaoMaster master; private static DaoSession session; private Context mContext; private DaoManager() { } public void init(Context context) { this.mContext = context; } public static DaoManager getInstance() { if (manager == null) { synchronized (DaoManager.class) { if (manager == null) { manager = new DaoManager(); } } } return manager; } /** * 判断是否存在数据库,如果没有则创建数据库 */ // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。 // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。 // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。 // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。 public DaoMaster getMaster() { if (master == null) { helper = new DaoMaster.DevOpenHelper(mContext, DB_NAME, null); master = new DaoMaster(helper.getWritableDatabase()); } return master; } /** * 完成对数据库的 增删改查 ,这里仅仅是一个接口 */ public DaoSession getSession() { if (session == null) { if (master == null) { master = getMaster(); } session = master.newSession(); } return session; } /** * 打开输出日志的操作,默认的是关闭的 */ public void setDeBug() { QueryBuilder.LOG_SQL = true; QueryBuilder.LOG_VALUES = true; } /** * 关闭所有的连接 */ public void closeConnections() { closeHelper(); closeSession(); } private void closeSession() { if (session != null) { session.clear(); session = null; } } private void closeHelper() { if (helper != null) { helper.close(); helper = null; } }}
7.定义一个工具类用于具体的对数据库进行增删改查操作
/** * 完成对某一张表的具体操作, ORM 操作的是对象 * Created by ZheWei on 2016/9/9. */public class CommonUtils {private DaoManager mDaoManager;public CommonUtils(Context context) { mDaoManager = DaoManager.getInstance(); mDaoManager.init(context);}/** * 完成对数据库表的插入操作-->并且会检测数据库是否存在,不存在自己创建, */public boolean insertStudent(Student student) { boolean flag; flag = mDaoManager.getSession().insert(student) != -1;//不等于-1是true 否则是false Log.i("MainActivity", "insertStudent: " + flag); return flag;}/** * 同时插入多条记录 */public boolean insertMultStudent(final List<Student> students) { boolean flag = false; try { mDaoManager.getSession().runInTx(new Runnable() { @Override public void run() { for (Student s : students) { mDaoManager.getSession().insertOrReplace(s); } } }); flag = true; } catch (Exception e) { e.printStackTrace(); } Log.d("MainActivity", "insertMultStudent: " + flag); return flag;}/** * 修改指定记录 */public boolean uoDateStudent(Student student) { boolean flag = false; try { mDaoManager.getSession().update(student); flag = true; } catch (Exception e) { e.printStackTrace(); } Log.i("MainActivity", "uoDateStudent: " + flag); return flag;}/** * 删除指定记录 */public boolean deleteStudent(Student student) { boolean flag = false; try { mDaoManager.getSession().delete(student); flag = true; } catch (Exception e) { e.printStackTrace(); } Log.i("MainActivity", "deleteStudent: " + flag); return flag;}/** * 删除所有的记录 */public boolean deleteAll() { boolean flag = false; try { mDaoManager.getSession().deleteAll(Student.class); flag = true; } catch (Exception e) { e.printStackTrace(); } Log.i("aaa", "deleteAll: " + flag); return flag;}/** * 查询 某一个表 的 所有记录 */public List<Student> listAll() { return mDaoManager.getSession().loadAll(Student.class);}/** * 按照主键查询某一个 表 中 的单行记录 */public Student listOneStudent(long key) { return mDaoManager.getSession().load(Student.class, key);}/** * 按照sql语句进行查询 */public void queryBySql() { List<Student> list = mDaoManager.getSession().queryRaw(Student.class, "where name like ? and _id<=?", new String[]{"%jo%", "4"}); for (Student s : list) { Log.i("MainActivity", s.getId() + ""); }}/** * 使用查询构建器进行查询 */public void queryByBuilder() { //使用查询构建器 QueryBuilder<Student> queryBuilder = mDaoManager.getSession().queryBuilder(Student.class); //这些条件是 逻辑与 queryBuilder.where(StudentDao.Properties.Name.like("john")); List<Student> list = queryBuilder.where(StudentDao.Properties.Id.le(4)).list(); for (Student s : list) { Log.i("MainActivity", s.getId() + ""); }}}
0 0
- GreenDao数据库框架 最精简使用教程 并对其进行简单封装
- 对MBProgressHUD进行封装并精简使用
- 使用GreenDao对数据库进行操作
- GreenDao使用简单封装
- GreenDao框架使用教程
- Android数据库框架GreenDao封装使用,易理解、易扩展
- Android开源:数据库ORM框架GreenDao封装工具类使用
- greenDao 数据库框架 使用
- 自定义UISearchBar,对其进行了简单的封装。方便项目中的使用
- GreenDao数据库简单使用
- greenDAO使用步骤(Android时下最流行数据库框架)
- JDBC--java链接数据库并对其进行操作
- greenDao的简单使用教程
- Android GreenDao数据库框架使用
- 使用ORM数据库框架greenDao
- GreenDao数据库框架的使用
- Greendao的简单使用和封装
- Log日志框架-对原生Log进行简单封装
- 解决 kde 下 shutter 菜单、提示文字乱码
- 004-MOV指令的寻址方式
- 如何在Linux下更新安装VMware Tools
- VS连接SQL Server 2008,并实现登录和注册功能
- uC/OS – II中的任务_读书笔记_2
- GreenDao数据库框架 最精简使用教程 并对其进行简单封装
- 最容易理解的java回调函数例子
- 使用 Velocity 模板引擎快速生成代码
- JDBC
- Python学习--正则表达式
- Linux-C预习内容(一)
- Windows下搭建PHP开发环境
- 电路设计_RFID学习
- LeetCode 83. Remove Duplicates from Sorted List