简单的GreendaoDemo操作进行增删该查

本文介绍如何在Android应用中利用GreenDAO进行本地数据的存储与管理,包括项目搭建步骤、实体类定义、数据库操作代码示例等。

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


一:创建一个项目工程为

greendaodemo

在 .src/main 目录下新建一个与 java 同层级的「java_gen」目录,用于存放由 greenDAO 生成的 Bean、DAO、DaoMaster、DaoSession 等类。



2.配置 Android 工程(app)的 build.gradle,如图分别添加 sourceSets 与dependencies

图一:


//第一步:
apply plugin: 'org.greenrobot.greendao'

sourceSets {
    main {
        //添加greendao配置build
        main.java.srcDirs = ["src/main/java",
                             "src/main/java_gen"]
       
    }

}


图2:



//第二步:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}

//第三步:
compile 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0'
compile 'com.google.android.gms:play-services-appindexing:8.4.0'


greendao {
    schemaVersion 1
    daoPackage 'com.fanghuiandroid.greendaodemo.java_gen'
    targetGenDir 'src/main/java'
}

代码:

在 项目工程下创建一个bean包,在bean包下创建一个UesrBean类

UserBean

@Entity  //@Entity:greendao的一个实体注解,因为有了它,我们的实体类才回被greendao识别并生成一个dao
public class UserBean {
    @Id  //@ID:主键 Long型(默认是自增长的)也可以通过@Id(autoincrement = true)设置自增长
    private Long id;   //自增长的Id一定是Long类型的
    private String name;
}
然后点击Build选择MakeProject,自动会帮我们创建三个类出来,如下图


,在MainActivity下下相应的代码,如下

package com.android.greendaodemo;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import com.fanghuiandroid.greendaodemo.bean.UserBean;
import com.fanghuiandroid.greendaodemo.java_gen.DaoMaster;
import com.fanghuiandroid.greendaodemo.java_gen.DaoSession;
import com.fanghuiandroid.greendaodemo.java_gen.UserBeanDao;

import org.greenrobot.greendao.query.Query;

import java.util.List;

public class MainActivity
        extends AppCompatActivity
        implements View.OnClickListener
{

    private TextView        mTv_show;
    private EditText        mEt_id;
    private EditText        mEt_name;
    private Button          mBt_delete;
    private Button          mBt_insert;
    private Button          mBt_select;
    private Button          mBt_update;

    private DaoSession mDaoSession;
    private TextView mTv_shows;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //数据库操作:增删改查
        /*mDaoSession = GreenDaoManager.getInstance()
                                     .getDaoSession();*/
       initSQlite();

        initView();
        initData();
        initListener();

    }

    private void initSQlite() {
        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(this, "test.db", null);
        DaoMaster                daoMaster     = new DaoMaster(devOpenHelper.getWritableDatabase());
        mDaoSession = daoMaster.newSession();
    }

    private void initListener() {
        mBt_delete.setOnClickListener(this);
        mBt_insert.setOnClickListener(this);
        mBt_select.setOnClickListener(this);
        mBt_update.setOnClickListener(this);
    }

    private void initView() {
        mTv_show = (TextView) findViewById(R.id.tv_show);
        mEt_id = (EditText) findViewById(R.id.et_id);
        mEt_name = (EditText) findViewById(R.id.et_name);
        mBt_delete = (Button) findViewById(R.id.bt_delete);
        mBt_insert = (Button) findViewById(R.id.bt_insert);
        mBt_select = (Button) findViewById(R.id.bt_select);
        mBt_update = (Button) findViewById(R.id.bt_update);
        mTv_shows = (TextView) findViewById(R.id.tv_shows);


    }


    public void initData() {


    }



    @Override
    public void onClick(View v) {
        mTv_shows.setText("");
        switch (v.getId()) {
            case R.id.bt_delete:
                String deletename= mEt_name.getText()
                                       .toString()
                                       .trim();
                if (TextUtils.isEmpty(deletename)) {
                    Toast.makeText(this, "名字不能为空", Toast.LENGTH_SHORT)
                         .show();
                    return;
                }
                deleteUser(deletename);
                break;
            case R.id.bt_insert:
                String name = mEt_name.getText()
                                      .toString()
                                      .trim();
                String id = mEt_id.getText()
                                  .toString()
                                  .trim();
                if (TextUtils.isEmpty(name)) {
                    Toast.makeText(this, "名字不能为空", Toast.LENGTH_SHORT)
                         .show();
                    return;
                }
                inserUser(null, name);
                break;
            case R.id.bt_select:
                selectUser();
                selectName("zhangsan");
                break;
            case R.id.bt_update:
                String names = mEt_name.getText()
                                      .toString()
                                      .trim();
                if (TextUtils.isEmpty(names)) {
                    Toast.makeText(this, "名字不能为空", Toast.LENGTH_SHORT)
                         .show();
                    return;
                }
                updateUser(names,"修改我是新的");
                break;
        }
        mTv_show.setText("");
        mEt_id.setText("");
        mEt_name.setText("");
    }

    private void updateUser(String oldName,String newName) {
            //先拿到相应的表格
        UserBeanDao userBeanDao = mDaoSession.getUserBeanDao();
        //更新单个
        UserBean findUser = userBeanDao.queryBuilder()
                                     .where(UserBeanDao.Properties.Name.eq(oldName))
                                     .build()
                                     .unique();
        if (findUser!=null){
            findUser.setName(newName);
            userBeanDao.update(findUser);
            Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();
        }else {
                Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();
            }
            //批量更新
            //        List<UserBean> userList = userBeanDao.queryBuilder().where(UserBeanDao.Properties.Name.eq(prevName)).build().list();
            //        Log.e("userList", userList + "");
            //        if (userList.isEmpty()) {
            //            Toast.makeText(MyApplication.getContext(), "用户不存在", Toast.LENGTH_SHORT).show();
            //        } else {
            //            for (UserBean user : userList) {
            //                user.setName(newName);
            //                userBeanDao.update(user);
            //                Log.e("修改", "修改成功");
            //            }
            //            Toast.makeText(MyApplication.getContext(), "更新成功", Toast.LENGTH_SHORT).show();
            //        }

            /*mNewNameET.setText("");
            mNameET.setText("");
            mUserList.clear();
            mUserList.addAll(userBeanDao.queryBuilder().build().list());
            mUserAdapter.notifyDataSetChanged();*/
        }



    public void inserUser(Long id, String name) {

        //获取表
        UserBeanDao userBeanDao = mDaoSession.getUserBeanDao();
        //创建一个UseBan的对象
        UserBean userBean = new UserBean(id, name);
        //插入表
        userBeanDao.insert(userBean);
        /*mUserList.clear();
        mUserList.addAll(userDao.queryBuilder().build().list());
        mUserAdapter.notifyDataSetChanged();*/

    }

    private void selectUser() {

        UserBeanDao userBeanDao = mDaoSession.getUserBeanDao();
        List<UserBean> list     = userBeanDao.queryBuilder()
                                             .build()
                                             .list();
        StringBuffer sb=new StringBuffer();
        for (UserBean bean : list) {
            sb.append(bean.getId()+bean.getName()+"\n");
        }
       mTv_show.setText(list.size()+"个");
       mTv_shows.setText(sb.toString());

        //userBeanDao.queryRaw();


    }

    private void deleteUser(String name) {
        UserBeanDao userBeanDao =mDaoSession.getUserBeanDao();
        //删除
        /*UserBean findUser = userBeanDao.queryBuilder().where(UserBeanDao.Properties.Name.eq(name)).build().unique();
        if (findUser != null) {
            userBeanDao.deleteByKey(findUser.getId());
        }*/
        //        //根据某一个条件批量删除
        //        List<UserBean> userList = userBeanDao.queryBuilder().where(UserBeanDao.Properties.Name.eq(name)).build().list();
        //        for (UserBean user : userList) {
        //            userBeanDao.delete(user);
        //        }

        //先根据条件查询到相应的信息
        UserBean findUser= userBeanDao.queryBuilder().where(UserBeanDao.Properties.Name.eq(name)).build().unique();
        if(findUser!=null){
            //然后根据id删除
            userBeanDao.deleteByKey(findUser.getId());
        }


    }

    //根据条件查询
    public void selectName(String name ){
        //根据名字查询相应的信息
        UserBeanDao userBeanDao = mDaoSession.getUserBeanDao();
//        userBeanDao.queryBuilder().where(UserBeanDao.Properties.Name.eq(name)).build().unique();
        //根据条件查询
       // List<UserBean> userBeen = userBeanDao.queryRaw(null, null);

       StringBuffer sb=new StringBuffer();
        /* for (UserBean bean : userBeen) {
            sb.append(bean.getId()+bean.getName()+"\n");
        }*/

        //查询
        Query<UserBean> build = userBeanDao.queryBuilder()
                                           .where(UserBeanDao.Properties.Name.eq(name))
                                           // .orderAsc(UserBeanDao.Properties.Date)
                                           .build();
        List<UserBean> list = build.list();
        for (UserBean beans: list ) {
            sb.append(beans.getId()+"---"+beans.getName());
        }

        mTv_shows.setText(sb.toString());
    }


}
布局部分:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/activity_main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.fanghuiandroid.greendaodemo.MainActivity">

    <TextView
        android:id="@+id/tv_show"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Hello World!"/>
    <EditText
        android:hint="请输入id"
        android:id="@+id/et_id"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <EditText
        android:hint="输入名字"
        android:id="@+id/et_name"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/bt_insert"
        android:text="插入"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/bt_update"
        android:text="修改"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/bt_delete"
        android:text="删除"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <Button
        android:text="查询"
        android:id="@+id/bt_select"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/tv_shows"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="Hello World!"/>


</LinearLayout>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值