public class DatabaseManager {
private static LiteOrm liteOrm;
private static Context mContext = App.getContext();
private DatabaseManager() {
liteOrm = LiteOrm.newCascadeInstance(mContext, "dateme.db");
}
public static LiteOrm getLiteOrm() {
return liteOrm;
}
private static DatabaseManager ourInstance;
//单例模式
public static DatabaseManager getInstance() {
if (ourInstance == null) {
ourInstance = new DatabaseManager();
}
return ourInstance;
}
/**
* 插入一条记录
*
* @param t
*/
public <T> long insert(T t) {
return liteOrm.save(t);
}
public <T> long insertOrReplace(T t) {
return liteOrm.insert(t, ConflictAlgorithm.Replace);
}
/**
* 插入所有记录
*
* @param list
*/
public <T> void insertAll(List<T> list) {
liteOrm.save(list);
}
public <T> void insertOrReplaceAll(List<T> list) {
liteOrm.insert(list, ConflictAlgorithm.Ignore);
}
/**
* 查询所有
*
* @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));
}
/**
* 删除所有 某字段等于 Vlaue的值
*
* @param cla
* @param field
* @param value
*/
public <T> void deleteWhere(Class<T> cla, String field, String[] value) {
liteOrm.delete(cla, WhereBuilder.create(cla).where(field + "=?", value));
}
/**
* 删除所有
*
* @param cla
*/
public <T> void deleteAll(Class<T> cla) {
liteOrm.deleteAll(cla);
}
/**
* 仅在以存在时更新
*
* @param t
*/
public <T> void update(T t) {
liteOrm.update(t, ConflictAlgorithm.Replace);
}
public <T> void updateByWhere(Class<T> cla, String where, String whereArgs, String colume, Object value) {
int result = liteOrm.update(WhereBuilder.create(cla).where(where + "=?", new String[]{whereArgs}), new ColumnsValue(new String[]{colume}, new Object[]{value}), ConflictAlgorithm.Replace);
}
public <T> void updateALL(List<T> list) {
liteOrm.update(list);
}
//=========简单示例=============//
//用户头像 姓名
public void saveUserInfos(List<UserInfo> userInfos) {
liteOrm.save(userInfos);
}
public UserInfo queryUserInfo(String userId) {
UserInfo userInfo = new UserInfo();
userInfo.setUserId(userId);
List<UserInfo> users = new ArrayList<>();
//与或非等
QueryBuilder<UserInfo> qb = new QueryBuilder<UserInfo>(UserInfo.class)
.whereEquals("userId", userId);
users = liteOrm.query(qb);
HD.LOG("查询到的users: " + users.size());
if (users.size() == 0) return null;
userInfo.setIcon(users.get(0).getIcon());
userInfo.setName(users.get(0).getName());
return userInfo;
}
}
使用方法:
//添加数据
DatabaseManager.getInstance().saveUserInfos(userInfos);
//查询数据
UserInfo userInfo = DatabaseManager.getInstance().queryUserInfo(userId);
//查询语句参考
//聚合函数count查询,好像只有这一个
long nums = liteOrm.queryCount(Address.class); //查询有多少行
//模糊查询
QueryBuilder<Address> qb = new QueryBuilder<Address>(Address.class).where("address LIKE ?", new String[]{"%山%"});
//与或非等
qb = new QueryBuilder<Address>(Address.class)
.whereEquals("city", "南京")
.whereAppendAnd()
.whereEquals("address", "香港路");
//自己拼SQL语句
QueryBuilder<Address> qb = new QueryBuilder<Address>(Address.class)
.columns(new String[]{Address.COL_ADDRESS}) //查询列
.appendOrderAscBy(Address.COL_ADDRESS) //升序
.appendOrderDescBy(Address.COL_ID) //当第一列相同时使用该列降序排序
.distinct(true) //去重
.where(Address.COL_ADDRESS + "=?", new String[]{"香港路"}); //where条件
liteOrm.query(qb);
参考文章:
Android ORM框架 LiteOrm使用 - baiiu - 博客频道 - youkuaiyun.com
http://blog.youkuaiyun.com/u014099894/article/details/51586500