一:创建一个项目工程为
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>