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()方法里调用一下
@Override
protected 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()方法里调用
@Override
protected 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()方法里调用
@Override
protected 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());
}
}
这里显示1条的原因是,我们一共只有4条数据,上一次显示了3条。
o(︶︿︶)o 唉,终于介绍完连缀查询了,擦。想用啥直接组合上去就好了,就是这么任性。