通用分页详细讲解(后端)

文章介绍了如何在Java中实现通用查询和分页查询,以减少重复代码,提高效率。通用查询方法通过封装SQL和处理结果集,实现了对不同表的查询。分页查询进一步扩展了这个概念,结合分页工具类实现了数据的分页展示。此外,文章还讲解了Junit测试框架的基本使用,包括配置环境和编写测试方法,以自动化测试代码的正确性。
摘要由CSDN通过智能技术生成

 今日金句

若有恒,何必三更眠五更起

最无益,莫过一日曝十日寒


目录

一、通用分页查询概述

二、通用分页查询讲解

2.1 未使用通用查询示例

2.2 通用查询实例

2.3 通用分页查询实例

 三、Junit

3.1概述

3.2用法

3.2.1配置环境

 3.2.2具体用法


一、通用分页查询概述

当需要对多种类型的数据进行分页功能时,如果每种类型都要写相对应的分页功能的话,那代码量太大了,其实这些分页功能存在大量重复性的代码,那我们可以将其中重复的代码提炼起来做个通用的封装分页方法,每次需要写分页查询功能时,不管是要对张三的内裤进行分页、还是要对李四的丝袜进行分页,只要继承通用分页查询方法即可减少大量代码。

二、通用分页查询讲解

准备:连接mysql、一个书籍实体类和非空判断方法类以及分页工具类

2.1 未使用通用查询示例

 非空判断方法类:

package com.xqx.util;

/**
 * 封装非空判断方法
 * 
 * @author W许潜行
 *
 */
public class StringUtils {
	// 私有的构造方法,保护此类不能在外部实例化
	private StringUtils() {
	}

	/**
	 * 如果字符串等于null或去空格后等于"",则返回true,否则返回false
	 * 
	 * @param s
	 * @return
	 */
	public static boolean isBlank(String s) {
		boolean b = false;
		if (null == s || s.trim().equals("")) {
			b = true;
		}
		return b;
	}
	
	/**
	 * 如果字符串不等于null或去空格后不等于"",则返回true,否则返回false
	 * 
	 * @param s
	 * @return
	 */
	public static boolean isNotBlank(String s) {
		return !isBlank(s);
	}

}

Dao方法类:

	/**原始查询方法
	 * @param book 书籍实体类
	 * @return
	 * @throws Exception
	 */
	public List<Book> queryBook(Book book) throws Exception {
		List<Book> list = new ArrayList<Book>();
		// 建立连接
		Connection conn = DBHepler.getConnection();
		String sql = "select *from t_mvc_book";
		String bname = book.getBname();
		if (!StringUtils.isBlank(bname)) {//如果非空
			sql += " where bname like '%" + bname + "%' ";
		}
		// 执行sql语句
		PreparedStatement ps = conn.prepareStatement(sql);
		// 结果集
		ResultSet rs = ps.executeQuery();
		while (rs.next()) {
			list.add(new Book(rs.getInt("bid"), rs.getString("bname"), rs.getFloat("price")));
		}

		return list;
	}
	public static void main(String[] args) throws Exception {
		System.out.println("==================原始查询======================");
		Book book = new Book();
		//查询名称
		book.setBname("圣墟");
		List<Book> listBook = new BookDao().queryBook(book,);
		for (Book bookList : listBook) {
			System.out.println(bookList);
		}

	}

打印结果:

2.2 通用查询实例

首先封装通用查询方法

	/**
	 * @param sql 语句
	 * @param classes 类
	 * @param pageBean
	 * @return
	 * @throws Exception
	 */
	public List<T> query(String sql,Class<T> classes ) throws Exception {
		List<T> list = new ArrayList<T>();
		// 建立连接
		Connection conn = DBHepler.getConnection();
		// 执行sql语句
		PreparedStatement ps = conn.prepareStatement(sql);
		// 结果集
		ResultSet rs = ps.executeQuery();
		
		while (rs.next()) {
			//类实例
			T t = classes.newInstance();
			//拿到所有属性
			Field[] fields = classes.getDeclaredFields();
			for (Field fieldName : fields) {
				//打开访问权限
				fieldName.setAccessible(true);
				//为t赋值
				fieldName.set(t, rs.getObject(fieldName.getName()));
			}
            //将t加到集合
			list.add(t);
		}

		return list;
	}

实现思路:

  1. 获取数据库连接。
  2. 创建PreparedStatement对象,执行SQL语句,获得结果集。
  3. 循环结果集,创建查询结果对象t,并将结果集中的数据赋值给t的属性。
  4. 将数据对象t添加到查询结果的List中。
  5. 返回List对象。

然后在dao方法内继承调用通用方法

	/**使用通用模糊查询方法
	 * @param book
	 * @return
	 * @throws Exception
	 */
	public List<Book> queryBook2(Book book) throws Exception {
		String sql = "select *from t_mvc_book";
		String bname = book.getBname();
		if (!StringUtils.isBlank(bname)) {
			sql += " where bname like '%" + bname + "%' ";
		}
		return super.query(sql, Book.class);
	}

测试

	public static void main(String[] args) throws Exception {
		System.out.println("==================通用查询============
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值