greendao连接mysql_使用GreenDao操作数据库

大神们都说GreenDao性能最好,使用方便,最近在做一个项目,刚好用到操作本地数据库,so机缘巧合,开始学习GreenDao,顺便做一下笔记。(1)原理我总有那么一个习惯,就是使用别人的工具,总想着能对其原理了解一二,一来可以学习点经验,二来就是能更好的使用这个工具。原理不在本章讨论范围内,故贴上一个网址,供大家好好参详:ORM对象关系映射之GreenDAO源码解析(2)eclipse配置使用G...
摘要由CSDN通过智能技术生成

大神们都说GreenDao性能最好,使用方便,最近在做一个项目,刚好用到操作本地数据库,so机缘巧合,开始学习GreenDao,顺便做一下笔记。

(1)原理

我总有那么一个习惯,就是使用别人的工具,总想着能对其原理了解一二,一来可以学习点经验,二来就是能更好的使用这个工具。原理不在本章讨论范围内,故贴上一个网址,供大家好好参详:ORM对象关系映射之GreenDAO源码解析

(2)eclipse配置使用

GreenDao不像其他工具一样,直接将jar包导进去就可以用了。它需要我们新建一个java工程,导入greenDao-generator.jar和freemarker.jar两个包,生成我们所需要的类文件和相应的Dao文件,然后copy到我们的Android工程供我们使用。具体请参照:Android 配置使用 GreenDao 教程

(3)高级使用(copy,以免链接失效)

增加:

dao.insert(Student entity);//添加一个

dao.insertInTx(Student...entity);//批量添加

删除:

dao.deleteByKey(Long key);//根据主键删除

dao.deleteByKeyInTx(Long...keys);//批量删除

dao.delete(Student entity);//根据实体删除

dao.deleteInTx(Student... entities);//

批量删除dao.deleteAll();//全部删除

修改:

dao.update(Student entity);//根据实体更新

dao.updateInTx(Student...entities);//批量更新

查找:

Query query = dao.queryBuilder().where(StudentDao.Properties.Name.eq(content)).build();

List list = query.list();//或者利用sql语言查询

Query query = dao.queryBuilder().where( new StringCondition("_ID IN "+"(SELECT _ID FROM STUDENT WHERE AGE = 20)").build()

创建属性约束

我们可以在为Schema添加实体的时候,在实体添加属性时候进行属性的一些约束,如

Schema schema = new Schema(1,"com.sunzxyong.greendao");

Entity entity = schema.addEntity("Student");

entity.addIdProperty().autoincrement().primaryKey();//主键,自增

entity.addStringProperty("name").notNull();//不为空

entity.addIntProperty("age");

entity.addBooleanProperty("is_man").notNull();

new DaoGenerator().generateAll(schema,"../GreenDAODemo/app/src/main/java-gen");

保持实体中自定义的代码不会被覆盖

假如你需要在实体类中自定义一些字段变量和方法,而再次generator的实体类通常会覆盖以前的,如果你不想覆盖掉你自定义的代码,可以这样设置:

schema.enableKeepSectionsByDefault();//通过次Schema对象添加的所有实体都不会覆盖自定义的代码//或者

entity.setHasKeepSections(true);//单独让某个实体不覆盖自定义的代码

如果设置了上述代码,则生成的实体中会多出以下代码:

// KEEP INCLUDES - put your custom includes here

在这里添加引入

// KEEP INCLUDES END

// KEEP FIELDS - put your custom fields here

在这里添加字段变量

// KEEP FIELDS END

// KEEP METHODS - put your custom methods here

在这里添加方法

// KEEP METHODS END

多线程环境下使用GreenDAO

在多线程的环境下使用查询,你必须调用query的 forCurrentThread()为当前的线程获得一个query实例,如:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值