android mysql移植_Ormlite 源码分析以及跨平台移植

1 介绍

Ormlite,英文全称是Object Relational Mapping,意思是对象关系映射。在android上包含两部分ormlite-core是核心部分,纯java的; ormlite-android是针对android的适配。在android的底层是Android数据库Sqlite。

由于工作需要,专门分析Ormlite-Android,并进行跨平台的移植。源码地址:  https://github.com/j256/ormlite-android

2 使用方法

在Android上使用ormlite可以理解分为三层:

应用层:主要两个类,一个定义实体Bean类(数据表结构),利用这个框架,把实体映射到我们的数据库中,数据中的字段就是我们定义实体的成员变量。一个封装Dao类,操作数据库。

Ormlite-core框架:实现类到数据的映射逻辑和操作。

底层数据库: 在Android中是SQLite。

3 使用到的知识点泛型

注解,Java进阶之注解

反射,Java进阶之反射

数据库语句拼接

单例模式

简单工厂模式

模板方法模式

4 使用分析

第一步. 集成

在android需要使用ormlite,需要下载ormlite-core和对应的ormlite-android包。官网下载包:http://ormlite.com/releases/

第二步.配置Bean类(Bean类定义网上有很多参考材料,就不详细列举了,列举关键的)

@DatabaseTable(tableName = "user")

public class User {

@DatabaseField(generatedId = true)

private int id;

...

}

@DatabaseTable(tableName = "user")  使用注解方法,标明这是数据库中的一张表,表名为user;

@DatabaseField(generatedId = true)使用注解方法,标明数据表的列,列名是id;

这两个注解的和反射的实现在ormlite-core中实现。

5 Ormlite框架图a739ef1ba60c42f0cacc586144e75f71.png

Application:                    activity      Bean class       UserDao class     -- 定义数据结构和操作63d5d86b21fc6ca272a037de1fe9cbb5.png

Ormlite-core layer:          Abstract Dao and impldao                    -- 数据结构对象化和拼接SQL63d5d86b21fc6ca272a037de1fe9cbb5.png

Ormlite-android:           android database adapater layer        -- 适配android系统底层数据库                                                                                                   跨平台数据库移植主要也是这层63d5d86b21fc6ca272a037de1fe9cbb5.png

Database layer:         Android SQLite数据库,执行最终数据库实现a739ef1ba60c42f0cacc586144e75f71.png

6a43c738238070f5a123301ac4c5bc86.png

调用关系实例,通过堆栈可以理解上述过程,以创建数据库为例:openDatabase:759, SQLiteDatabase (android.database.sqlite)

openDatabase:751, SQLiteDatabase (android.database.sqlite)

getDatabaseLocked:373, SQLiteOpenHelper (android.database.sqlite)

getWritableDatabase:316, SQLiteOpenHelper (android.database.sqlite)

getReadWriteConnection:68, AndroidConnectionSource (com.j256.ormlite.android)

create:327, BaseDaoImpl (com.j256.ormlite.dao)

insert:40, UserDao (abc.example.ormlitedemo)

initData:37, MainActivity (abc.example.ormlitedemo)

onCreate:25, MainActivity (abc.example.ormlitedemo)

6 Ormlite跨平台移植思路

通过上面的架构和堆栈信息我们可以知道,跨平台设计的关键在于跨平台的适配层。对应的就是Ormlite-android。34fd204af99266b4f957575a3e124a13.pngormlite-android 核心代码

通过对Ormlite的主要功能理解,最终得移植核心代码在于上述文件的移植适配。其中

AndroidCompiledStatement.java  -- SQL语句的生成

AndroidConnectionSource.java

AndroidDatabaseConnection.java  -- 这两个文件是建立和保存数据库连接的cache

AndroidDatabaseResults.java        -- 数据库结果处理

DatabaseTableConfigUtil.java         --使用配置文件生成数据表

通过前面的思路,大家对跨平台的移植估计是有思路了。就是针对ormlite-android的几个核心文件的移植。对我个人而言,我的移植思路就是根据数据库的基本功能进行逐步移植。

数据库支持的基本功能:数据库的初始化创建/表创建

数据库操作: 增删查改(CRUD)

上述功能,按照底层数据库支持的接口,逐一移植实现即可完成跨平台的移植。

参考:https://blog.csdn.net/chenliguan/article/details/78305377

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值