Greendao简单封装

public class DaoHelper{
    private  DaoSession daoSession;


    private static DaoHelper instance = new DaoHelper();



    public static DaoHelper getInstance() {
        return instance;
    }

    private DaoHelper() {
        setupDatabase();
    }

    private   DaoSession getDaoSession() {
        return daoSession;
    }

    private void setupDatabase() {
        //创建数据库shop.db
        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(MyApplication.getContext(), "shop.db", null);
        //获取可写数据库
        SQLiteDatabase db = helper.getWritableDatabase();
        //获取数据库对象
        DaoMaster daoMaster = new DaoMaster(db);
        //获取dao对象管理者
        daoSession = daoMaster.newSession();
    }

    /**
     * 插入一条数据
     * @param name
     */
    public void insert(String name){
        User user= new User();
        user.setName(name);
        DaoHelper.this.getInstance().getDaoSession().getUserDao().insert(user);
    }
    /**
     * 查询所有数据
     */

    public  <T>List<T> loadAll(Class<T> tClass){
        return getInstance().getDaoSession().loadAll(tClass);
    }
    /**
     * 按主键ID查询一条数据
     */

    public <T,K>T load(Class<T> tClass,K k){
        return DaoHelper.this.getInstance().getDaoSession().load(tClass,k);
    }
    /**
     * 根据字段查询一条数据
     */

    public <T,K>T loadByField(K field){
        T t = (T) getInstance().getDaoSession().getUserDao().queryBuilder().where(UserDao.Properties.Name.eq(field)).unique();//需要跟据自己的Dao类修改
        return  t;

    }

    /**
     * 模糊查询之包含某个特殊字的查询--queryLike方法
     * @param field
     * @param <T>
     * @param <K>
     * @return
     */
    public <T,K> List<T> loadListByNotField(K field){
        List<T> ts = (List<T>) getInstance().getDaoSession().getUserDao().queryBuilder().where(UserDao.Properties.Name.notEq(field)).list();
        return ts;
    }
    /**
     * 模糊查询之包含某个特殊字的查询--queryLike方法
     * @param field
     * @param <T>
     * @param <K>
     * @return
     */
    public <T,K> List<T> loadListByField(K field){
        List<T> ts = (List<T>) getInstance().getDaoSession().getUserDao().queryBuilder().where(UserDao.Properties.Name.like(field+"%")).list();
                return ts;
    }

    /**
     * 清空所有数据
     * @param tClass
     * @param <T>
     */
    public <T>void deleteAll(Class<T> tClass){
        getInstance().getDaoSession().getDao(tClass).deleteAll();
    }

    /**
     * 根据实体类删除一条记录,一般结合查询方法,查询出一条记录之后删除。
     * @param t
     * @param <T>
     */
    public <T>void delete(T t){
        getInstance().getDaoSession().delete(t);
    }

    /**
     * 根据主键删除一条数据
     * @param id
     */
    public void deleteByKey(Long id){
        getInstance().getDaoSession().getUserDao().deleteByKey(id);
    }

    /**
     * 改一条数据
     * @param t
     * @param <T>
     */
    public <T>void update(T t){
        getInstance().getDaoSession().update(t);
    }


}
 

总感觉可以在简单点,能力有限,哪位大神能教教我

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值