Android 数据库 LiteOrm 的使用
1、什么是 LiteOrm
LiteOrm是一个小巧、强大、比系统自带数据库操作性能快1倍的 android ORM 框架类库,开发者一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。
2、github地址
https://github.com/litesuits/android-lite-orm
3、使用
下载最新的jar 包,然后导入到项目中
4、创建 orm 实例
一个数据库对应一个LiteOrm的实例,如果一个App只有一个数据库,那么LiteOrm应该是全局单例的。 如果多次新建LiteOrm实例,系统会提示你应该关闭之前的数据库,也可能会引起其他未知错误。
保持单例:
static LiteOrm liteOrm;
if (liteOrm == null) {
liteOrm = LiteOrm.newSingleInstance(this, "liteorm.db");
}
liteOrm.setDebugged(true); // open the log
为了在项目中使用方便,我们创建了一个 DatabaseManager 工具类
package com.app.liteorm; import com.litesuits.orm.LiteOrm;
import com.litesuits.orm.db.assit.QueryBuilder; import java.util.List; /**
* Created by ${zyj} on 2016/7/4.
*/
public class DatabaseManager { private static LiteOrm liteOrm;
private static DatabaseManager ourInstance = new DatabaseManager(); private DatabaseManager() {
liteOrm = LiteOrm.newCascadeInstance( MyAppLication.getContext() , "wifi.db" ) ;
} public static DatabaseManager getInstance() {
return ourInstance;
} /**
* 插入一条记录
* @param t
*/
public <T> long insert(T t) {
return liteOrm.save(t);
} /**
* 插入所有记录
* @param list
*/
public <T> void insertAll(List<T> list) {
liteOrm.save(list);
} /**
* 查询所有
* @param cla
* @return
*/
public <T> List<T> getQueryAll(Class<T> cla) {
return liteOrm.query(cla);
} /**
* 查询 某字段 等于 Value的值
* @param cla
* @param field
* @param value
* @return
*/
public <T> List<T> getQueryByWhere(Class<T> cla, String field, String[] value) {
return liteOrm.<T>query(new QueryBuilder(cla).where(field + "=?", value));
} /**
* 查询 某字段 等于 Value的值 可以指定从1-20,就是分页
* @param cla
* @param field
* @param value
* @param start
* @param length
* @return
*/
public <T> List<T> getQueryByWhereLength(Class<T> cla, String field, String[] value, int start, int length) {
return liteOrm.<T>query(new QueryBuilder(cla).where(field + "=?", value).limit(start, length));
} /**
* 删除一个数据
* @param t
* @param <T>
*/
public <T> void delete( T t){
liteOrm.delete( t ) ;
} /**
* 删除一个表
* @param cla
* @param <T>
*/
public <T> void delete( Class<T> cla ){
liteOrm.delete( cla ) ;
} /**
* 删除集合中的数据
* @param list
* @param <T>
*/
public <T> void deleteList( List<T> list ){
liteOrm.delete( list ) ;
} /**
* 删除数据库
*/
public void deleteDatabase(){
liteOrm.deleteDatabase() ;
} }
使用
package com.app.liteorm; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View; import java.util.ArrayList;
import java.util.List; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); final TestModel testModel = new TestModel() ;
testModel.setId( 1001 ) ;
testModel.setName( "jack" ) ;
testModel.setPassword( "123456" ) ;
testModel.setLogin( true ); TestModel testMode2 = new TestModel() ;
testMode2.setId( 1002 ) ;
testMode2.setName( "jack2" ) ;
testMode2.setPassword( "123456" ) ;
testMode2.setLogin( false ); final List<TestModel> list = new ArrayList<>() ;
list.add( testModel ) ;
list.add( testMode2 ) ; //插入一条数据
DatabaseManager.getInstance().insert( testModel ) ; //插入一个集合
DatabaseManager.getInstance().insertAll( list ) ; //查询所有
List<TestModel> queryList = DatabaseManager.getInstance().getQueryAll( TestModel.class ) ; //删除一个数据
findViewById( R.id.delete_object ).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseManager.getInstance().delete( testModel );
}
}); //删除一个集合
findViewById( R.id.delete_database ).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseManager.getInstance().deleteList( list );
}
}); //删除一个表
findViewById( R.id.delete_table ).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseManager.getInstance().delete( TestModel.class );
}
}); //删除整个数据库
findViewById( R.id.delete_database ).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DatabaseManager.getInstance().deleteDatabase();
}
});
}
}
5、相关代码已上传至 github
参考
Android 数据库 LiteOrm 的使用的更多相关文章
- 深入解析Sqlite的完美替代者,android数据库新王者——Realm
写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
- Android数据库升级
随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...
- 优雅的处理Android数据库升级的问题
原始完成于:2015-04-27 19:28:22 提供一种思路,优雅的处理Android数据库升级的问题,直接上代码: 1 package com.example.databaseissuetest ...
- Android数据库之SQLite数据库
Android数据库之SQLite数据库 导出查看数据库文件 在android中,为某个应用程序创建的数据库,只有它可以访问,其它应用程序是不能访问的,数据库位于Android设备/data/data ...
- Android 数据库读取数据显示 [5]
2016-12-1 课程内容 昨天学了Android数据库升级.降级.创建 今天把数据库表里面的数据读取出来显示到手机屏幕上 下面代码是MainActivity.java 的代码 package co ...
- Android数据库信息显示在listview上
Key Points: 1.使用SimpleCursorAdapter将Android数据库信息显示在listview上 adapter = new SimpleCursorAdapter(this, ...
- android数据库持久化框架
android数据库持久化框架
随机推荐
- JS魔法堂:ASI(自动分号插入机制)和前置分号
一.前言 今晚在知乎看到百姓网前端技术专家——贺师俊对<JavaScript 语句后应该加分号么?>的回答,让我又一次看到大牛的风采,实在佩服万分.但单纯的敬佩是不足以回报他如此优秀的文字 ...
- js正则中的贪婪和非贪婪模式问题总结
var b="abeeee:eeeee:eeeeeab"; console.log(b.match(/e+\:e+/g));//["eeee:eeeee"]贪婪 ...
- [转]俞敏洪:我和马云就差了8个字... [来自: news.mbalib.com]
我和马云差了 8 个字:越败越战,愈挫愈勇. 马云,我真的非常的佩服他,首先佩服他的是他跟我有同样的经历,我考了 3 年才考上了大学:他也是考了 3 年.我比他还要幸运一点,我考上的是北大的本科,马云 ...
- jquery 进阶
1.0 jquery的ajax同步和异步区别 2.0 cdnjquery加载失败加载本地 <script type="text/javascript" src="/ ...
- JS虚拟键盘
由于是触摸屏,所以需要一款JS虚拟键盘.上网找了一个好用的VirtualKeyboard,作了修改. 修改该插件参考的博客文章:http://www.cnblogs.com/xinggong/arch ...
- 使用ExpandoObject来实现多个Model传送至视图
昨天Insus.NET有实现<使用ViewModel来实现多个Model传送至视图>http://www.cnblogs.com/insus/p/5594134.html 那今天Insus ...
- 对TabControl的简单优化
之前由于忙于赶项目进度而忽视了软件的用户体验,界面挺难看,有一天看见组长优化了某个窗体,让人感觉完全不一样,我也不甘示弱,要把我的程序做顺眼一点才行.我的程序是一个以TabControl为主要容器的窗 ...
- jquery可见性选择器(匹配匹配所有显示的元素)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- ServletContext中常用方法介绍
一..获取Tomcat的Context的初始化参数.1.获取Tomcat的server.xml中设置Context的初始化参数.例如: <Context path="/testcont ...
- Scalaz(5)- typeclass:my typeclass scalaz style-demo
我们在上一篇讨论中介绍了一些基本的由scalaz提供的typeclass.这些基本typeclass主要的作用是通过操作符来保证类型安全,也就是在前期编译时就由compiler来发现错误.在这篇讨论中 ...