Android 使用com.j256.ormlite
在web开发中经常采用的hibernate,在android也提供了一个ormlite
导入所需jar包后
/** * SQLiteHelperOrm.java * 版权所有(C) 2014 * 创建者:cuiran 2014-2-12 下午3:18:40 */ package com.ghyf.mplay.database; import java.sql.SQLException; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import com.ghyf.mplay.application.BaseCookie; import com.ghyf.mplay.po.POPriorityText; import com.ghyf.mplay.po.POTest; import com.ghyf.mplay.util.LogUtil; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper; import com.j256.ormlite.support.ConnectionSource; import com.j256.ormlite.table.TableUtils; /** * TODO * @author cuiran * @version 1.0.0 */ public class SQLiteHelperOrm extends OrmLiteSqliteOpenHelper { private static final String TAG="SQLiteHelperOrm"; private static final String DATABASE_NAME = "mplay.db"; private static final int DATABASE_VERSION = 3; public SQLiteHelperOrm(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } public SQLiteHelperOrm() { super(BaseCookie.getContext(), DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db, ConnectionSource connectionSource) { try { TableUtils.createTable(connectionSource, POTest.class); TableUtils.createTable(connectionSource, POPriorityText.class); } catch (SQLException e) { LogUtil.e(TAG,"onCreate",e); } } @Override public void onUpgrade(SQLiteDatabase db, ConnectionSource connectionSource, int arg2, int arg3) { try { TableUtils.dropTable(connectionSource, POTest.class, true); TableUtils.dropTable(connectionSource, POPriorityText.class, true); onCreate(db, connectionSource); } catch (SQLException e) { LogUtil.e(TAG,"onUpgrade",e); } } }
/** * DbHelper.java * 版权所有(C) 2014 * 创建者:cuiran 2014-2-12 下午3:37:07 */ package com.ghyf.mplay.database; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Map; import android.annotation.TargetApi; import android.content.ContentValues; import android.os.Build; import com.ghyf.mplay.util.LogUtil; import com.j256.ormlite.dao.Dao; import com.j256.ormlite.stmt.UpdateBuilder; /** * DbHelper 数据库操作类 * @author cuiran * @version 1.0.0 */ public class DbHelper<T> { private static final String TAG="DbHelper"; /** 新增一条记录 */ public int create(T po) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(po.getClass()); return dao.create(po); } catch (SQLException e) { LogUtil.e(TAG,"create",e); } finally { if (db != null) db.close(); } return -1; } public boolean exists(T po, Map<String, Object> where) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(po.getClass()); if (dao.queryForFieldValues(where).size() > 0) { return true; } } catch (SQLException e) { LogUtil.e(TAG,"exists",e); } finally { if (db != null) db.close(); } return false; } public int createIfNotExists(T po, Map<String, Object> where) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(po.getClass()); if (dao.queryForFieldValues(where).size() < 1) { return dao.create(po); } } catch (SQLException e) { LogUtil.e(TAG,"createIfNotExists",e); } finally { if (db != null) db.close(); } return -1; } /** 查询一条记录 */ public List<T> queryForEq(Class<T> c, String fieldName, Object value) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(c); return dao.queryForEq(fieldName, value); } catch (SQLException e) { LogUtil.e(TAG,"queryForEq",e); } finally { if (db != null) db.close(); } return new ArrayList<T>(); } /** 删除一条记录 */ public int remove(T po) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(po.getClass()); return dao.delete(po); } catch (SQLException e) { LogUtil.e(TAG,"remove",e); } finally { if (db != null) db.close(); } return -1; } /** * 根据特定条件更新特定字段 * * @param c * @param values * @param columnName where字段 * @param value where值 * @return */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) public int update(Class<T> c, ContentValues values, String columnName, Object value) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(c); UpdateBuilder<T, Long> updateBuilder = dao.updateBuilder(); updateBuilder.where().eq(columnName, value); for (String key : values.keySet()) { updateBuilder.updateColumnValue(key, values.get(key)); } return updateBuilder.update(); } catch (SQLException e) { LogUtil.e(TAG,"update",e); } finally { if (db != null) db.close(); } return -1; } /** 更新一条记录 */ public int update(T po) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(po.getClass()); return dao.update(po); } catch (SQLException e) { LogUtil.e(TAG,"update",e); } finally { if (db != null) db.close(); } return -1; } /** 查询所有记录 */ public List<T> queryForAll(Class<T> c) { SQLiteHelperOrm db = new SQLiteHelperOrm(); try { Dao dao = db.getDao(c); return dao.queryForAll(); } catch (SQLException e) { LogUtil.e(TAG,"queryForAll",e); } finally { if (db != null) db.close(); } return new ArrayList<T>(); } }
新建一个PO
/** * POTest.java * 版权所有(C) 2014 * 创建者:cuiran 2014-2-12 下午3:25:08 */ package com.ghyf.mplay.po; import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; /** * POTest DB的测试PO * @author cuiran * @version 1.0.0 */ @DatabaseTable(tableName = "test") public class POTest { @DatabaseField(generatedId = true) public long _id; /** 标题 */ @DatabaseField public String title; /** 标题 */ @DatabaseField public int position; public POTest(long _id, String title, int position) { super(); this._id = _id; this.title = title; this.position = position; } public POTest() { super(); } }
Android 使用com.j256.ormlite的更多相关文章
- (转)Android 使用com.j256.ormlite
在web开发中经常采用的hibernate,在android也提供了一个ormlite 导入所需jar包后 摘自:http://blog.csdn.net/cuiran/article/details ...
- 【Android - 框架】之ORMLite的使用
Android中有很多操作SQLite数据库的框架,现在最常见.最常用的是ORMLite和GreenDAO.ORMLite相比与GreenDAO来说是一个轻量级的框架,而且学习成本相对较低.所以这个帖 ...
- Android 快速开发系列 ORMLite 框架最佳实践
比较靠谱的Helper的写法: 1.DatabaseHelper package com.zhy.zhy_ormlite.db; import java.sql.SQLException; impor ...
- Android 快速开发系列 ORMLite 框架最佳实践之实现历史记录搜索
首先在build.gald中添加compile 'com.j256.ormlite:ormlite-android:4.48'的引用 compile 'com.j256.ormlite:ormlite ...
- [ 转]Android快速开发–使用ORMLite操作数据库
OrmLite是一个数据库操作辅助的开源框架,主要面向Java语言.在Android面向数据库开发中,是一个比较流行的开源框架,方便操作而且功能强大,今天来学习一下,最近的项目中也有所涉及,写个博客来 ...
- android数据库持久化框架, ormlite框架,
前言 Android中内置了SQLite,但是对于数据库操作这块,非常的麻烦.其实可以试用第3方的数据库持久化框架对之进行结构上调整, 摆脱了访问数据库操作的细节,不用再去写复杂的SQL语句.虽然这样 ...
- [BUG集] android 安卓项目中ORMLITE框架 Must specify one of id, generatedId, and generatedIdSequence with Id
使用ORM框架ORMLITE有一段时间,今天在操作一个对象的时候,重新运行报错如下: Must specify one of id, generatedId, and generatedIdSeque ...
- Android Ormlite 学习笔记1 -- 基础
Ormlite 是一个开源Java数据实体映射框架.其中依赖2个核心类库: 1.ormlite-android-4.48.jar 2.ormlite-core-4.48.jar 新建项目,引用上面2个 ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
随机推荐
- ABP文档笔记 - 配置、设置、版本、功能、权限
配置 全局仅一个单例,保存一组配置信息,一般直接在模块的预启动事件中赋值or修改.没有Scope划分,无论租户还是房东亦或者用户读取的值都不会有差异.每个模块都可以扩展这个配置. 设置 它没有层级关系 ...
- Angular4.0入门
angular与其他的差别 angular cli安装 cnpm install -g @angular/cli 最新版本 cnpm uninstall -g @angular/cli 卸载全局版本 ...
- JS判断PC还是移动端打开网页
最近在做移动端网站,也需兼容PC端.还没找到更好的方法,只能用javascr判断用户是在PC端打开还是移动端打开. JS判断 var isPC = function (){ var userAg ...
- JavaScripy execCommand函数
execCommand函数命令 execCommand方法是执行一个对当前文档,当前选择或者给出范围的命令.处理Html数据时常用如下格式:document.execCommand(sCommand[ ...
- 用js来实现那些数据结构13(树01-二叉搜索树的实现)
前一篇文章我们学会了第一个非顺序数据结构hashMap,那么这一篇我们来学学树,包括树的概念和一些相关的术语以及二叉搜索树的实现.唉?为什么不是树的实现,不是二叉树的实现.偏偏是二叉搜索树的实现?嗯, ...
- 解读Batch Normalization
原文转自:http://blog.csdn.net/shuzfan/article/details/50723877 本次所讲的内容为Batch Normalization,简称BN,来源于<B ...
- [Angular2]eclipse中angular2开发环境的搭建
本文作者:苏生米沿 本文地址:http://blog.csdn.net/sushengmiyan 环境准备 1.eclipse neon 2.网络连接 插件地址 eclipse的插件市场地址: htt ...
- 代理IP爬取,计算,发放自动化系统
IoC Python端 MySQL端 PHP端 怎么使用 这学期有一门课叫<物联网与云计算>,于是我就做了一个大作业,实现的是对代理IP的爬取,计算推荐,发放给用户等任务的的自动化系统.由 ...
- Android开发之Path类使用详解,自绘各种各样的图形!
玩过自定义View的小伙伴都知道,在View的绘制过程中,有一个类叫做Path,Path可以帮助我们实现很多自定义形状的View,特别是配合xfermode属性来使用的时候.OK,那我们今天就来看看P ...
- JAVA通过继承Thread来创建线程
创建一个线程的第二种方法是创建一个新的类,该类继承Thread类,然后创建一个该类的实例. 继承类必须重写run()方法,该方法是新线程的入口点.它也必须调用start()方法才能执行. 实例 // ...