GreenDao实例及一些问题
来源:互联网 发布:c语言char字符串 编辑:程序博客网 时间:2024/05/22 15:11
最近在用GreenDao,做了一个小Demo,其中遇到了一些大多数人都会遇到的问题,也有一些坑。
记录下来,并传到github上,方便大家学习并跳坑。
现在的github当前版本有个未解的空指针问题,希望有人遇到的时候解决之后能告知为什么。
初学者总会遇到一些坑,有时候灵光一现就想明白了问题出在哪,有时候好几天也想不明白。
希望能共同进步,共同分享。
应用GreenDao的方式网上有很多帖子的,这里就不赘述了。
先将注释的一些意义写下来
1.)实体@Entity注解
schema:告知GreenDao当前实体属于哪个schema
active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法
nameInDb:在数据中使用的别名,默认使用的是实体的类名
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表**
2.)基础属性注解
@Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长
@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名举例:@Property (nameInDb="name")
@NotNul:设置数据库表当前列不能为空
@Transient:添加次标记之后不会生成数据库表的列
3.)索引注解
@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束
@Unique:向数据库列添加了一个唯一的约束
4.)关系注解
@ToOne:定义与另一个实体(一个实体对象)的关系
@ToMany:定义与多个实体对象的关系
(一) @Entity 定义实体
@nameInDb 在数据库中的名字,如不写则为实体中类名
@indexes 索引
@createInDb 是否创建表,默认为true,false时不创建
@schema 指定架构名称为实体
@active 无论是更新生成都刷新
(二) @Id
(三) @NotNull 不为null
(四) @Unique 唯一约束
(五) @ToMany 一对多
(六) @OrderBy 排序
(七) @ToOne 一对一
(八) @Transient 不存储在数据库中
(九) @generated 由greendao产生的构造函数或方法
下面看一下自己的类的三种模式
第一种,简单自定义类
@Entitypublic class User { @Id(autoincrement = true) private Long id; private String name; private String age; private String sex; private String salary;这是最简单的自定义类,这样写完直接就可以生成Dao文件
第二种 包含子类的自定义类
父类@Entitypublic class Student { @Id(autoincrement = true) private Long id; private String name; private String age; private String sex; private String salary; private Long bookId; @ToOne(joinProperty = "bookId") private Books booklist;
子类@Entitypublic class Books{ @Id private Long id; private String bookname; private String bookprice;
需要用@ToOne注释来声明父类和子类的对应关系
第三种 包含List<X>子类的自定义类
父类@Entity( active = true, nameInDb = "CLIENTS")public class Client { @Id(autoincrement = true) private long id; @NotNull private String nom; @NotNull private String prenom; @ToMany(referencedJoinProperty = "clientId") private List<Commande> listeCommandes;
子类@Entity( active = true, nameInDb = "COMMANDES")public class Commande { @Id(autoincrement = true) private long id; @NotNull private String libelle; @NotNull private long clientId; @NotNull @ToOne(joinProperty = "clientId") private Client client;
需要分别声明子类和父类的一对多和多对多的对应关系
其他问题详情,可以看github上的案例,地址https://github.com/beibeiMary/GreenDaoDemo.git
但现在案例中有个问题,希望有遇到过,或者解决过的朋友们留个言,寻求解决办法
dao =BaseApplication.getApplication().getDaoSession().getUserDao();
上面这句代码中的getDaoSession()方法为空指针,也就是
private void setDatabase() { mHelper = new DaoMaster.DevOpenHelper(this,"users-db", null); db =mHelper.getWritableDatabase(); // 注意:该数据库连接属于DaoMaster,所以多个 Session 指的是相同的数据库连接。 mDaoMaster = new DaoMaster(db); mDaoSession = mDaoMaster.newSession(); Log.e("zhsy","mDaoSession=="+mDaoSession); }
报错信息如下。mDaoSession = mDaoMaster.newSession();这句获取为空指针。求解决办法
BaseApplication.getDaoSession()' on a null object reference
欢迎留言,后续会继续寻找该问题的解决方案。
- GreenDao实例及一些问题
- GreenDao的基本使用及实例
- GreenDao 3.1.1 使用示例及问题总结
- Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点(一)
- samba服务器创立及附上自己和别人的实例及一些无法登陆的问题
- Hibernate 一对多 多对一 实例 及一些 问题(1)插入及查询
- 一些问题及解决方法
- Hibernate 一对多 多对一 实例 及一些 问题(2)字典项的使用
- Android-----SimpleAdapter创建ListView的实例,及值得注意的一些细节问题
- Android greendao配置及使用
- greenDao及各框架使用
- mybait中一些标签使用说明及实例
- jsp实例及乱码问题
- jasperreport开发实例及问题
- GreenDao模糊(like)查询问题
- 使用greenDAO遇到的问题
- android greenDao 编译问题总结
- Android之GreenDao问题(1)
- pb生成excel的两种方式
- HDOJ1233 kruskal裸题
- MFC Tab Control控件的详细使用
- oracle当中的行转列相关问题
- 续上面
- GreenDao实例及一些问题
- druid数据源监控配置和异常问题
- 用户画像
- java学习基础
- java String
- easyui combobox 输入下拉框不存在的值校验
- [caioj]1100: [视频]线段树2(统计不同颜色)
- 关于自家小麦被邻家大牛吃掉的问题的思考
- 关于GAN的问题