greenDAO__最受欢迎的数据库框架
来源:互联网 发布:java 中map的put用法 编辑:程序博客网 时间:2024/05/18 15:23
导包
project的gradle:
buildscript { repositories { jcenter() //1.greenDAO的远程仓库 mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:2.3.3' //2.greenDAO的添加的插件 classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' }}allprojects { repositories { jcenter() }}task clean(type: Delete) { delete rootProject.buildDir}
module的gradle:
apply plugin: 'com.android.application'android { compileSdkVersion 26 buildToolsVersion "26.0.0" defaultConfig { applicationId "com.junx.greendao" minSdkVersion 15 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }}//3.应用自动生成的插件apply plugin: 'com.android.application'apply plugin: 'org.greenrobot.greendao'//4.应用插件greendao { schemaVersion 1 //数据库的版本 daoPackage 'com.koma.greendao.gen' //由GreenDao自动生成代码所在的包名,默认的是在项目包下面新建一个gen targetGenDir 'src/main/java' //设置自动生成代码的目录}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12' //5.引入库 compile 'org.greenrobot:greendao:3.1.0'}
初始化实体类
@Entity//会在数据库中生成对应的表public class User { @Id(autoincrement = true)//自增id,注意用Long包装 private Long id; @Property(nameInDb = "USERNAME")//作为表的一个字段 private String username; @Property(nameInDb = "NICKNAME") private String nickname; @Transient//忽略,不会作为表的字段 private String useless;}
然后点击Build>>make project/module:自动生成代码@Entity//会在数据库中生成对应的表public class User { @Id(autoincrement = true)//自增id,注意用Long包装 private Long id; @Property(nameInDb = "USERNAME")//作为表的一个字段 private String username; @Property(nameInDb = "NICKNAME") private String nickname; @Transient//不会作为表的字段 private String useless; @Generated(hash = 523935516) public User(Long id, String username, String nickname) { this.id = id; this.username = username; this.nickname = nickname; } @Generated(hash = 586692638) public User() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getUsername() { return this.username; } public void setUsername(String username) { this.username = username; } public String getNickname() { return this.nickname; } public void setNickname(String nickname) { this.nickname = nickname; }}
在代码中初始化
public class MyApplcation extends Application { @Override public void onCreate() { super.onCreate(); mInstance = this; //创建数据库test.db,DevOpenHelper:创建SQLite数据库的SQLiteOpenHelper的具体实现 DevOpenHelper helper = new DevOpenHelper(this, "test.db", null); //通过helper来获取可读写的数据库 Database db = helper.getWritableDb(); //实例化数据库对象,,作为数据库对象、用于创建表和删除表 DaoMaster master = new DaoMaster(db); //数据库的管理员,DaoSession:管理所有的Dao对象,Dao对象中存在着增删改查等API daoSession = master.newSession(); } static MyApplcation mInstance; public static MyApplcation getInstance() { return mInstance; } private DaoSession daoSession; public DaoSession getDaoSession() { return daoSession; }}
增删改查
获取Dao对象
//通过DaoSession.getXXXDao()获取对应的数据库Dao对象userDao = MyApplcation.getInstance().getDaoSession().getUserDao();
增加数据
userDao.insert(new User());//增加单个数据 userDao.insertInTx(Iterator<Usr>);//可以添加整个list userDao.insertOrReplace();//与普通的增加数据相比,如果id相同则改为升级数据 userDao.insertOrReplaceInTx();//同样支持迭代器和数组
查询数据
//查询全部user List<User> users = userDao.loadAll(); //查询特定id的user User user = userDao.load(Id); //查询特定条件的数据 //多个条件相与 Query<User> query = userDao.queryBuilder() .where(UserDao.Properties.Nickname.eq("小花"),UserDao.Properties.Username.eq("小胖")) .build(); List<User> users2 = query.list(); //多个条件相或 List<User> users3 = userDao.queryBuilder() .whereOr(UserDao.Properties.Nickname.eq("小花") , UserDao.Properties.Username.eq("小胖")) .build().list(); //查询结果进行升序或降序排序 List<User> users5 = userDao.queryBuilder() .orderAsc(UserDao.Properties.Id) .build().list(); userDao.queryBuilder().orderAsc(UserDao.Properties.Id) .build().list(); //限制查询数量 List<User> user4 = userDao.queryBuilder().limit(5).build().list(); //查询数据库数据的总数 long count = userDao.count();
删除数据
//通过key,也就是id来删除 userDao.deleteByKey(user.getId()); //支持key的数组和集合 userDao.deleteByKeyInTx(); //本质上还是通过key来删除的,如果key中没有id,那么报错 userDao.delete(new User()); //同样支持数组和集合 userDao.updateInTx(); //删除全部 userDao.deleteAll(); //当然也可以配合查询来删除特定的集合
升级数据库
当数据的结构变化时,就不得不升级数据库了module的gradle中:greendao { schemaVersion 2 //数据库的版本,比以前大的话便会删除所有数据重新创建 daoPackage 'com.koma.greendao.gen' //由GreenDao自动生成代码所在的包名,默认的是在项目包下面新建一个gen targetGenDir 'src/main/java' //设置自动生成代码的目录}
阅读全文
0 0
- greenDAO__最受欢迎的数据库框架
- 2012年最受欢迎的PHP框架
- 2014php最受欢迎的框架
- 2017年最受欢迎的UI框架
- 2017年最受欢迎的数据库
- 13个最受欢迎的Python开源框架
- 13个最受欢迎的Python开源框架
- 14个最受欢迎的Python开源框架
- 15个最受欢迎的Python开源框架
- 14个最受欢迎的Python开源框架
- 15个最受欢迎的Python开源框架
- 15个最受欢迎的Python开源框架
- 15个最受欢迎的Python开源框架
- 14个最受欢迎的Python开源框架
- 2014年最受欢迎的6个前端开发框架
- 最受欢迎的5个Android ORM框架[zhuan]
- 最受欢迎的5个Android ORM框架
- Github 上最受欢迎的一些 CSS 框架参考
- PAT 乙级练习题1023. 组个最小数 (20)
- Spring Cloud中Hystrix的请求缓存
- nginx proxy_cache 缓存配置
- mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
- 套接字
- greenDAO__最受欢迎的数据库框架
- vue子调父 $emit props及<slot>的综合使用
- 手机验证码
- export,import ,export default
- RedHat 7.3 命令操作方式
- 3324 顺序表应用1:多余元素删除之移位算法
- template.py-for以及if的使用
- TCP连接和断开过程详解
- ELK 实现 Java 分布式系统日志分析架构