android:kotlin语言使用greendao3.0简解
来源:互联网 发布:建筑设计软件 编辑:程序博客网 时间:2024/06/13 04:17
先看效果
步骤一、在自己的build.gradle中加入这些配置
- 在app的build.gradle中
apply plugin: 'org.greenrobot.greendao'greendao { //数据库的schema版本,也可以理解为数据库版本号 schemaVersion 1 //设置DaoMaster、DaoSession、Dao包名,也就是要放置这些类的包的全路径。 daoPackage 'tsou.com.simple.greendaoforkotlin.greendao' //设置DaoMaster、DaoSession、Dao目录 targetGenDir 'src/main/java'}dependencies compile 'org.greenrobot:greendao:3.2.0'}
- 在项目的build.gradle中
buildscript { ext.kotlin_version = '1.1.50' repositories { mavenCentral() google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.0.0-beta7' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files }}
步骤二、创建Student实体类
package tsou.com.simple.greendaoforkotlin.bean;import android.support.annotation.Keep;import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Generated;@Entity(generateConstructors = false) public class Student { @Id private Long id; private String name; private int age; public Student() { } @Keep public Student(String name, int age) { this.name = name; this.age = age; } public Student(Long id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Keep public Long getId() { return id; } @Keep public void setId(Long id) { this.id = id; } @Keep public String getName() { return name; } @Keep public void setName(String name) { this.name = name; } @Keep public int getAge() { return age; } @Keep public void setAge(int age) { this.age = age; } @Keep @Override public boolean equals(Object o) { if (this == o) return true; if (!(o instanceof Student)) return false; Student student = (Student) o; return name.equals(student.name); } @Keep @Override public int hashCode() { return (int) (id ^ (id >>> 32)); } @Keep @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}'; } }
步骤三、修复一下工程,自动生成greendao包下的类(就是点击一下小锤子),你会自动生成greendao包中的类。
步骤四、开始使用,创建管理类
package tsou.com.simple.greendaoforkotlin.managerimport android.content.Contextimport android.database.sqlite.SQLiteDatabaseimport tsou.com.simple.greendaoforkotlin.greendao.DaoMasterimport tsou.com.simple.greendaoforkotlin.greendao.DaoSessionclass DbManager private constructor(mContext: Context) { private val DB_NAME = "test.db" private var mDevOpenHelper: DaoMaster.DevOpenHelper? = null private var mDaoMaster: DaoMaster? = null private var mDaoSession: DaoSession? = null init { // 初始化数据库信息 mDevOpenHelper = DaoMaster.DevOpenHelper(mContext, DB_NAME) getDaoMaster(mContext) getDaoSession(mContext) } companion object { @Volatile var instance: DbManager? = null fun getInstance(mContext: Context): DbManager? { if (instance == null) { synchronized(DbManager::class) { if (instance == null) { instance = DbManager(mContext) } } } return instance } } /** * 获取可读数据库 * * @param context * @return */ fun getReadableDatabase(context: Context): SQLiteDatabase? { if (null == mDevOpenHelper) { getInstance(context) } return mDevOpenHelper?.getReadableDatabase() } /** * 获取可写数据库 * * @param context * @return */ fun getWritableDatabase(context: Context): SQLiteDatabase? { if (null == mDevOpenHelper) { getInstance(context) } return mDevOpenHelper?.getWritableDatabase() } /** * 获取DaoMaster * * @param context * @return */ fun getDaoMaster(context: Context): DaoMaster? { if (null == mDaoMaster) { synchronized(DbManager::class.java) { if (null == mDaoMaster) { mDaoMaster = DaoMaster(getWritableDatabase(context)) } } } return mDaoMaster } /** * 获取DaoSession * * @param context * @return */ fun getDaoSession(context: Context): DaoSession? { if (null == mDaoSession) { synchronized(DbManager::class.java) { mDaoSession = getDaoMaster(context)?.newSession() } } return mDaoSession }}
步骤五、增删改查,
package tsou.com.simple.greendaoforkotlin.daoimport android.content.Contextimport tsou.com.simple.greendaoforkotlin.bean.Studentimport tsou.com.simple.greendaoforkotlin.greendao.StudentDaoimport tsou.com.simple.greendaoforkotlin.manager.DbManagerclass StudentDaoOpe private constructor() { private object mHolder { val instance = StudentDaoOpe() } companion object { fun getInstance(): StudentDaoOpe { return mHolder.instance } } /** * 添加数据至数据库 * @param context * * * @param stu */ fun insertData(context: Context?, stu: Student) { DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.insert(stu) } /** * 将数据实体通过事务添加至数据库 * @param context * * * @param list */ fun insertData(context: Context?, list: List<Student>?) { if (null == list || list.size <= 0) { return } DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.insertInTx(list) } /** * 添加数据至数据库,如果存在,将原来的数据覆盖 * 内部代码判断了如果存在就update(entity);不存在就insert(entity); * @param context * * * @param student */ fun saveData(context: Context?, student: Student) { DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.save(student) } /** * 删除数据至数据库 * @param context * * * @param student 删除具体内容 */ fun deleteData(context: Context?, student: Student) { DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.delete(student) } /** * 根据id删除数据至数据库 * @param context * * * @param id 删除具体内容 */ fun deleteByKeyData(context: Context?, id: Long) { DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.deleteByKey(id) } /** * 删除全部数据 * @param context */ fun deleteAllData(context: Context?) { DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.deleteAll() } /** * 更新数据库 * @param context * * * @param student */ fun updateData(context: Context?, student: Student) { DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.update(student) } /** * 查询所有数据 * @param context * * * @return */ fun queryAll(context: Context?): MutableList<Student>? { val builder = DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.queryBuilder() return builder?.build()?.list() } /** * 根据id,其他的字段类似 * @param context * * * @param id * * * @return */ fun queryForId(context: Context?, id: Long): MutableList<Student>? { val builder = DbManager.getInstance(context!!)?.getDaoSession(context)?.getStudentDao()?.queryBuilder() /** * 返回当前id的数据集合,当然where(这里面可以有多组,做为条件); * 这里build.list();与where(StudentDao.Properties.Id.eq(id)).list()结果是一样的; * 在QueryBuilder类中list()方法return build().list(); */ // Query<Student> build = builder.where(StudentDao.Properties.Id.eq(id)).build(); // List<Student> list = build.list(); return builder?.where(StudentDao.Properties.Id.eq(id))?.list() }}
步骤六、mainactivity布局
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/activity_main" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <Button android:id="@+id/add" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="增" /> <Button android:id="@+id/delete" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="删" /> <Button android:id="@+id/updata" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="改" /> <Button android:id="@+id/check" android:layout_width="0dp" android:layout_height="wrap_content" android:layout_weight="1" android:text="查" /> </LinearLayout> <Button android:id="@+id/deleteAll" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_weight="1" android:text="删除全部" /> <Button android:id="@+id/check_id" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/deleteAll" android:layout_centerInParent="true" android:text="根据id查" /></RelativeLayout>
步骤七、mainActivity
package tsou.com.simple.greendaoforkotlinimport android.content.Contextimport android.os.Bundleimport android.support.v7.app.AppCompatActivityimport android.util.Logimport kotlinx.android.synthetic.main.activity_main.*import tsou.com.simple.greendaoforkotlin.bean.Studentimport tsou.com.simple.greendaoforkotlin.dao.StudentDaoOpeclass MainActivity : AppCompatActivity() { private var mContext: Context? = null private var student: Student? = null override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) mContext = this initData() initListener() } private var studentList = mutableListOf<Student>() /** * 初始化数据 */ private fun initData() { for (i in 0..99) { student = Student(i.toLong(), "huang" + i, 25) studentList.add(student!!)//不为null } } private fun initListener() { /** * 增 */ add.setOnClickListener { StudentDaoOpe.getInstance().insertData(mContext, studentList) } /** * 删 */ delete.setOnClickListener { val student = Student(5.toLong(), "haung" + 5, 25) /** * 根据特定的对象删除 */ StudentDaoOpe.getInstance().deleteData(mContext, student) /** * 根据主键删除 */ StudentDaoOpe.getInstance().deleteByKeyData(mContext, 7) } /** * 删除所有 */ deleteAll.setOnClickListener { StudentDaoOpe.getInstance().deleteAllData(mContext) } /** * 更新 */ updata.setOnClickListener { val student = Student(2.toLong(), "haungxiaoguo", 16516) StudentDaoOpe.getInstance().updateData(mContext, student) } /** * 查询全部 */ check.setOnClickListener { val students = StudentDaoOpe.getInstance().queryAll(mContext) for (i in students!!.indices) { Log.i("Log", students[i].name) } } /** * 根据id查询 */ check_id.setOnClickListener { val students = StudentDaoOpe.getInstance().queryForId(mContext, 50) for (i in students!!.indices) { Log.i("Log", students[i].name) } } }}
其他详细的步骤请看:greendao3.0以上使用步骤(一):基础使用
Demo地址:http://download.csdn.net/download/huangxiaoguo1/10008298
阅读全文
1 0
- android:kotlin语言使用greendao3.0简解
- Kotlin语言开发android系列:GreenDao3基本使用
- Android Studio 简单使用 GreenDao3.0
- Android ORM框架 GreenDao3.0的使用
- Android Studio 简单使用 GreenDao3.0
- Android ORM框架greenDao3.0使用简介
- Android Greendao3.0框架的使用
- Android Studio 配置使用GreenDao3.0
- Android 中GreenDao3.0简单使用
- Android ORM框架 GreenDao3.0的使用
- Android GreenDao3.2.0使用
- Android 深入GreenDao3.0
- GreenDao3.0简单使用
- GreenDao3.0简单使用
- greenDAO3.0使用
- GreenDao3.0使用详解
- GreenDao3.0简单使用
- GreenDao3.0简单使用
- Qt 学习之路 2(74):线程和 QObject
- IPC通信
- __packed 关键字 的作用
- 本地spark测试tomcat日志处理
- chapter6:概率及朴素贝叶斯--朴素贝叶斯
- android:kotlin语言使用greendao3.0简解
- 【译文】伪标签学习导论
- springmvc学习笔记(4)-前端控制器
- 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(4):K临近
- 【实践】通用文件系统的quota时间
- 求a的b次方,不用考虑大数问题,不使用库函数
- String类中lastIndexOf()与indexOf()方法的区别
- python ctrl+c 退出while True:
- 【NOIP2017提高A组模拟10.5】Ping