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

来源:互联网 发布:郑州学历网络教育 编辑:程序博客网 时间:2024/05/18 01:20


一:创建一个项目工程为

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识别并生成一个daopublic 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>

1 0