GreenDao的配置和简单的使用
来源:互联网 发布:tomcat 多域名绑定 编辑:程序博客网 时间:2024/06/01 07:18
关于greendao详情讲解请参考
一.GreenDao 介绍:
greenDAO是一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。如下图所示:
官网地址:http://greenrobot.org/greendao/
github:https://github.com/greenrobot/greenDAO
二.greendao的优点
性能高,速度快,使用简单,文件较小,占用更少的内存。
性能高,号称Android最快的关系型数据库内存占用小库文件比较小,小于100K,编译时间低,而且可以避免65K方法限制支持数据库加密 greendao支持SQLCipher进行数据库加密 有关SQLCipher可以参考这篇博客Android数据存储之Sqlite采用SQLCipher数据库加密实战简洁易用的API
三.关于配置
1.在project的build.grade
设置
mavenCentral()
classpath ‘org.greenrobot:greendao-gradle-plugin:3.0.0’
在项目的build.grade
设置 apply plugin: ‘org.greenrobot.greendao’
在dependencies标签里设置
compile’org.greenrobot:greendao:3.0.1’
compile’org.greenrobot:greendao-generator:3.0.0’
在android 标签里设置
greendao { schemaVersion 1 daoPackage 'com.greendaodemo2try.gen' targetGenDir 'src/main/java'}这里有必要解释一下schemaVersion表示数据库版本号,每次数据库升级的时候我们修改这里的版本号即可(修改这里的版本号,greenDAO会自动修改生成到DAOMaster中的版本号),targetGenDir表示greenDAO生成的DAOMaster和DaoSession的位置,daoPackage 由GreenDao自动生成代码所在的包名,默认的是在项目包下面新建一个gen
弄好之后图片如上
四.传建一个实体类
@Entitypublic class User { @Id private Long id; private String name; @Transient private int tempUsageCount; // not persisted }
关于注解解释
注解:
@Entity 标识实体类,greenDAO会映射成sqlite的一个表,表名为实体类名的大写形式
@Id 标识主键,该字段的类型为long或Long类型,autoincrement设置是否自动增长
@Property 标识该属性在表中对应的列名称, nameInDb设置名称
@Transient 标识该属性将不会映射到表中,也就是没有这列
@NotNull 设置表中当前列的值不可为空
@Convert 指定自定义类型(@linkPropertyConverter)
@Generated greenDAO运行所产生的构造函数或者方法,被此标注的代码可以变更或者下次运行时清除
@Index 使用@Index作为一个属性来创建一个索引;定义多列索引(@link Entity#indexes())
@JoinEntity 定义表连接关系
@JoinProperty 定义名称和引用名称属性关系
@Keep 注解的代码段在GreenDao下次运行时保持不变
1.注解实体类:默认禁止修改此类 2.注解其他代码段,默认禁止修改注解的代码段
@OrderBy 指定排序
@ToMany 定义与多个实体对象的关系
@ToOne 定义与另一个实体(一个实体对象)的关系
@Unique 向数据库列添加了一个唯一的约束
运行一下会生成出这个
GreenDao使用
public class MyApplication extends Application { private DaoMaster.DevOpenHelper mHelper; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession; public static MyApplication instances; @Override public void onCreate() { super.onCreate(); instances = this; setDatabase(); } public static MyApplication getInstances(){ return instances; } /** * 设置greenDao */ private void setDatabase() { // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。 // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。 // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。 // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。 mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null); db = mHelper.getWritableDatabase(); // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 mDaoMaster = new DaoMaster(db); mDaoSession = mDaoMaster.newSession(); } public DaoSession getDaoSession() { return mDaoSession; } public SQLiteDatabase getDb() { return db; }}
菜鸟别忘了要在清单文件配置
android:name=”.MyApplication”
我在MainActivity里添加了Button的点击事件
public class MainActivity extends AppCompatActivity {private UserDao userDao; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv= (TextView) findViewById(R.id.tev); Button btn= (Button) findViewById(R.id.btn); Button btn2= (Button) findViewById(R.id.btn2); Button btn3= (Button) findViewById(R.id.btn3); Button btn4= (Button) findViewById(R.id.btn4);// 获取UserDao对象 userDao = MyApplication.getInstances().getDaoSession().getUserDao();//点击添加 btn4.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { User chenshimei = new User(null, "chenshimei"); userDao.insert(chenshimei);//添加一个 } });//点击查询 btn3.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { List<User> users = userDao.loadAll(); String userName = ""; for (int i = 0; i < users.size(); i++) { userName += users.get(i).getName()+","; } tv.setText("查询全部数据==>"+userName); } }); //修改一下查询修改 btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { User mUser = new User((long) 3,"猎场"); userDao.update(mUser); List<User> users = userDao.loadAll(); String userName = ""; for (int i = 0; i < users.size(); i++) { userName += users.get(i).getName()+","; } tv.setText("查询全部数据==>"+userName); } });//删除 btn2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {// userDao.deleteAll(); userDao.deleteByKey((long)2); } }); }}
祝你好运。
- GreenDao的配置和简单的使用
- greenDao的简单配置和使用
- GreenDAO的简单使用
- GreenDAO的简单使用
- GreenDao的简单使用
- greendao的简单使用
- GreenDao的简单使用
- GreenDao的简单使用
- GreenDao的简单使用
- GreenDao的简单使用
- GreenDao的简单使用
- GreenDao的简单使用
- Greendao的简单使用和封装
- GreenDao的配置使用
- Android GreenDao的配置和使用
- greendao的简单使用1
- GreenDao的简单使用2
- greenDao的简单使用教程
- Xshell 无法连接虚拟机中的ubuntu的问题
- linux调试错误原因总结(部分)
- VB2010 打印条码标签方法二
- python selenium模块学习
- Jetty系列: 01- 基本使用和简单介绍
- GreenDao的配置和简单的使用
- Ubuntu安装火狐57
- 猜数字,hdu1172
- 当浏览器的cookie被禁用了,怎么使用session
- 为什么 qt 成为 c++ 界面编程的第一选择?
- iOS11调用百度地图出现自定义 大头针不显示的问题
- JavaScript学习之Android与JS交互
- 怎么装easy_install
- jsp 中<c:forEach>的用法 获取items具体值的用法