liteorm简单封装


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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值