GreenDao简单使用

来源:互联网 发布:掌上电脑写卡软件 编辑:程序博客网 时间:2024/06/05 10:06

一.导入依赖
1.在project的gradle下

classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'

2.在app的gradle下

2.1在最上方

apply plugin: 'org.greenrobot.greendao'

2.2在android{ }里 (此处的包名需要修改成自己的)

    greendao {        schemaVersion 1        daoPackage 'com.test.greendao2.gen'        targetGenDir 'src/main/java'    }

2.3在最下边的dependencies { }里

compile 'org.greenrobot:greendao:3.2.0'

二.编写代码
1创建一个实体类User

/** * @Entity表示这个实体类一会会在数据库中生成对应的表 * @Id表示该字段是id,注意该字段的数据类型为包装类型Long * @Property则表示该属性将作为表的一个字段 * @Transient,该注解表示这个属性将不会作为数据表中的一个字段 * @NotNull表示该字段不可以为空 * @Unique表示该字段唯一 *  * 成功之后系统会帮助我们生成相应的构造方法和get/set方法,并且还会在我们的包下生成DaoMaster和DaoSession */@Entity  public class User {      @Id      private Long id;      @Property(nameInDb = "USERNAME")      private String username;      @Property(nameInDb = "NICKNAME")      private String nickname;  } 

创建之后运行一下项目,成功之后系统会帮助我们生成相应的构造方法和get/set方法,并且还会在我们的包下(gen包)生成DaoMaster和DaoSession

布局我用了4个button按钮,分别是增删改查

然后是进行增删改查的操作了(建议使用ButterKnife,比较简便省事,我懒得再改了)
MainActivity.java

public class MainActivity extends AppCompatActivity {    private UserDao userDao;    private Button badd,bsel,bup,bdel;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        //获取控件        badd = (Button) findViewById(R.id.badd);        bsel = (Button) findViewById(R.id.sel);        bup = (Button) findViewById(R.id.update);        bdel = (Button) findViewById(R.id.del);        //数据库的初始化        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(getApplicationContext(), "lenve.db", null);        DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDb());        DaoSession daoSession = daoMaster.newSession();        //获取UserDao        userDao = daoSession.getUserDao();        /*点击事件*/        //添加        badd.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                Random random = new Random();                User user = new User(null, "zhangsan" + random.nextInt(9999),"张三");                userDao.insert(user);            }        });        //查询        bsel.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                List<User> list = userDao.queryBuilder()                        .where(UserDao.Properties.Id.between(2, 13)).limit(5).build().list();                for (int i = 0; i < list.size(); i++) {                    Log.d("google_lenve", "search: " + list.get(i).getUsername());                }            }        });        //修改(修改数据先查询,再修改)        bup.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                User user = userDao.queryBuilder()                        .where(UserDao.Properties.Id.ge(10), UserDao.Properties.Username.like("%90%")).build().unique();                if (user == null) {                    Toast.makeText(MainActivity.this, "用户不存在!", Toast.LENGTH_SHORT).show();                }else{                    user.setUsername("王五");                    userDao.update(user);                }            }        });        //删除(删除数据和修改数据的思路一样,都是要先查找到数据)        bup.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {                List<User> userList = (List<User>) userDao.queryBuilder().where(UserDao.Properties.Id.le(10)).build().list();                for (User user : userList) {                     userDao.delete(user);                }            }        });    }}