• 1. greenDao的使用步骤:

    第一步:  在项目的.gradle文件里面添加

    buildscript {repositories {mavenCentral()jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.3.0'classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}}

    第二步:在moddle的.gradle文件里面添加

  • 
    apply plugin: 'org.greenrobot.greendao'
    android {compileSdkVersion 26defaultConfig {applicationId "com.example.administrator.myapplication"minSdkVersion 15targetSdkVersion 26versionCode 1versionName "1.0"testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}}
    //    greendao{
    //        schemaVersion 2
    //        schemaVersion 2 //数据库版本号
    //        daoPackage 'com.dianchou.dcw.recorddb'// 设置DaoMaster、DaoSession、Dao 包名
    //        targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
    //    }greendao {schemaVersion 1daoPackage 'com.example.administrator.myapplication.recorddb'targetGenDir 'src/main/java'}
    }

    依赖里面添加:

    dependencies {implementation fileTree(dir: 'libs', include: ['*.jar'])implementation 'com.jakewharton:butterknife:8.8.1'annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'implementation 'com.android.support.constraint:constraint-layout:1.0.2'testImplementation 'junit:junit:4.12'androidTestImplementation 'com.android.support.test:runner:0.5'androidTestImplementation 'com.android.support.test.espresso:espresso-core:2.2.2'implementation 'com.android.support:appcompat-v7:26.1.0'//数据库compile 'org.greenrobot:greendao:3.0.1'compile 'org.greenrobot:greendao-generator:3.0.0'
    }

第三步: 添加Bean类,用User举例子 , 一定要记得注解@Entity

@Entity
public class User {@Id(autoincrement = true)//设置自增长private Long id;@Index(unique = true)//设置唯一性private String perNo;//人员编号private String name;//人员姓名private String sex;//人员姓名
}

第四步: 编译项目,User实体类会自动编译,生成get、set方法并且会在com.example.john.greendaodemo.gen目录下生成三个文件;在我们Make Project后,实体内的变化如下所示:

@Entity
public class PersonInfor {@Id(autoincrement = true)//设置自增长private Long id;@Index(unique = true)//设置唯一性private String perNo;//人员编号private String name;//人员姓名private String sex;//人员姓名@Generated(hash = 1311768890)public PersonInfor(Long id, String perNo, String name, String sex) {this.id = id;this.perNo = perNo;this.name = name;this.sex = sex;}@Generated(hash = 1362534400)public PersonInfor() {}public Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getPerNo() {return this.perNo;}public void setPerNo(String perNo) {this.perNo = perNo;}public String getName() {return this.name;}public void setName(String name) {this.name = name;}public String getSex() {return this.sex;}public void setSex(String sex) {this.sex = sex;}
}
  • 2.封装数据库操作类

    一 .因为我们对数据库的操作无非就是增删改查四个操作,所以我们将他们简单封装一下。

  • public class DbController {/*** Helper*/private DaoMaster.DevOpenHelper mHelper;//获取Helper对象/*** 数据库*/private SQLiteDatabase db;/*** DaoMaster*/private DaoMaster mDaoMaster;/*** DaoSession*/private DaoSession mDaoSession;/*** 上下文*/private Context context;/*** dao*/private PersonInforDao personInforDao;private static DbController mDbController;/*** 获取单例*/public static DbController getInstance(Context context){if(mDbController == null){synchronized (DbController.class){if(mDbController == null){mDbController = new DbController(context);}}}return mDbController;}/*** 初始化* @param context*/public DbController(Context context) {this.context = context;mHelper = new DaoMaster.DevOpenHelper(context,"person.db", null);mDaoMaster =new DaoMaster(getWritableDatabase());mDaoSession = mDaoMaster.newSession();personInforDao = mDaoSession.getPersonInforDao();}/*** 获取可读数据库*/private SQLiteDatabase getReadableDatabase(){if(mHelper == null){mHelper = new DaoMaster.DevOpenHelper(context,"person.db",null);}SQLiteDatabase db =mHelper.getReadableDatabase();return db;}/*** 获取可写数据库* @return*/private SQLiteDatabase getWritableDatabase(){if(mHelper == null){mHelper =new DaoMaster.DevOpenHelper(context,"person.db",null);}SQLiteDatabase db = mHelper.getWritableDatabase();return db;}/*** 会自动判定是插入还是替换* @param personInfor*/public void insertOrReplace(PersonInfor personInfor){personInforDao.insertOrReplace(personInfor);}/**插入一条记录,表里面要没有与之相同的记录** @param personInfor*/public long insert(PersonInfor personInfor){return  personInforDao.insert(personInfor);}/*** 更新数据* @param personInfor*/public void update(PersonInfor personInfor){PersonInfor mOldPersonInfor = personInforDao.queryBuilder().where(PersonInforDao.Properties.Id.eq(personInfor.getId())).build().unique();//拿到之前的记录if(mOldPersonInfor !=null){mOldPersonInfor.setName("张三");personInforDao.update(mOldPersonInfor);}}/*** 按条件查询数据*/public List<PersonInfor> searchByWhere(String wherecluse){List<PersonInfor>personInfors = (List<PersonInfor>) personInforDao.queryBuilder().where(PersonInforDao.Properties.Name.eq(wherecluse)).build().unique();return personInfors;}/*** 查询所有数据*/public List<PersonInfor> searchAll(){List<PersonInfor>personInfors=personInforDao.queryBuilder().list();return personInfors;}/*** 删除数据*/public void delete(String wherecluse){personInforDao.queryBuilder().where(PersonInforDao.Properties.Name.eq(wherecluse)).buildDelete().executeDeleteWithoutDetachingEntities();}

    二. 看看我们的MainActivity

  • public class MainActivity extends AppCompatActivity {private Button Add,Delete,Update,Search;private DbController mDbController;private PersonInfor personInfor1,personInfor2,personInfor3,personInfor4;private long insertTipId;private TextView dataArea;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mDbController = DbController.getInstance(MainActivity.this);initView();Envent();similateData();}private void similateData() {personInfor1 = new PersonInfor(null,"001","王大宝","男");personInfor2 = new PersonInfor(null,"002","李晓丽","女");personInfor3 = new PersonInfor(null,"003","王麻麻","男");personInfor4 = new PersonInfor(null,"004","王大锤","女");}private void Envent() {Add.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//AddmDbController.insertOrReplace(personInfor1);mDbController.insertOrReplace(personInfor2);mDbController.insertOrReplace(personInfor3);mDbController.insertOrReplace(personInfor4);showDataList();}});Delete.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//DeletemDbController.delete("王麻麻");showDataList();}});Update.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//UpdatemDbController.update(personInfor1);showDataList();}});Search.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//SearchshowDataList();}});}private void showDataList() {StringBuilder sb = new StringBuilder();List<PersonInfor>personInfors = mDbController.searchAll();for(PersonInfor personInfor:personInfors){// dataArea.setText("id:"+p);sb.append("id:").append(personInfor.getId()).append("perNo:").append(personInfor.getPerNo()).append("name:").append(personInfor.getName()).append("sex:").append(personInfor.getSex()).append("\n");}dataArea.setText(sb.toString());}private void initView() {Add = findViewById(R.id.Add);Delete = findViewById(R.id.Delete);Update = findViewById(R.id.Update);Search = findViewById(R.id.Search);dataArea= findViewById(R.id.tips);}
    }

greenDao的使用与封装相关推荐

  1. Android ORM框架GreenDao用法

    Android ORM框架GreenDao用法 0 简介 android 上的ORM框架主要有两个:ormlite 和 GreenDAO,本篇主要介绍GreenDao的用法,原因是GreenDAO的速 ...

  2. android面试(16)-数据库存储框架greendao

    在进行项目开发时,免不了要实现存储功能,也就是我们常说的数据持久化,我们知道,android五种存储方式,网络存储,数据库存储,文件存储,SharePreference和contentprovider ...

  3. Android老油条都知道的7个Gradle实用奇技淫巧

    前言 Gradle在android开发中应用地十分广泛,但相信有很多同学并不很了解gradle 本文主要介绍了使用gradle的一些实用技巧,帮助读者增进对这个熟悉的陌生人的了解 主要包括以下内容 1 ...

  4. Android老油条都知道的7个Gradle实用奇技淫巧,kotlin高阶函数和lambda示例

    "com.android.support.test.espresso:espresso-idling-resource:3.0.2" : [ 'com.android.suppor ...

  5. java basedao 封装,GreenDao的实用封装

    前面简单介绍了下GreenDao的使用,从前面的介绍看来是不是觉得有点 so easy.对就是这么简单.曾经有位大神说作为一位合格的程序员就要在学习别人的东西时,有点自己的想法.为了表示我是位比较合格 ...

  6. GreenDao封装使用

    case R.id.add: //添加数据Person item=new Person(null,"wang","18");PersonHelper.getIn ...

  7. GreenDao自带异步操作类简析

    AsyncSession: GreenDao提供一个异步操作的统一接口类AsyncSession,它提供了你所需要的所有异步操作方法. 你可以通过调用DaoSession#startAsyncSess ...

  8. Android ORM 框架之 greenDAO 使用心得

    前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM  ...

  9. Android持久化存储(4)greenDAO的使用

    1.背景 在上篇博客介绍SQLite的使用我们能感觉到,虽然Android已经简化了一些SQLite的操作,提供了较为方便的API,但使用中还是需要开发者写一些SQL语言,简单而不简约,有时候只想存储 ...

最新文章

  1. Oracle中NVARCHAR2与VARCHAR2的相互转换
  2. linux语言换成英语,把Linux的默认语言改为英语
  3. nth_element
  4. SAP CX Upscale Commerce : SAP全新推出的电商云平台
  5. 电脑维修:电脑维修必备工具整理
  6. left join 和 inner join
  7. 如何在html中编写scss,编写Sass的八个技巧
  8. 解决一个输入框可输入多个条件进行查询时,后端该怎么接收参数以及SQL语句如何写
  9. 思考:日期类型的数据应该用什么样的具体形式存储到数据库?
  10. Easeljs之regX/regY详解
  11. OSG仿真案例(4)——创建烟雾粒子效果
  12. phpdesigner 的配置
  13. 8-2SpringDataJpa
  14. DirectX发展历程
  15. transform:scale实现大屏自适应
  16. 惊了!原来这就是今日头条的面试题!
  17. MySQL——数据库读写分离原理
  18. Ubuntu18.04 Cmake安装,报错openssl
  19. 计算机专业的英语复试自我介绍,计算机专业复试英语自我介绍
  20. 关于微信小程序API——wx.getLocation定位不准的问题

热门文章

  1. 肿瘤精准细胞免疫治疗:梦想照进现实
  2. 极简步骤试玩Ant Design Pro myapp demo
  3. 绿色城市智慧管理:数字孪生地下综合管廊平台
  4. web buuctf [BJDCTF2020]Mark loves cat1
  5. 一定要讲给孩子们的20个小故事
  6. 原创 关于微信拼车小程序开发的需求分析(分析建模2)
  7. 教ai玩游戏_简单解释:DeepMind如何教AI玩视频游戏
  8. css 裁剪背景图片,CSS裁剪背景图片的歪招
  9. 判断对错:逻辑结构与数据元素本身的内容和形式无关
  10. MySQL 5.6 (Win7 64位)下载、安装与配置图文教程