LitePal学习总结 (八)...续一

来源:互联网 发布:mac 磁盘管理 编辑:程序博客网 时间:2024/06/02 23:07

LitePal框架是郭神的开源框架,郭神博客


惯例,膜拜一下郭神。

下面正式开播,上一篇(总结八)写的太累,但是也把简单查询给总结完了,本篇接着总结八继续写。

介绍完简单查询,我们介绍连缀查询。

郭神的连缀查询,我理解的就是根据条件查询。

举例:

查询News表中,查询id>5的数据

/** * 查询id>5的记录 */private void selectTest1() {List<News> newsList=DataSupport.where("id>?", "5").find(News.class);for (News newslist : newsList) {Log.i(TAG,"Title: " + newslist.getTitle() + "Content: "+ newslist.getContent());}}

然后在onCreate()方法里调用一下

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();// addMyFirstNews();// addNewsAndIntroduce();// addNewsAndComments();// addNewsAndCategories();// updateNewsInfo();// updateAllUseConditions();// updateAllUseConditions2();// deteleNews();// deteleNews2();// deleteAllUseConditions();// deleteAllUseConditions2();// findDataById();// findFirstData();// findLastData();// findAllData();// findAllBySomeId();selectTest1();}


来看一下log打印出来的结果



来看看数据库的News表的数据



经过对比,我们发现我们的查询结果是正确的。


那我们想要查询News表中id>5的数据的Content和title两列怎么弄呢?

来人,上代码

/** * 查询News表中id>5的数据的Content和title两列 */private void selectTest2() {List<News> newsList = DataSupport.select("content","title").where("id>?", "5").find(News.class);for (News newslist : newsList) {Log.i(TAG,"Title: " + newslist.getTitle() + "Content: "+ newslist.getContent());}}

然后在onCreate()方法里调用

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();// addMyFirstNews();// addNewsAndIntroduce();// addNewsAndComments();// addNewsAndCategories();// updateNewsInfo();// updateAllUseConditions();// updateAllUseConditions2();// deteleNews();// deteleNews2();// deleteAllUseConditions();// deleteAllUseConditions2();// findDataById();// findFirstData();// findLastData();// findAllData();// findAllBySomeId();// selectTest1();selectTest2();

来看一下Log打印出来的结果



对于News数据表中的数据



这里和上一个连缀查询的区别是,我们的返回的News对象只包含我们查询的2列。


以此类推,我们还可以对查询的结果进行排序。

来人,上代码呀

/** * 查询News表中id>5的数据的Content和title两列,并根据id降序排列。 */private void selectTest3() {List<News> newsList = DataSupport.select("content", "title").where("id>?", "5").order("id desc").find(News.class);for (News newslist : newsList) {Log.i(TAG,"Title: " + newslist.getTitle() + "Content: "+ newslist.getContent());}}

然后在onCreate()方法里调用

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();// addMyFirstNews();// addNewsAndIntroduce();// addNewsAndComments();// addNewsAndCategories();// updateNewsInfo();// updateAllUseConditions();// updateAllUseConditions2();// deteleNews();// deteleNews2();// deleteAllUseConditions();// deleteAllUseConditions2();// findDataById();// findFirstData();// findLastData();// findAllData();// findAllBySomeId();// selectTest1();// selectTest2();selectTest3();

来看Log打印出来的结果。



我们发现,先打印的是id=7的数据,然后是id=6的数据。


还可以进行分页

上代码

/** * 查询News表中所有数据,并根据id降序排列,并且进行分页,每页显示3个。 */private void selectTest4() {List<News> newsList = DataSupport.order("id desc").limit(3).find(News.class);for (News newslist : newsList) {Log.i(TAG,"Title: " + newslist.getTitle() + "Content: "+ newslist.getContent());}}

来看看Log打印出来的结果。



我们发现是根据id的逆序打印出来的。


那么我想利用分页查询,点击下一页的时候,下一页也显示3个数据怎么弄呢?

上代码

/** * 查询News表中所有数据,并根据id降序排列,并且进行分页,每页显示3个,点击下一页,也显示3个。 */private void selectTest5() {List<News> newsList = DataSupport.order("id desc").limit(3).offset(3).find(News.class);for (News newslist : newsList) {Log.i(TAG,"Title: " + newslist.getTitle() + "Content: "+ newslist.getContent());}}


来看Log打印出来的结果



这里显示1条的原因是,我们一共只有4条数据,上一次显示了3条。


o(︶︿︶)o 唉,终于介绍完连缀查询了,擦。想用啥直接组合上去就好了,就是这么任性。

















0 0
原创粉丝点击