您的位置:首页 > 移动开发 > Android开发

Android ORMLite框架笔记

2017-07-31 17:04 363 查看
一概要:

在Android 项目开发中,如果要使用数据库,向大家介绍一个关于数据的开源框架ORMLite。

提高我们开发数据的效率,特别是对于数据库使用频繁的项目开发。

配置:我们需要去官网下载两个jar(ormlite-android-5.0.jar,ormlite-core-5.0.jar),

官网:http://ormlite.com/releases/

优点:轻量级;使用简单,易上手;封装完善;

缺点:由于使用到了反射,效率较低。

二使用:

1,配置Bean类:

@DatabaseTable(tableName = "tb_person") //标明这是数据库中一张表,表名为tb_person
public class Person {

@DatabaseField(generatedId = true) //对应表tb_person,中id列,id为主键且自动生成
private int _id;
@DatabaseField(columnName = "name")//对应列name
private String name;
@DatabaseField(columnName = "descri")//对应列descri
private String descri;

public Person(){}

public Person(String name, String descri){
this.name = name;
this.descri = descri;
}

public int get_id() {
return _id;
}

public String getName() {
return name;
}

public String getDescri() {
return descri;
}

public void set_id(int _id) {
this._id = _id;
}

public void setName(String name) {
this.name = name;
}

public void setDescri(String descri) {
this.descri = descri;
}

@Override
public String toString() {
return "Person{" +
"_id=" + _id +
", name='" + name + '\'' +
", descri='" + descri + '\'' +
'}';
}
}

2,定义DBHelper,继承OrmLiteSqliteOpenHelper。
public class OrmDBHelper extends OrmLiteSqliteOpenHelper{

private static final String DB_NAME = "test.db";//数据库名
private static final int DB_VERSION = 2;//版本号
private static OrmDBHelper instance;//单例模式
private Map<String, Dao> daos = new HashMap<String, Dao>();

public OrmDBHelper(Context context){
super(context, DB_NAME, null, DB_VERSION);
}

@Override
public void onCreate(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource) {
try{
TableUtils.createTable(connectionSource, Person.class);//数据库创建时
}catch (Exception e){

}
}

@Override
public void onUpgrade(SQLiteDatabase sqLiteDatabase, ConnectionSource connectionSource, int i, int i1) {
try{//版本升级,数据库更新
TableUtils.dropTable(connectionSource, Person.class, true);
onCreate(sqLiteDatabase, connectionSource);
}catch (Exception e){

}
}

/**
* 获取单例
* @param context
* @return
*/
public static synchronized OrmDBHelper getInstance(Context context){
Context ct = context.getApplicationContext();
if(instance == null){
synchronized (OrmDBHelper.class){
if(instance == null){
instance = new OrmDBHelper(ct);
}
}
}
return instance;
}

/**
* 通过类名获取dao
*/
public Dao getDao(Class clazz) throws SQLException {
Dao dao = null;
String name = clazz.getSimpleName();
if(!daos.containsKey(name)){
dao = super.getDao(clazz);
daos.put(name, dao);
}else{
dao = daos.get(name);
}
return dao;
}

/**
* 释放资源
*/
public void close(){
for(String key : daos.keySet()){
Dao dao = daos.get(key);
dao = null;
}
daos.clear();
}
}


3,生成实例类Bean对应的BeanDao:
public class PersonDao {

private Context context;
private OrmDBHelper mHelper;
private Dao<Person, Integer> mDao;

public PersonDao(Context context){
this.context = context;
try{
mHelper = OrmDBHelper.getInstance(context);
mDao = mHelper.getDao(Person.class);
}catch (Exception e){
e.printStackTrace();
}
}

//添加Person
public void add(Person person){
try {
mDao.create(person);
} catch (SQLException e) {
e.printStackTrace();
}
}

public void delete(Person person){
try {
mDao.delete(person);
} catch (SQLException e) {
e.printStackTrace();
}
}

public void update(Person person) {
try {
mDao.update(person);
} catch (SQLException e) {
e.printStackTrace();
}
}

public List<Person> queryAll(){
List<Person> persons = null;
try {
persons = mDao.queryForAll();
} catch (SQLException e) {
e.printStackTrace();
}
return persons;
}
}

4,调用:
personDao = new PersonDao(getApplicationContext());
Person person = new Person("张三", "2B青年");
personDao.add(person);


参考:http://blog.csdn.net/lmj623565791/article/details/39122981
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: