时间:2015-03-17 来源:

Android开发数据库之第三方ORM框架(GreenDao) 【综合】

     移动APP追求追求功能实现的同时web外包,用户体验非常重要.开始APP的同时,web外包要时刻的切换开发者的角色,html前端制作如你开发的时候,div页面是

            

色“的,承接网页前端外包如同电脑死机一般.这就是移动APP在开发的时候网页html切图排版,提供了最后一次网络状态下的数据缓存,网页html切图排版提到数据缓存,承接网站前端可想而知有内

       3、创建表 创建一个实体类 Entity note = schema.addEntity("Note"); 默认表名就是类名,html切图报价也可以自定义表名 dao.setTableName("NoteList"); greenDAO会自动根据实体类属性创建表字段,承接网页制作并赋予默认值.例如在数据库方面的表名和列名都来源于实体类名和属性名.默认的数据库名称是大写使用下划线分隔单词web外包,而不是在Java中使用的驼峰式大小写风格.例如,web外包一个名为“CREATIONDATE”属性将成为一个数据库列“CREATION_DATE”. 设置一个自增长ID列为主键: dao.addIdProperty().primaryKey().autoincrement(); 设置其他各种类型的属性: dao.addIntProperty("cityId"); dao.addStringProperty("infoType").notNull();//非null字段 dao.addDoubleProperty("Id"); 在生成的实体类中网页切图制作,int类型为自动转为long类型. 如果在编译过程中出现以下错误,网页切图制作那么有可能是主键的类型错误所致: java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.String 在使用greenDAO时div+css+js切图,一个实体类只能对应一个表,网页重构报价目前没法做到一个表对应多个实体类承接网站前端,或者多个表共用一种对象类型.后续的升级也不会针对这一点进行扩展.  

据库运用,承接网站前端需要对数据库进行频繁的读写、查询等操作.因此首先想到了对整个项目的数据库框架进行优化.原先使用android本身

从建表到对表的增删改查等操作psd切图html,如果表对象的属性很多,psd切图html就需要使用大量的代码来执行建表、插入等.在代码执行中还需要对数

                                该方法第一个参数用来更新数据库版本号web外包,第二个参数为要生成的DAO类所在包路径.             然后进行建表和设置要生成DAO文件的目标工程的项目路径.

       经过几天的修改,div切图排版终于将项目里的数据库相关的都优化完了.在这过程中网页切图制作,发现greenDAO的性能确实不错,网页切图制作而且使用相当方便div+css+js切图,不再需要涉及到任何的sql语言,手机网页外包可以直接通过对象类进行建表、增删改查等承接网站前端,尤其是api接口又方便易懂.在摸索学习中发现国内相关学习资料实在实在是太少,页面div重构遂决定在此记录下自己对使用这个orm框架的一些心得和方法总结.

       1、greenDAO官网:http://greendao-orm.com/            2、项目下载地址:https://github.com/greenrobot/greenDAO(或者官网) greenDAO是一个可以帮助Android开发者快速将Java对象映射到SQLite数据库的表单中的ORM解决方案psd切图html,开发者可以对Java对象进行存储、更新、删除和查询. greenDAO的主要设计目标: *最大性能(最快的Android ORM) *易于使用API *高度优化 *最小内存消耗

       何以体现greenDAO的优势呢?下面 greenDAO与ORMLite性能对比:

web外包,性能最佳.因此决定采用greenDAO框架,web外包对项目的orm框架进行改进.

           在main方法中网页切图制作,分析如下:

       首先greenDAO作为第三方的数据库ORM框架,div页面那必定有它的相关网站等资源.

                 public class ExampleDaoGenerator {   public static void main(String[] args) throws Exception { Schema schema = new Schema(3, "../DaoExample/src-gen"); }   private static void addNote(Schema schema) { Entity note = schema.addEntity("Note"); note.addIdProperty(); note.addStringProperty("text").notNull(); note.addStringProperty("comment"); note.addDateProperty("date"); }   private static void addCustomerOrder(Schema schema) { Entity customer = schema.addEntity("Customer"); customer.addIdProperty(); customer.addStringProperty("name").notNull(); Entity order = schema.addEntity("Order"); order.setTableName("ORDERS"); // "ORDER" is a reserved key<a href="http://www.it165.net/edu/ebg/" target="_blank" class="keylink">word</a> order.addIdProperty(); Property orderDate = order.addDateProperty("date").getProperty(); Property customerId = order.addLongProperty("customerId").notNull().getProperty(); order.addToOne(customer, customerId); customerToOrders.setName("orders"); customerToOrders.orderAsc(orderDate); } }

 三、常用方法笔记 1.在Application实现得到DaoMaster和DaoSession的方法: private static DaoMaster daoMaster; private static DaoSession daoSession; /** * 取得DaoMaster * * @param context * @return */ public static DaoMaster getDaoMaster(Context context) { if (daoMaster == null) { OpenHelper helper = new DaoMaster.DevOpenHelper(context, null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } return daoMaster; } /** * 取得DaoSession * * @param context * @return */ public static DaoSession getDaoSession(Context context) { if (daoSession == null) { if (daoMaster == null) { daoMaster = getDaoMaster(context); } daoSession = daoMaster.newSession(); } return daoSession; } 2.增删改查工具类: public class DBHelper { private static Context mContext; private static DBHelper instance;   private CityInfoDBDao cityInfoDao;   private DBHelper() { }   public static DBHelper getInstance(Context context) { if (instance == null) { instance = new DBHelper(); if (mContext == null) { mContext = context; }   // 数据库对象 DaoSession daoSession = HBApplication.getDaoSession(mContext); instance.cityInfoDao = daoSession.getCityInfoDBDao(); } return instance; }   /** 添加数据 */ public void addToCityInfoTable(CityInfo item) { cityInfoDao.insert(item); }   /** 查询 */ public List<EstateLoveListJson> getCityInfoList() { QueryBuilder<CityInfo> qb = cityInfoDao.queryBuilder(); return qb.list(); }   /** 查询 */ public List<CityInfo> getCityInfo() { return cityInfoDao.loadAll();// 查找图片相册 }   /** 查询 */ public boolean isSaved(int Id) { QueryBuilder<CityInfo> qb = cityInfoDao.queryBuilder(); qb.where(Properties.Id.eq(Id)); qb.buildCount().count(); return qb.buildCount().count() > 0 ? true : false;// 查找收藏表 }   /** 删除 */ public void deleteCityInfoList(int Id) { QueryBuilder<CityInfo> qb = cityInfoDao.queryBuilder(); DeleteQuery<CityInfo> bd = qb.where(Properties.Id.eq(Id)).buildDelete(); bd.executeDeleteWithoutDetachingEntities(); }   /** 删除 */ public void clearCityInfo() { cityInfoDao.deleteAll(); }   /** 通过城市id查找其类型id */ public int getTypeId(int cityId) { QueryBuilder<CityInfo> qb = cityInfoDao.queryBuilder(); qb.where(Properties.Id.eq(cityId)); if (qb.list().size() > 0) { return qb.list().get(0).getTypeId(); } else { return 0; } }   /** 多重查询 */ public List<CityInfo> getIphRegionList(int cityId) { QueryBuilder<CityInfoDB> qb = cityInfoDao.queryBuilder(); qb.where(qb.and(Properties.CityId.eq(cityId), Properties.InfoType.eq(HBContant.CITYINFO_IR))); qb.orderAsc(Properties.Id);// 排序依据 return qb.list(); } }        另外,web外包还有多表关联、惰性加载等功能网页切图制作,待后续研究. 参考资料: 1.https://github.com/greenrobot/greenDAO 2.http://greendao-orm.com/documentation/how-to-get-started/ 3.http://blog.csdn.net/krislight/article/details/9391455

        2、DAO类构造 首先需要新建一个java工程来生成DAO类文件,网页切图制作该工程需要导入greendao-generator.jar和freemarker.jar文件到项目中.

android经常用的orm框架主要有greenDAO、OrmLite、AndrORM. 综合了网上的各种评价div+css+js切图,greenDAO的运行效率最高,网页重构报价内存消耗最

        1、下载greenDAO框架资源后承接网站前端,解压分析官方Demo里共有六个工程目录,承接网站前端分别为: (1).DaoCore:库目录psd切图html,即jar文件greendao-1.3.0-beta-1.jar的代码; (2).DaoExample:android范例工程; (3).DaoExampleGenerator:DaoExample工程的DAO类构造器,psd切图htmljava工程; (4).DaoGenerator:DAO类构造器web外包,java工程; (5).DaoTest、PerformanceTestOrmLite:其他测试相关的工程.

据库和游标的进行及时关闭(开启使用,div切图排版用完关闭),而且还需要部分sql语言,网页切图制作这在开发中产生bug进行调试时尤其不方便.目前

一、greenDAO框架相关资源

存缓存、硬件缓存之分.在这我主要讲述的是一个硬件缓存-----Android开发数据库之第三方ORM框架(GreenDao).

内置的sqllite,也就是用的最基本的SQLiteOpenHelper方法,手机网页外包这种方法对自己来说比较方便易懂.但是在使用过程中感觉很繁琐承接网站前端,

站在APP的开发角色,页面div重构处于生产者的位置;当你测试的时候psd切图html,你应该把自己放在用户的角色上去考虑所做的APP了.举一个很简单的

6.删除:            (1)清空表格数据            /** 清空相册图片列表的数据 */            public void clearPhoto()            {            photoDao.deleteAll();            } (2)删除某个对象  {        QueryBuilder<DBCityInfo> qb = cityInfoDao.queryBuilder();        DeleteQuery<DBCityInfo> bd = qb.where(Properties.CityId.eq(cityId)).buildDelete();        bd.executeDeleteWithoutDetachingEntities(); } 由上可见,psd切图html使用greenDAO进行数据库的增删改查时及其方便web外包, "de.greenrobot.daoexample");

                                

             运行后可以看到网页切图制作,DaoExample项目src-gen下面自动生成了8个文件,div页面3个实体对象div+css+js切图,1个DaoMaster,1个DaoSession.

4、表的增删改查 增删改查相当方便,承接网站前端完全的面向对象psd切图html,不需要涉及到任何的sql语言.           查询 范例1:查询某个表是否包含某个id: public boolean isSaved(int ID) { QueryBuilder<SaveList> qb = saveListDao.queryBuilder(); qb.where(Properties.Id.eq(ID)); qb.buildCount().count(); return qb.buildCount().count() > 0 ? true : false; } 范例2:获取整个表的数据集合,承接网页制作一句代码就搞定! public List<PhotoGalleryDB> getPhotoGallery() {    return photoGalleryDao.loadAll();// 获取图片相册 } 范例3:通过一个字段值查找对应的另一个字段值(为简便直接使用下面方法web外包,也许有更简单的方法,web外包尚未尝试) /** 通过图片id查找其目录id */ public int getTypeId(int picId) { QueryBuilder<PhotoGalleryDB> qb = photoGalleryDao.queryBuilder(); qb.where(Properties.Id.eq(picId)); if (qb.list().size() > 0) { return qb.list().get(0).getTypeId(); } else { return -1; } } 范例4:查找所有第一姓名是“Joe”并且以lastname排序. List joes = userDao.queryBuilder() .where(Properties.FirstName.eq("Joe")) .orderAsc(Properties.LastName) .list(); 范例5:多重条件查询 (1)获取id为cityId并且infotype为HBContant.CITYINFO_SL的数据集合: public List<CityInfoDB> getSupportingList(int cityId) { QueryBuilder<CityInfoDB> qb = cityInfoDao.queryBuilder(); qb.where(qb.and(Properties.CityId.eq(cityId), qb.or(Properties.YearOfBirth.gt(1970), Properties.MonthOfBirth.ge(10)))); List youngJoes = qb.list(); 范例6:获取某列对象 picJsonDao.loadByRowId(picId); 5.增添/插入、修改 插入数据更加简单承接网站前端,最近工作量比较小psd切图html,闲着没事在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数

                public void addToPhotoTable(Photo p) { photoDao.insert(p); } 插入时需要new一个新的对象,psd切图html范例如下: DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, null); db = helper.getWritableDatabase(); daoMaster = new DaoMaster(db); daoSession = daoMaster.newSession(); noteDao = daoSession.getNoteDao(); Note note = new Note(null, comment, "../DaoExample/src-gen");             其中src-gen这个目录名需要在运行前手动创建承接网站前端,否则会报错.            如果运行后出现以下错误,页面div重构则导入DaoGenerator项目的dao.ftl文件即可(或者直接使用DaoGenerator来生成DAO文件).

                运行后出现以下的提示说明DAO文件自动生成成功了psd切图html,刷新一下DaoExample项目即可看到.

例子,psd切图html就像我们天天使用手机上的新闻、好友动态等web外包,当你没有网络的时候,web外包也还有数据的存在提供用户浏览网页切图制作,而不是一篇”白

点击次数:11461
作者:
web前端行业资讯
Web new NewsList
Postgres10开发者新特性 ,,2017年12月28日阿里巴巴、狗尾草、苏大联合论文:基于对抗学习的众包标注用于中文命名实体识别 ,,2017年12月28日柯洁的2017:20岁,与AI斗与人类斗,其乐无穷 ,,2017年12月28日如果机器人拥有痛觉,这个世界会有哪些不一样? ,,2017年12月28日苹果经典电脑Lisa源代码修复完成将于2018年开源 ,,2017年12月28日腾讯浏览指数发布年终榜单2017年人们都关注哪些AI话题? ,,2017年12月28日除了发现开普勒90,NASA还靠AI做了什么? ,,2017年12月28日柯洁宣布:明年4月,将再次与围棋AI交锋 ,,2017年12月28日百度无人车美国首秀CES将发布Apollo2.0 ,,2017年12月28日这四种技术发展趋势将在2018年改变世界 ,,2017年12月28日2017:谷歌DeepMind团队的年度回顾 ,,2017年12月28日封杀这个公式,AI智商将为零 ,,2017年12月28日微软AI高管:要让所有人、所有机构都用上人工智能 ,,2017年12月28日为什么Linux桌面年一直未到来 ,,2017年12月28日AppleLisa操作系统将开源 ,,2017年12月28日2018年9大技术趋势预测 ,,2017年12月28日谷歌研究院发布NIMA:能评价图像有多美,还能让图像变得更美 ,,2017年12月28日苹果为2019年iPhone开发大容量电池新技术 ,,2017年12月28日谷歌发布Tacotron2:能更简单地训练AI学习演讲 ,,2017年12月21日TensorFlow漏洞爆发背后:关于AI安全我们的傻与天真 ,,2017年12月21日Android端Edge浏览器新版发布:常规性能优化和BUG修复 ,,2017年12月21日三星开发出全球最小的DRAM芯片技术领先优势扩大 ,,2017年12月21日腾讯绝艺AI下一步将学习AlphaGozero自对弈训练 ,,2017年12月21日Facebook社交VR应用Spaces扩大覆盖面:入驻HTCVive ,,2017年12月21日设计图曝光:三星双屏折叠手机原来是这样的 ,,2017年12月21日微信支付和支付宝已成为世界移动支付的"老师" ,,2017年12月21日新专利表明FaceID未来有望装备在iPad、MacBook和iMac等设备 ,,2017年12月21日首批九个建议加入EE4J的项目 ,,2017年12月21日这就是SurfacePhone?微软可折叠手机概念图曝光 ,,2017年12月21日继“Angel”开源后,腾讯又开放TDinsight机器学习平台 ,,2017年12月21日web报表工具FineReport使用中遇到的常见报错及解决办法(三) 【编程语言】2015年04月07日CC++数组下标可以是负值【编程语言】2015年02月02日【项目总结】:如何做一个牛逼的Teamleader? 【移动开发】2015年08月03日这些年我的不足 ,,2016年07月24日自己动手实现数据结构——AVL树(C++实现)【移动开发】2015年08月14日iOS项目开发实战——制作View的颜色渐变动画 【编程语言】2015年08月24日自己常用的SQL查询语句【移动开发】2014年11月12日WordBreak--leetcode 【编程语言】2015年06月02日Binder驱动笔记 【编程语言】2015年02月11日Bmob的使用案例 【编程语言】2015年03月09日HTML——左右侧边栏布局 【互联网】2014年11月04日Node.jsv4.4.5发布 ,,2016年07月24日文件操作的几个常用方法之一【编程语言】2015年08月16日博客已搬家至http:my.oschina.netu2298483【移动开发】2014年12月29日基于CentOS的Mysql的使用说明【综合】2015年05月11日Android音量设置流程干货版 【云计算】2015年04月07日基于Ubuntu的发行PinguyOS11.10Pre-Alpha发布 ,,2016年06月23日FireFox11beta版发布 ,,2016年06月23日【Leetcode】:MinStack 【编程语言】2014年12月18日UITabBarController、UIViewController和UINavigationController的简单讲解 【编程语言】2015年02月15日iOS基础知识:类目、延展 【编程语言】2014年12月11日Fireworks制作渐隐线的技巧2014年01月28日HDOJ4305Lightning生成树计数【云计算】2015年05月05日NDK环境配置【编程语言】2015年06月11日SendToKinde“云打印”现在也支持Mac系统了(附下载) ,,2016年06月23日Linux---git的常用命令以及在github上获取,上传代码 【编程语言】2015年04月07日《编程导论(Java)·2.2.3变量的声明模型》【架构设计】2015年06月29日Android圆形、圆角图片ImageView 【移动开发】2015年08月24日谈谈网络编程(基于C++语言) ,,2016年06月23日最大优先队列 【Web前端】2015年06月24日
我们保证
We guarantee
> psd效果文件手工切图,保证图片效果最好体积最小利于传输
> 100%手写的HTML(DIV+CSS)编码,绝对符合W3C标准
> 代码精简、css沉余量小、搜索引擎扫描迅速,网页打开快捷
> 应用Css Sprite能够减少HTTP请求数,提高网页性能
> 跨浏览器兼容(IE6、7、8、9,Firefox火狐,Chrome谷歌)