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应用

Kotlin 编程语言成为其 Android 应用程序开发人员的首选语言

Android首要开发语言:架构师详解在Android Studio上使用Kotlin

使用Kotlin开发Android应用

Java vs Kotlin 应该使用Kotlin进行Android开发吗

Kotlin-First !谷歌正式宣布 Kotlin 成为 Android 开发首选编程语言!