1、将sqlite的最轻量orm框架优化
2、添加方法同步锁
private Lock writeLock = new ReentrantLock();
private volatile boolean writeLocked = false;
private void lock() {
writeLock.lock();
writeLocked = true;
}
private void unlock() {
if (writeLocked) {
writeLock.unlock();
writeLocked = false;
}
}
/**
* 保存
* @param obj
*/
public void save(Object obj) {
if (obj == null)
return;
try{
lock();
checkOrCreateTable(obj.getClass());
SqlProxy proxy = SqlProxy.save(obj);
db.execSQL(proxy.getSql(), proxy.paramsArgs());
}finally{
unlock();
}
}
3、添加数据库表字段动态增删改
/**
* 检查表
* @param clazz
*/
private void checkOrCreateTable(Class<?> clazz) {
EntityInfo entity = EntityInfo.build(clazz);
if (entity.isChecked())
return;
Cursor cursor = db.rawQuery("SELECT name FROM sqlite_master WHERE type='table' and name='"+entity.getTable()+"' order by name",null);
Integer count = cursor != null ? cursor.getCount() : null;
if(cursor != null)
cursor.close();
if(count != null && count > 0){
String [] columnNames = getColumnNames(db, entity.getTable());
if(columnNames != null && columnNames.length > 0){
if(changeTable(clazz, columnNames)){
String columns = "";
boolean first = true;
List<ColumnInfo> list = entity.getColumnList();
for(int i=0,length=columnNames.length;i<length;i++){
for(ColumnInfo mColumnInfo : list){
if(mColumnInfo.getColumName().equals(columnNames)){
columns += (first ? "" : ",")+columnNames;
first = false;
}
}
}
if(TextUtils.isEmpty(columns)){
//删除
db.execSQL("DROP TABLE " + entity.getTable());
//创建表
String sql = getCreatTableSQL(clazz);
db.execSQL(sql);
}else{
String tempTableName = entity.getTable() + "_temp";
//表重命名
db.execSQL("ALTER TABLE " + entity.getTable() + " RENAME TO " + tempTableName);
//创建表
String sql = getCreatTableSQL(clazz);
db.execSQL(sql);
//旧数据转移
db.execSQL("INSERT INTO "+entity.getTable()+"("+columns+") SELECT "+columns+" FROM "+tempTableName);
//删除临时表
db.execSQL("DROP TABLE "+tempTableName);
}
}
}else{
//删除
db.execSQL("DROP TABLE " + entity.getTable());
//创建表
String sql = getCreatTableSQL(clazz);
db.execSQL(sql);
}
}else{
//创建表
String sql = getCreatTableSQL(clazz);
db.execSQL(sql);
}
entity.setChecked(true);
}
4、本框架没有链表查询功能,int、Integer、long、Long、float、Float、double、Double、Boolean、String、Date以外字段利用GSON中的Gson.toJson(Objectsrc,TypetypeOfSrc)获得json数据插入数据库,读取使用Gson.fromJson(Stringjson,TypetypeOfT)获得相应对象,具体看DEMO
/**
* 获取属性
* @param o
* @param info
* @return
*/
public static Object getProperty(Object o,ColumnInfo info){
try {
if(info.isBean()){
Field f = info.getField();
f.setAccessible(true);
Object value = f.get(o);
Gson gson = new GsonBuilder().create();
return gson.toJson(value,f.getGenericType());
}else{
Field f = info.getField();
f.setAccessible(true);
return f.get(o);
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 添加屬性
* @param o
* @param info
* @param value
*/
public static void setProperty(Object o,ColumnInfo info,Object value){
try {
if(info.isBean()){
Field f = info.getField();
Gson gson = new GsonBuilder().create();
Object obj = gson.fromJson((String) value, f.getGenericType());
f.setAccessible(true);
f.set(o, obj);
}else{
Field f = info.getField();
f.setAccessible(true);
f.set(o, value);
}
} catch (Exception e) {
e.printStackTrace();
}
}
云盘DEMO下载
分享到:
相关推荐
《Android 极速开发框架 ...总之,《Android 极速开发框架 dhroid》是一个全面的开发工具包,它通过各种优化手段和便捷功能,大大提升了Android应用的开发效率,降低了开发难度,是Android开发者值得尝试的优秀框架。
【Android 极速开发框架 dhroid.zip】是一个远古时期的Android开发框架,它可能包含了针对Android应用快速开发的一系列工具、库和最佳实践。在早期的Android开发中,这样的框架通常是为了提高开发效率,减少重复工作...
【Android 极速开发框架 dhroid.zip源码资源下载】是一个专为Android应用开发者设计的高效、便捷的开发框架,旨在提高开发效率并简化代码管理。这个框架集成了多个核心组件,包括网络通信、数据存储、UI交互以及任务...
【Android 极速开发框架 dhroid.zip】是一个专为安卓开发者设计的高效开发框架,旨在加速应用程序的构建过程,提高开发效率。这个框架包含了多个关键组件和库,可以帮助开发者快速实现常见功能,如网络请求、数据...
【Android 极速开发框架 dhroid】是一款专为Android开发者设计的高效开发工具,它集成了许多实用功能,旨在简化Android应用的开发流程,提高开发效率。本框架的设计与实现,是基于Android平台的深入理解和实践经验,...
【安卓开发框架工具类相关-开发框架dhroid源码】 Android开发框架是构建高效、可扩展且易于维护的Android应用的基础。"dhroid"源码提供了开发者一个学习和参考的平台,它包含了丰富的工具类,旨在简化常见的开发...
本项目是一个使用WPF(Windows Presentation Foundation)技术构建的应用程序,它结合了Stylet框架和SQLite数据库,实现了对SQLite数据库的增删改查功能。以下将详细阐述项目中的核心知识点: 1. **WPF(Windows ...
一个简单的Android SQLite ORM框架不想花资源分的同学可以上我的github主页下载:https://github.com/chenyihan/Simple-SQLite-ORM-Android,因为要传到github,所以代码中的注释和doc文档都是英文的,对自己英文不...
SQLite3 的性能优化 SQLite3 是一个轻量级的关系数据库管理系统,常用于嵌入式系统中。在嵌入式系统中,数据库的性能优化尤为重要。本文将主要讲述在嵌入式中使用 SQLite3 时,对相关的数据库的性能如何优化的问题...
Sqlite ORM 是一个简单的C#类,对Sqlite的操作进行了封装,主要功能包括:表定义、生成,访问,更新等,其中,支持,多表的连接操作,语法类似Linq语法,使用非常方便,附加了使用说明文档。 例如,添加记录操作为...
SQLite3的ORM(Object-Relational Mapping)框架是一种在C++编程中将数据库关系模型与对象模型进行对应的技术。ORM框架使得开发者可以使用面向对象的方式来操作数据库,避免了直接编写SQL语句,提高了开发效率和代码...
"Android开发环境中的SQLite性能优化" 在 Android 开发环境中,SQLite 是一个非常流行的嵌入式数据库管理系统。为了提高 SQLite 的性能和资源占用,我们可以通过两种方法进行优化:使用事务和使用索引。 首先,让...
C# SQLite执行效率优化教程 本文主要介绍了关于C# SQLite执行效率优化的相关资料,通过示例代码介绍的非常详细,对大家学习或者使用C# SQLite具有一定的参考学习价值。 一、SQLite简介 SQLite是一款轻型的嵌入式...
"小工具框架,electron+sqlite" 是一个基于 Electron 和 SQLite 的应用程序开发框架,它结合了桌面应用的强大功能和数据库管理的便利性。Electron 是一个用于构建跨平台桌面应用程序的开源框架,它允许开发者使用 ...
基于Qt框架和SQLite数据库开发的学生信息管理系统源码+项目说明(可作课设).zip基于Qt框架和SQLite数据库开发的学生信息管理系统源码+项目说明(可作课设).zip基于Qt框架和SQLite数据库开发的学生信息管理系统源码+...
本资料主要关注在Windows环境下SQLite的安装、使用以及性能优化,下面将详细阐述相关知识点。 一、SQLite的安装与配置 在Windows操作系统上,SQLite通常是通过API库或者预编译的动态链接库(DLL)进行集成。你可以...
SQLite3是一款轻量级的数据库引擎,广泛应用于嵌入式设备和移动应用中。..."sqlite-amalgamation-3071300.zip"则包含了SQLite3的源代码和编译脚本,对于深入了解其内部机制和进行定制优化非常有用。
greenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案,通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询。