最详细GreenDao3.2的基本使用
来源:互联网 发布:addlistener js 编辑:程序博客网 时间:2024/05/21 08:44
转载请标明地址http://blog.csdn.net/qq_30034925/article/details/54729734
GreenDao官网说它是最好的数据库框架,我们也当真吧,反真它的更新进度给力,最近都有在更新。也使得我们android程序员使用起来越来越方便。至于为什么使用它这里不做多解析。进入正题。
首先我们需要在项目build.gradle中导入包`
dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' }
接着在model中的build.gradle中导入包
dependencies { compile 'org.greenrobot:greendao:3.2.0' compile 'org.greenrobot:greendao-generator:3.2.0'}
接着在模块build.gradle的顶部添加
apply plugin: ‘org.greenrobot.greendao’
以及
greendao { schemaVersion 1 daoPackage 'com.jian.greendao.gen'//这个是生成代码保存的包名 targetGenDir 'src/main/java'//保存到java代码路径 }
同步后就可以使用greenDao。
先来看看greenDao强大的自动生成代码功能
创建实体类
@Entitypublic class User { @Id(autoincrement = true) private Long id; private String name; private String sex; private int age; private int salary; }
我们字需要编写这些,大家应该看到,在最顶部有一个@Entity,这个标志告诉greenDao,这个是我需要生成的表。接着点击 Build -> Make Project(快捷键ctrl+F9),将会自动为我们生成需要的类和代码
生成的User类
@Entitypublic class User { @Id(autoincrement = true) private Long id; private String name; private String sex; private int age; private int salary; @Generated(hash = 257789183) public User(Long id, String name, String sex, int age, int salary) { this.id = id; this.name = name; this.sex = sex; this.age = age; this.salary = salary; } @Generated(hash = 586692638) public User() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public String getSex() { return this.sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } public int getSalary() { return this.salary; } public void setSalary(int salary) { this.salary = salary; }}
生成的类
创建App类,继承Application
public class App extends Application { public static final boolean ENCRYPTED = true; private DaoSession daoSession; @Override public void onCreate() { super.onCreate(); DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, ENCRYPTED ? "users-db-encrypted" : "users-db"); Database db = helper.getWritableDb(); daoSession = new DaoMaster(db).newSession(); } public DaoSession getDaoSession() { return daoSession; }}
tip:别忘记在manifeste把它添加进去
这个类起到防止重复创建数据库的操作。当然也可以使用单例模式来实现。
使用GreenDao进行增删改查
package com.example.jian.asked;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.RecyclerView;import com.example.greendao.gen.DaoSession;import com.example.greendao.gen.UserDao;import org.greenrobot.greendao.query.Query;import org.greenrobot.greendao.query.QueryBuilder;import java.util.List;public class MainActivity extends AppCompatActivity { private Query<User> userQuery; private RecyclerView recyclerView; private MyAdapter myAdapter ; UserDao userDao; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); DaoSession daoSession =((App) getApplication()).getDaoSession(); userDao = daoSession.getUserDao(); userQuery = userDao.queryBuilder().orderAsc(UserDao.Properties.Id).build(); } //插入数据 private void insertUser(){ User user = new User(null,"jianguotang", "男",18,2000); userDao.insert(user); } //删除特定位置的数据 private void deleteUser(){ userDao.deleteByKey(5l); } /** * 对位置 为position的的数据进行修改 * @param position */ private void updateUser(Long position){ //查询id是1位置的数据 User user = userDao.load(5l); //对其进行修改 user.setName("简国堂"); userDao.update(user); } //查询全部的数据 private List<User> queryList(){ List<User> users = userQuery.list(); return users; } /** * 按照属性name和sex来查询user * @param name */ private List<User> queryByName(String name,String sex){ QueryBuilder<User> builder = userDao.queryBuilder(); Query<User> query = builder .where(UserDao.Properties.Name.eq(name),UserDao.Properties.Sex.eq(sex)) .build(); List<User> list = query.list(); return list; }}
GreenDao注解
@Entity 用于标识这是一个需要Greendao帮我们生成代码的bean@Id 标明主键,括号里可以指定是否自增@Property 用于设置属性在数据库中的列名(默认不写就是保持一致)@NotNull 非空@Transient 标识这个字段是自定义的不会创建到数据库表里@Unique 添加唯一约束
@ToOne 是将自己的一个属性与另一个表建立关联(外键)
@ToMany的属性referencedJoinProperty,类似于外键约束。
@JoinProperty 对于更复杂的关系,可以使用这个注解标明目标属性的源属性。
4 0
- 最详细GreenDao3.2的基本使用
- GreenDao3.2的基本使用
- greenDao3的基本使用
- GreenDao3的基本使用
- GreenDao3.2的基本使用入门
- greenDao3.0 的基本使用
- GreenDao3.0 的基本使用
- greenDAO3.2的使用
- GreenDao3.2的使用
- greenDAO3.2的使用
- greendao3.2的简单使用
- Android 笔记:GreenDao3.2的使用,爱不释手
- GreenDao3的初步使用
- GreenDao3.0的使用
- GreenDao3的简单使用
- GreenDao3.0的使用
- greendao3.22的使用
- Greendao3.2使用
- 关于tomcat
- perl post模拟elasticsearch _mget
- SpringMVC框架的搭建(非注解形式)
- SPI和service provider framework介绍
- NOIP2001普及组 数的划分
- 最详细GreenDao3.2的基本使用
- 【ATSC】美国第二大有线电视公司-Charter
- C# 操作符??和?:
- extjs4导入数据到表格控件
- Linux下C++动态库
- Codeforces Round #393 Petr and a calendar
- USA三大有线电视设备运营商
- 漫谈NFV、NV、SDN
- Angular中$scope的$watch