那些网站是vue做的,模板网站制作服务,wordpress小工具代码,wordpress跟新到5.0.1是英文一、Greendao简介 Greendao是一款用于数据库创建与管理的框架#xff0c;由于原生SQLite语言比较复杂繁琐#xff0c;使得不少程序员不得不去学习SQLite原生语言#xff0c;但是学习成本高#xff0c;效率低下#xff0c;所以不少公司致力于开发一款简单的数据库管理框架由于原生SQLite语言比较复杂繁琐使得不少程序员不得不去学习SQLite原生语言但是学习成本高效率低下所以不少公司致力于开发一款简单的数据库管理框架较为著名的就有Greendao和ORMLite但是就数据分析来看Greendao的效率是高于ORMLite及其他框架的是目前该行业的领先者。也因为Greendao的使用方法简便且效率高使得其成为目前使用最为广泛的数据库管理框架这也是广大程序员的福音。 二、Greendao的使用方法 1.添加依赖 在bulid.gradle文件下的dependencies下添加所需依赖 compile org.greenrobot:greendao:3.2.2 // add library compile org.greenrobot:greendao-generator:3.2.2 2.在bulid.gradle下进行配置 apply plugin: org.greenrobot.greendao buildscript { repositories { mavenCentral() } dependencies { classpath org.greenrobot:greendao-gradle-plugin:3.2.2 } } 3.对greendao的generator生成文件进行配置 greendao { schemaVersion 1 //版本 daoPackage 生成文件包名 // 一般为app包名生成文件的文件夹名 targetGenDir src/main/java //生成文件路径 } 4.创建实体类生成dao文件 Entity public class dayStep { Id private long id; private String date; private int step; private Long sportId; ToOne(joinProperty sportId) private SportInfo sportInfo;//关系表 } 注意编写完实体类以后在实体类界面下按下CtrlF9Make project程序会自动编译生成dao文件生成的文件一共有三个。 5.使用Greendao 1创建一个application类在application中完成DaoSession的初始化避免以后重复初始化便于使用。 public class MyApplication extends Application { private DaoMaster.DevOpenHelper mHelper; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession; //静态单例 public static MyApplication instances; Override public void onCreate() { super.onCreate(); instances this; setDatabase(); } public static MyApplication getInstances(){ return instances; } /** * 设置greenDao */ private void setDatabase() { // 通过 DaoMaster 的内部类 DevOpenHelper你可以得到一个便利的 SQLiteOpenHelper 对象。 // 可能你已经注意到了你并不需要去编写「CREATE TABLE」这样的 SQL 语句因为 greenDAO 已经帮你做了。 // 注意默认的 DaoMaster.DevOpenHelper 会在数据库升级时删除所有的表意味着这将导致数据的丢失。 // 所以在正式的项目中你还应该做一层封装来实现数据库的安全升级。 mHelper new DaoMaster.DevOpenHelper(this, sport-db, null); db mHelper.getWritableDatabase(); // 注意该数据库连接属于 DaoMaster所以多个 Session 指的是相同的数据库连接。 mDaoMaster new DaoMaster(db); mDaoSession mDaoMaster.newSession(); } public DaoSession getDaoSession() { return mDaoSession; } public SQLiteDatabase getDb() { return db; } } 2Greendao操作数据库文件增删改查 /** * 增 */ public void insert() { String date new Date().toString(); mDayStep new dayStep(null,date,0);//第一个是id值因为是自增长所以不用传入 dao.insert(mDayStep); } /** * 查 */ public void Search() { //方法一 ListdayStep mDayStep dao.loadAll(); //方法二 //ListdayStep mDayStep dao.queryBuilder().list(); //方法三 惰性加载 //ListdayStep mDayStep dao.queryBuilder().listLazy(); for (int i 0; i mDayStep.size(); i) { String date ; date mDayStep.get(i).getDate(); Log.d(cc, id: idate: date); } } /** * 删 * param i 删除数据的id */ public void delete(long i) { dao.deleteByKey(i); //当然Greendao还提供了其他的删除方法只是传值不同而已 } /** *改 * param i * param date */ public void correct(long i,String date) { mDayStep new dayStep((long) i,date,0); dao.update(mDayStep); } /** *修改或者替换有的话就修改没有则替换 */ public void insertOrReplace(long i,String date) { mDayStep new dayStep((long) i,date,0); dao.insertOrReplace(mDayStep); } /** *查找符合某一字段的所有元素 */ public void searchEveryWhere(String str) { ListdayStep mList dao.queryBuilder() .where(dao.date.eq(str)).build().listLazy(); } (3)通过where查询指定数据 /** * 查询指定用户 */ public static ListUserInfo SearchUserInfo(int id) { //惰性加载 ListUserInfo list mUserInfoDao.queryBuilder().where(UserInfoDao.Properties.Id.eq(id)).list(); return list; } 三、多表关联 一对一与一对多概念几乎类似我们在这里就只做一对多的讲解我们实现一个用户有多张运动表运动表就是用户表的儿子表而用户表则是运动表的父表 运动表 Entity public class SportInfo { Id private Long sportId; //日期 private String date ; private Long UserId; ToOne(joinProperty UserId) private UserInfo userInfo;//关系表 } 用户表 Entity public class UserInfo { Id private Long id; //账号 private String number; //密码 private String password; //昵称 private String nick_name; //一对多关联 ToMany(referencedJoinProperty sportId) private ListSportInfo sportInfo; } 多表关联的增删改查我已封装成了方法方便使用 public class DataBaseTool { private static SportInfoDao mSportInfoDao MyApplication.getInstances().getDaoSession().getSportInfoDao(); private static UserInfoDao mUserInfoDao MyApplication.getInstances().getDaoSession().getUserInfoDao(); /** * 增加运动信息 */ public static long insertSportInfo(UserInfo userInfo,SportInfo sportInfo) { sportInfo.setUserId(userInfo.getId());//增加运动表时要指定其父表用户表id和用户表 sportInfo.setUserInfo(userInfo); return mSportInfoDao.insertOrReplace(sportInfo); } /** * 增加用户信息 */ public static long insertUserInfo(UserInfo info) { return mUserInfoDao.insertOrReplace(info); } /** * 查运动信息 */ public static ListSportInfo SearchSportInfo(UserInfo userInfo) { return userInfo.getSportInfo();//查找运动表则需要通过用户表来获取运动表的集合然后再遍历找到所需运动表 } /** * 查用户信息 */ public static ListUserInfo SearchUserInfo() { //惰性加载 ListUserInfo list mUserInfoDao.queryBuilder().listLazy(); return list; } /** * 删除某条用户信息 * param i 删除数据的id */ public static void deleteUserInfo(long i) { mUserInfoDao.deleteByKey(i); //当然Greendao还提供了其他的删除方法只是传值不同而已 } /** *修改某条运动信息 */ public static void correctSportInfo(SportInfo info) { mSportInfoDao.update(info); } /** *修改某条用户信息 */ public static void correctUserInfo(UserInfo info) { mUserInfoDao.update(info); } } 四、Greendao注解含义 1Entity 实体标识 nameInDb 在数据库中的名字如不写则为实体中类名 indexes 索引 createInDb 是否创建表默认为true,false时不创建 schema 指定架构名称为实体 active 无论是更新生成都刷新 2Id 每条数据对应的位置必写项 3Property(nameInDb ) 表示该属性将作为表的一个字段,其中nameInDb属性值是在数据库中对应的字段名称,可以自定义字段名,例如可以定一个跟实体对象字段不一样的字段名 4NotNull 不为null 5Unique 唯一约束 该属性值必须在数据库中是唯一值 6ToMany 一对多 7OrderBy 排序 8ToOne 一对一 关系表 9Transient 不保存于数据库 10generated 由greendao产生的构造函数或方法 五、Greendao特性 精简高效率低功耗使用方便转载于:https://www.cnblogs.com/JaxX/p/9919193.html