ORMLite的使用
首先需要下载core和android两个jar
http://ormlite.com/releases/
然后拷贝到libs文件夹下并且添加为库
具体的使用看标程:
School.java
package com.turtle920.ormlitedemo; import com.j256.ormlite.field.DatabaseField;
import com.j256.ormlite.table.DatabaseTable; @DatabaseTable(tableName = "school")
public class School { @DatabaseField(generatedId=true)
private int id; @DatabaseField(columnName = "name")
private String name; @DatabaseField
private String location; public int getId() {
return id;
} public void setId(int id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getLocation() {
return location;
} public void setLocation(String location) {
this.location = location;
}
}
以上通过注释符来用框架反射table和field,(generatedId=true)表示自增长
DBHelper.java
package com.turtle920.ormlitedemo; import android.content.Context;
import android.database.sqlite.SQLiteDatabase; import com.j256.ormlite.android.apptools.OrmLiteSqliteOpenHelper;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.support.ConnectionSource;
import com.j256.ormlite.table.TableUtils; import java.sql.SQLException; public class DBHelper extends OrmLiteSqliteOpenHelper { private final static int DATABASE_VERSION = 1;
Dao<School, Integer> mSchoolDao;
private static final String DB_NAME = "orm";
private static DBHelper mDbHelper; private DBHelper(Context context) {
super(context, DB_NAME, null, DATABASE_VERSION);
} public static DBHelper getInstance(Context context) {
if (mDbHelper == null) {
mDbHelper = new DBHelper(context);
}
return mDbHelper;
} @Override
public void onCreate(SQLiteDatabase arg0, ConnectionSource arg1) {
try {
TableUtils.createTableIfNotExists(connectionSource, School.class);
} catch (SQLException e) {
e.printStackTrace();
}
} @Override
public void onUpgrade(SQLiteDatabase arg0, ConnectionSource arg1, int arg2,
int arg3) {
} public Dao<School, Integer> getSchoolDao() throws SQLException {
if (mSchoolDao == null) {
mSchoolDao = getDao(School.class);
}
return mSchoolDao;
} }
这个类继承自OrmLiteSqliteOpenHelper.class继承自SqliteOpenHelper.class,相当于是增强版的
MainActivity.java
package com.turtle920.ormlitedemo; import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log; import com.j256.ormlite.dao.Dao; import java.sql.SQLException;
import java.util.List; public class MainActivity extends AppCompatActivity { private static final String TAG = "DaoDaoDao";
DBHelper mDbHelper;
Dao<School, Integer> mSchoolDao; @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDbHelper = DBHelper.getInstance(this);
try {
mSchoolDao = mDbHelper.getSchoolDao();
} catch (SQLException e) {
Log.e(TAG, "constructor exception", e);
}
testDao();
} private void testDao() { School school1 = new School();
school1.setName("university");
school1.setLocation("shanghai"); School school2 = new School();
school2.setName("middle school");
school2.setLocation("hubei"); School school3 = new School();
school3.setName("CDQZ");
school3.setLocation("CHENGDU"); try {
mSchoolDao.create(school1);
mSchoolDao.create(school2);
mSchoolDao.create(school3);
//获取表中所有的student。
Log.e(TAG,"************BEGIN*************");
List<School> schools=mSchoolDao.queryForAll();
Log.e(TAG, "before delete school1 size is:" + schools.size());
for (int i = 0; i < schools.size(); i++) {
Log.e(TAG, schools.get(i).getId()+" "+schools.get(i).getName()+" "+schools.get(i).getLocation());
}
mSchoolDao.delete(school1); //schools=mSchoolDao.queryForAll();
schools=mSchoolDao.queryForEq("id","3");
Log.e(TAG, "after delete school1 list size is:"+schools.size());
for (int i = 0; i < schools.size(); i++) {
Log.e(TAG, schools.get(i).getId()+" "+schools.get(i).getName()+" "+schools.get(i).getLocation());
} } catch (SQLException e) {
e.printStackTrace();
}
} }
其中一些操作:
.queryForEq("id","3");//查询“id”=“3”的
.queryForAll();//所有
.delete(school1);//删除
.deleteById(int id);//按id删
.update(school);//更新
.create(school);//插入
可以看到对数据库的访问被投影成了对对象的操作,相比直接用android给的api操作数据库要短平快的多。
ORMLite的使用的更多相关文章
- Android Ormlite 学习笔记1 -- 基础
Ormlite 是一个开源Java数据实体映射框架.其中依赖2个核心类库: 1.ormlite-android-4.48.jar 2.ormlite-core-4.48.jar 新建项目,引用上面2个 ...
- [翻译] ORMLite document -- How to Use Part (二)
前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ----------------- ...
- [翻译] ORMLite document -- How to Use Part (一)
前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ----------------- ...
- [翻译] ORMLite document -- Getting Started
前言 此文档翻译于第一次学习 ORMLite 框架,如果发现当中有什么不对的地方,请指正.若翻译与原文档出现任何的不相符,请以原文档为准.原则上建议学习原英文文档. ----------------- ...
- 测试EF6.1.3和OrmLite性能
公司原来用nhibernate,现在考虑要不要换一种ORM,于是找来了EF和ServiceStack.OrmLite.所以就产生了测试这三个性能的要求.对比三个ORM工具的性能,主要是对比ORM配置和 ...
- ormlite的使用方法
ormlite是什么? 简单来说,就是我们定义一个实体类,利用这个框架,它可以帮我们吧这个实体映射到我们的数据库中,在Android中是SQLite,数据中的字段就是我们定义实体的成员变量. 官网地址 ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
- Android 数据库框架OrmLite的使用(二)
前面说了OrmLite的基本使用,现在说下更规范的做法以及常用的一些功能. 1.DatabaseHelper package com.example.ormlite.db; import java.s ...
- Loogn.OrmLite映射优化记录
大家对ORM效率的争议多半在映射性能方面.自己的ORMLite也是如此,经过前段时间的折腾,已经找不出一个简单的方法再提升一下这部分的方法了.在此把优化涉及的几点记录一下. 注:用于性能测试的Code ...
- 谈谈我的入门级实体框架Loogn.OrmLite
每次看到有新的ORM的时候,我总会留意一下,因为自己也写过一个这样的框架,人总是有比较之心的.我可能会down下来跑一跑,也可能不会这么做,这个取决于跑起来的难易程度.我是很懒的,有XML配置或其他稍 ...
随机推荐
- quartz(7)-源码分析
定时器启动 上图通过spring加载quartz <bean id="scheduler" class="org.springframework.schedulin ...
- spring的cglib代理
1.被代理类Person.java package com.xiaostudy; /** * @desc 被代理类 * * @author xiaostudy * */ public class Pe ...
- git diff提示filemode发生改变解决办法
git diff提示filemode发生改变(old mode 100644.new mode 10075) Posted on 2016-11-15 16:55 我是孙海龙 阅读(2292) 评论( ...
- c语言字符处理函数常见使用集合
1.最近看一些开源项目代码时,总会看到 c 语言中一些 "str" 开头的处理字符串的用法,有的之前没用到过,特此记录,随时看到随时添加. 这里不提出源码,只是一些使用说明加例子 ...
- Spring -- aop, 用Aspectj进行AOP开发
1. 概要 添加类库:aspectjrt.jar和aspectjweaver.jar 添加aop schema. 定义xml元素:<aop:aspectj-autoproxy> 编写jav ...
- Codeforces Round #363 (Div. 2) A、B、C
A. Launch of Collider time limit per test 2 seconds memory limit per test 256 megabytes input standa ...
- Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals)
Codeforces Round #423 (Div. 1, rated, based on VK Cup Finals) A.String Reconstruction B. High Load C ...
- 报错org.apache.ibatis.binding.BindingException: Type interface com.atguigu.mybatis.bean.dao.EmployeeMapper is not known to the MapperRegistry.
报错org.apache.ibatis.binding.BindingException: Type interface com.atguigu.mybatis.bean.dao.EmployeeMa ...
- Mac 终端 Termial 高亮配置(PS1变量配置)
操作环境: 系统:Mac 10.12 编辑器:vim 一.无脑配置: 1. 打开中端输入: vi ~/.bash_profile 2. 打开并编辑 .bash_profile 文件: 按键盘“i”,进 ...
- IOS-通讯录
一.通讯录简介 iOS提供了AddressBook.framework框架,允许开发者与设备中的通讯录进行数据交互 二.查询授权状态 可以调用ABAddressBookGetAuthorizati ...