android:kotlin语言使用greendao3,跨平台app开发框架
Posted m0_66264798
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android:kotlin语言使用greendao3,跨平台app开发框架相关的知识,希望对你有一定的参考价值。
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.manager
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import tsou.com.simple.greendaoforkotlin.greendao.DaoMaster
import tsou.com.simple.greendaoforkotlin.greendao.DaoSession
class 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.dao
import android.content.Context
import tsou.com.simple.greendaoforkotlin.bean.Student
import tsou.com.simple.greendaoforkotlin.greendao.StudentDao
import tsou.com.simple.greendaoforkotlin.manager.DbManager
class 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?)
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()
/**
- 更新数据库
最后
愿你有一天,真爱自己,善待自己。
本文在开源项目:Android开发不会这些?如何面试拿高薪 中已收录,里面包含不同方向的自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中…
使用Kotlin开发Android应用
1、Kotlin介绍
[Kotlin](https://kotlinlang.org/)
Kotlin是一门基于JVM的编程语言,它正成长为Android开发中用于替代Java语言的继承者。Java是世界上使用最多的编程语言之中的一个,当其它编程语言为更加便于开发人员使用而不断进化时,Java并没有像预期那样及时跟进。
Java缺失的非常多特性在最新的修订版中逐渐覆盖到了,但Android开发人员临时还没能够使用它们。这就使得相似Kotlin这种语言有了用武之地了:在旧的开发环境中使用现代语言的特性。
Kotlin是什么?
Kotlin是由JetBrains创建的基于JVM的编程语言,IntelliJ正是JetBrains的杰作,而Android Studio是基于IntelliJ改动而来的。Kotlin是一门包括非常多函数式编程思想的面向对象编程语言。
Kotlin生来就是为了弥补Java缺失的现代语言的特性,并极大的简化了代码,使得开发人员能够编写尽量少的样板代码。
2、配置工程
新建一个Project “MyKotlin”
在项目的build.gradle上加入kotlin版本
// Top-level build file where you can add configuration options common to all sub-projects/modules.
ext.kotlin_version = "1.0.0-rc-1036"
buildscript {
repositories {
jcenter()
}
dependencies {
classpath ‘com.android.tools.build:gradle:1.3.0‘
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
在module中的build.gradle加入kotlin的依赖
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
再加入对android的支持
apply plugin: ‘com.android.application‘
apply plugin: ‘kotlin-android‘
apply plugin: ‘kotlin-android-extensions‘
再加入java的编译路径。在main下创建kotlin文件夹 并在gradle文件写上
完整的build.gradle例如以下
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
apply plugin: ‘com.android.application‘
apply plugin: ‘kotlin-android‘
apply plugin: ‘kotlin-android-extensions‘
android {
compileSdkVersion 23
buildToolsVersion "23.0.1"
defaultConfig {
applicationId "com.example.mykotlin"
minSdkVersion 14
targetSdkVersion 23
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
}
}
sourceSets {
main.java.srcDirs += ‘src/main/kotlin‘
}
}
dependencies {
compile fileTree(dir: ‘libs‘, include: [‘*.jar‘])
testCompile ‘junit:junit:4.12‘
compile ‘com.android.support:appcompat-v7:23.1.1‘
compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
代码如图所看到的
3、代码转换
能够选择MainActivity 然后选择code–>>Convert Java File to Kotlin File …
然后将生成的文件kt 剪切到kotlin文件夹下。
kt 代码例如以下
package com.example.mykotlin
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
tv.text = "Hello MyKotlin"
tv.textSize = 20.0f
}
}
终于执行如图所看到的:
4、样例下载
以上是关于android:kotlin语言使用greendao3,跨平台app开发框架的主要内容,如果未能解决你的问题,请参考以下文章
Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言
Android首要开发语言:架构师详解在Android Studio上使用Kotlin