在web开发中经常采用的hibernate,在android也提供了一个ormlite
新建一个PO
导入所需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();
}
}