GreenDao的使用
1、在project的build.grade文件中添加如下依赖
classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
2、在app的build.grade文件中添加如下依赖
compile 'org.greenrobot:greendao:3.0.1'
compile 'org.greenrobot:greendao-generator:3.0.0'
3、在app的build.gradle文件中声明greendao的路径、版本、名称的设置
greendao {
schemaVersion 1
daoPackage 'com.zty.greendao.gen'
targetGenDir 'src/main/java'
}
4、在app的build.gradle文件中顶部添加
apply plugin: 'org.greenrobot.greendao'
5、创建实体类
@Entity
public class Equip implements java.io.Serializable {
@Id
@Property(nameInDb = "EQUIP_ID")
private Long equipId;
private Long roomId;
private Integer organId;
private Integer equipTypeId;
private String cardNo;
private String equipName;
private String equipSpecify;
private String equipBrand;
private Integer count;
private String assetCode;
private Integer assetTypeId;
private String assetSource;
private Long userId;
private String userName;
private String remark;
@Transient
private Integer newDataFlag;
}
6、创建完实体类后点击android studio中的如下图标
7、点击如上图标后会生成如下几个代码
8、以下我们将在Application配置数据库的一些参数就可以使用了
private DbManager manager; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession;
@Override public void onCreate() { super.onCreate(); setDatabase();
}
private void setDatabase() { manager=new DbManager(this, "collect-db"); db = manager.getWritableDatabase(); // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。 mDaoMaster = new DaoMaster(db); mDaoSession = mDaoMaster.newSession(); }
public static MyApplication getInstances(){ return instances;
}
public DaoSession getDaoSession() { return mDaoSession; }
9、配置好后我们可以按下面方法调用
DaoSession daoSession= MyApplication.getInstances().getDaoSession();
List<Equip> equips=daoSession.getEquipDao().queryBuilder().where(EquipDao.Properties.RoomId.eq(roomId))
.list();
至此最简单的数据库查询已经完成
10、部分数据库查询代码如下
public class DataUtil { private static String root= Environment.getExternalStorageDirectory().getPath(); private static DaoSession daoSession= MyApplication.getInstances().getDaoSession(); /** * 根据设备获取图片 * @param context * @param organId * @param equipId * @return */ public static List<Map<String,Object>> getImageByEquipId(Context context, Long organId, Long equipId) { //根据 organId 为目录 每个学校有个文件目录 List list=new ArrayList(); List<Attachment> attachments=daoSession.getAttachmentDao().queryBuilder().where(AttachmentDao.Properties.BizId.eq(equipId)).list(); for (Attachment attachment:attachments){ HashMap map=new HashMap(); File file=getSchoolPathByOrganId(organId,attachment.getFileName()); //文件地址 map.put("url",file.getPath()); map.put("view",new ImageView(context)); list.add(map); } return list; } /** * 根据模板设备id获取模板图片 * @param context * @param modelEquipId * @return */ public static List<Map<String,Object>> getImageByModelEquipId(Context context, Long modelEquipId) { //根据 organId 为目录 每个学校有个文件目录 List list=new ArrayList(); List<ModelEquipAttachMent> modelEquipAttachMents=daoSession.getModelEquipAttachMentDao() .queryBuilder().where(ModelEquipAttachMentDao.Properties.ModelEquipId.eq(modelEquipId)).list(); for (ModelEquipAttachMent ModelEquipAttachMent:modelEquipAttachMents){ HashMap map=new HashMap(); File file=getSchoolPathByModel("model",ModelEquipAttachMent.getFileName()); //文件地址 map.put("url",file.getPath()); map.put("view",new ImageView(context)); list.add(map); } return list; } /** * 根据学校id获取学校路径 * @param organId * @param fileName * @return */ public static File getSchoolPathByOrganId(Long organId, String fileName) { File dir=new File(root,MyApplication.getInstances().getPrjName()); File schoolDir=new File(dir.getPath(),organId+""); if(!schoolDir.exists()){ schoolDir.mkdirs(); } File file=new File(schoolDir.getPath(),fileName); return file; } /** * 根据学校id获取学校目录 * @param organId * @return */ public static File getSchoolPathByOrganIdDir(Long organId) { File dir=new File(root,MyApplication.getInstances().getPrjName()); File schoolDir=new File(dir.getPath(),organId+""); if(!schoolDir.exists()){ schoolDir.mkdirs(); } return schoolDir; } public static File getCompressFile() { File dir=new File(root,MyApplication.getInstances().getPrjName()); File compressDir=new File(dir.getPath(),"compress"); return compressDir; } private static File getSchoolPathByModel(String model, String fileName) { File dir=new File(root,MyApplication.getInstances().getPrjName()); File schoolDir=new File(dir.getPath(),model+""); if(!schoolDir.exists()) schoolDir.mkdirs(); File file=new File(schoolDir.getPath(),fileName); return file; } public static List<SortModel> getSchoolData(Context context) { List<SortModel> mSortList=new ArrayList<>(); List<Organ> organs=daoSession.getOrganDao().queryBuilder().list(); Log.i("ggg","getSchoolData size="+organs.size()); for (int i = 0; i < organs.size(); i++) { SortModel sortModel = new SortModel(); sortModel.setName(organs.get(i).getOrganName()); sortModel.setBizId(organs.get(i).getOrganId()); //汉字转换成拼音 String pinyin = PinyinUtils.getPingYin(organs.get(i).getOrganName()); String sortString = pinyin.substring(0, 1).toUpperCase(); // 正则表达式,判断首字母是否是英文字母 if (sortString.matches("[A-Z]")) { sortModel.setLetters(sortString.toUpperCase()); } else { sortModel.setLetters("#"); } mSortList.add(sortModel); } return mSortList; } public static List<SortModel> getRoomData(RoomActivity roomActivity, Long organId, String inventoryStatus,Long blockId,Integer cnt) { List<SortModel> mSortList=new ArrayList<>(); List<Room> rooms=null; if("".equals(inventoryStatus)){ rooms=daoSession.getRoomDao().queryBuilder() .where(RoomDao.Properties.OrganId.eq(organId)) .where(RoomDao.Properties.BlockId.eq(blockId))