greenDAO项目实战-ToOne-ToMany实现一对一,一对多关联映射
619 字
3 分钟
greenDAO项目实战-ToOne-ToMany实现一对一,一对多关联映射
在上一篇文章greenDAO项目实战中,我们对GreenDao有了初步的认识。今天我们熟悉一下GreenDao中使用
ToOne和ToMany实现一对一,一对多关联映射。本文在上篇的基础上进行。
添加Category类
我们现在对上一篇的Note进行扩展,添加类别。我们假设一个Note属于一个类别Category,一个类别Category可以拥有多个Note.
@Entitypublic class Category { @Id private Long id; private String name; @ToMany(referencedJoinProperty = "categoryId") private List<Note> notes;修改Note类,Category信息
@Entitypublic class Note { @Id(autoincrement = true) private Long id; @NotNull private String text; private String comment; private java.util.Date date;
@Convert(converter = NoteTypeConverter.class, columnType = String.class) private NoteType type;
private Long categoryId;
@ToOne(joinProperty = "categoryId") private Category category; //省略了其他的geter,setter}注解分析
上面的Category类代码中:
@ToMany(referencedJoinProperty = "categoryId")这个注解表明,一个Category可以拥有多个Note(一对多).referencedJoinProperty= "categoryId"表示使用Note类中的categoryId字段进行关联。注意这个字段应该是Long类型.在Category中用 List<Note> notes表示拥有的Note.
上面的Note类代码中:
@ToOne(joinProperty = "categoryId")这个注解表明,一个Note属于一个Category。注意我们添加了private Long categoryId这字段,然后在@ToOne注解中使用joinProperty = "categoryId"把Category用categoryId关联起来。
经过在一的端(Category)使用@ToMany,在多的端(Note)使用@ToOne,我们就把一对多和多对一关联关系建立起来了。
使用
//添加一个类别:技术分享. Category category = new Category(1L,"技术分享"); categoryDao.insert(category);
//添加一个类别:心灵鸡汤. category = new Category(2L,"心灵鸡汤"); categoryDao.insert(category);
//添加一条技术分享note记录 Note note = new Note(); note.setText("这是note内容文本,技术分享"); note.setComment("这是note的comment"); note.setDate(new Date()); note.setType(NoteType.TEXT); note.setCategoryId(1L);//设置分类为技术分类 noteDao.insert(note);
//再添加一条技术分享note记录 note = new Note(); note.setText("这是note内容文本,也是技术分享"); note.setComment("这是note的comment"); note.setDate(new Date()); note.setType(NoteType.TEXT); note.setCategoryId(1L);//设置分类为技术分类 noteDao.insert(note);
//接着添加一条属于心灵鸡汤Note记录 note = new Note(); note.setText("这是note内容文本,心灵鸡汤"); note.setComment("这是note的comment"); note.setDate(new Date()); note.setType(NoteType.TEXT); note.setCategoryId(2L);//设置分类为心灵鸡汤 noteDao.insert(note);
//查询所有的分类为技术分享(id=1)的note数据 List<Note> notes = categoryDao.load(1L).getNotes(); System.out.println(notes); //通过Note反查Category noteDao.load(1L).getCategory().getName();
//顺便演示一下通过对文本内容的模糊查询匹配返回包含"心灵鸡汤"文本的Note。 notes = noteDao.queryBuilder().where(NoteDao.Properties.Text.like("%心灵鸡汤%")).list(); System.out.println(notes);支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
greenDAO项目实战-ToOne-ToMany实现一对一,一对多关联映射
https://ernest-su.github.io/greendao-project-practice-toone-tomany/相关文章智能推荐
1
greenDAO项目实战
开发效率在安卓移动APP开发过程中,一般使用安卓默认的sqlite数据库做数据持久化存储。虽然android提供了ContentProvider等框架支持,但是写SQL语句依然是一件不少程序猿的头疼的事。无论是简单的SQL语句,还是复杂的多表查询,都是影响开发效率的苦力活。幸运的是,我们
2
如何快速搭建模拟接口服务
开发效率相信大家在移动APP开发中,无论是做安卓还是iOS开发,都会遇到一个很尴尬的问题,接口没有开发好。而请求网络接口数据是开发中开发流程的第一步,因此方便快捷的模拟接口返回数据给APP,有助于提高开发效率。
3
GitHub上star超过2k的安卓项目和代码风格指南(绝对干货)
最佳实践近日在搜MVP模式作为安卓项目架构时候,发现GitHub上一篇介绍MVP架构的文章。一看star已经超过2K了。作者同项目的这篇文章讲安卓项目和代码风格指南,也非常有参考价值。为了方便大家查阅,把原文翻译了一下。点击查看作者介绍安卓MVP架构指南的翻译文章。
4
GitHub上star超过2k的安卓MVP架构指南
架构近日在搜MVP模式作为安卓项目架构时候,发现GitHub上一篇介绍MVP架构的文章。一看star已经超过2K了。通读全文发现作者用实际项目将MVP架构要怎么分职责讲得十分通俗易懂。为了方便大家查阅,把原文翻译了一下。作者还有一篇文章讲安卓项目和代码风格指南的。欢迎查看相关翻译。
5
Linux 命令手册安卓版
工具前两天逛GitHub时候发现了一个命令行手册项目jaywcjlove/linuxcommand 手册网站,觉得非常实用。GitHub的Pages很方便,但是国内访问有时候比较慢。虽然网上类似的在线手册很多了,但是我觉得一个手册应该是随手可用,而且即使在没有网时候,也可随时翻阅的。
随机文章随机推荐











