现在的位置: 首页 > 综合 > 正文

LitePal学习总结 (八)…续一

2017年04月04日 ⁄ 综合 ⁄ 共 3468字 ⁄ 字号 评论关闭

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());
		}	
	}


来看Log打印出来的结果

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


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
















抱歉!评论已关闭.