Example #1
0
 private void checkTableExist(Class<?> clazz) {
   if (!tableIsExist(TableInfo.get(clazz))) {
     String sql = SqlBuilder.getCreatTableSQL(clazz);
     debugSql(sql);
     db.execSQL(sql);
   }
 }
Example #2
0
 /**
  * 根据条件查找,同时查找“多对一”的数据(只查找findClass中的类的数据)
  *
  * @param id
  * @param clazz
  * @param findClass 要查找的类
  */
 public <T> T findWithManyToOneById(Object id, Class<T> clazz, Class<?>... findClass) {
   checkTableExist(clazz);
   String sql = SqlBuilder.getSelectSQL(clazz, id);
   debugSql(sql);
   DbModel dbModel = findDbModelBySQL(sql);
   if (dbModel != null) {
     T entity = CursorUtils.dbModel2Entity(dbModel, clazz);
     return loadManyToOne(entity, clazz, findClass);
   }
   return null;
 }
Example #3
0
 /**
  * 批量插入时增加事务,不然就是卡得一逼啊...
  *
  * @param list
  */
 public void saveList(List<? extends Object> list) {
   if (list == null || list.size() == 0) {
     return;
   }
   checkTableExist(list.get(0).getClass());
   db.beginTransaction();
   for (Object obj : list) {
     exeSqlInfo(SqlBuilder.buildInsertSql(obj));
   }
   db.setTransactionSuccessful();
   db.endTransaction();
 }
Example #4
0
 /**
  * 保存数据到数据库<br>
  * <b>注意:</b><br>
  * 保存成功后,entity的主键将被赋值(或更新)为数据库的主键, 只针对自增长的id有效
  *
  * @param entity 要保存的数据
  * @return ture: 保存成功 false:保存失败
  */
 public boolean saveBindId(Object entity) {
   checkTableExist(entity.getClass());
   List<KeyValue> entityKvList = SqlBuilder.getSaveKeyValueListByEntity(entity);
   if (entityKvList != null && entityKvList.size() > 0) {
     TableInfo tf = TableInfo.get(entity.getClass());
     ContentValues cv = new ContentValues();
     insertContentValues(entityKvList, cv);
     Long id = db.insert(tf.getTableName(), null, cv);
     if (id == -1) return false;
     tf.getId().setValue(entity, id);
     return true;
   }
   return false;
 }
Example #5
0
 /**
  * 根据主键查找数据(默认不查询多对一或者一对多的关联数据)
  *
  * @param id
  * @param clazz
  */
 public <T> T findById(Object id, Class<T> clazz) {
   checkTableExist(clazz);
   SqlInfo sqlInfo = SqlBuilder.getSelectSqlAsSqlInfo(clazz, id);
   if (sqlInfo != null) {
     debugSql(sqlInfo.getSql());
     Cursor cursor = db.rawQuery(sqlInfo.getSql(), sqlInfo.getBindArgsAsStringArray());
     try {
       if (cursor.moveToNext()) {
         return CursorUtils.getEntity(cursor, clazz, this);
       }
     } catch (Exception e) {
       e.printStackTrace();
     } finally {
       cursor.close();
     }
   }
   return null;
 }
Example #6
0
 /**
  * 根据条件查找所有数据
  *
  * @param clazz
  * @param strWhere 条件为空的时候查找所有数据
  * @param orderBy 排序字段
  */
 public <T> List<T> findAllByWhere(Class<T> clazz, String strWhere, String orderBy) {
   checkTableExist(clazz);
   return findAllBySql(
       clazz, SqlBuilder.getSelectSQLByWhere(clazz, strWhere) + " ORDER BY " + orderBy);
 }
Example #7
0
 /**
  * 查找所有的数据
  *
  * @param clazz
  */
 public <T> List<T> findAll(Class<T> clazz) {
   checkTableExist(clazz);
   return findAllBySql(clazz, SqlBuilder.getSelectSQL(clazz));
 }
Example #8
0
 /**
  * 根据条件删除数据
  *
  * @param clazz
  * @param strWhere 条件为空的时候 将会删除所有的数据
  */
 public void deleteByWhere(Class<?> clazz, String strWhere) {
   checkTableExist(clazz);
   String sql = SqlBuilder.buildDeleteSql(clazz, strWhere);
   debugSql(sql);
   db.execSQL(sql);
 }
Example #9
0
 /**
  * 根据主键删除数据
  *
  * @param clazz 要删除的实体类
  * @param id 主键值
  */
 public void deleteById(Class<?> clazz, Object id) {
   checkTableExist(clazz);
   exeSqlInfo(SqlBuilder.buildDeleteSql(clazz, id));
 }
Example #10
0
 /**
  * 删除数据
  *
  * @param entity entity的主键不能为空
  */
 public void delete(Object entity) {
   checkTableExist(entity.getClass());
   exeSqlInfo(SqlBuilder.buildDeleteSql(entity));
 }
Example #11
0
 /**
  * 根据条件更新数据
  *
  * @param entity
  * @param strWhere 条件为空的时候,将会更新所有的数据
  */
 public void update(Object entity, String strWhere) {
   checkTableExist(entity.getClass());
   exeSqlInfo(SqlBuilder.getUpdateSqlAsSqlInfo(entity, strWhere));
 }
Example #12
0
 /**
  * 更新数据 (主键ID必须不能为空)
  *
  * @param entity
  */
 public void update(Object entity) {
   checkTableExist(entity.getClass());
   exeSqlInfo(SqlBuilder.getUpdateSqlAsSqlInfo(entity));
 }
Example #13
0
 /**
  * 保存数据库,速度要比save快
  *
  * @param entity
  */
 public void save(Object entity) {
   checkTableExist(entity.getClass());
   exeSqlInfo(SqlBuilder.buildInsertSql(entity));
 }