GreenDao简单使用

本文介绍了如何在Android项目中导入并使用GreenDao库。首先,详细阐述了在Gradle文件中配置GreenDao依赖的步骤,包括在project和app级别的Gradle文件中添加相关代码。接着,展示了创建User实体类的过程,当项目成功运行后,GreenDao会自动生成 DaoMaster 和 DaoSession。在UI设计上,使用四个Button实现增删改查功能,并提供了相关的操作代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一.导入依赖
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);
                }
            }
        });
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值