JDBC分页和模糊查询

一.实现查询(结合 VO 对象实现)

查询到的数据如何返回到页面
  首先需要将这些数据封装到一个对象中 (现充结果集中取得之后再封装到 VO 类对象中),
  在客户端可以根据对象使用 JSON 的解析或者使用其他方式显示到页面中 (比如说使用 jsp, 模板语言等实现)

Demo: 实现模糊统计数据量/模糊分页查询

public class TestMysql {
    //取得连接
    private static Connection conn =ConnectionUitl.getConnection();
    
    public static void main(String[] args) {
        System.out.println(selectCount("A"));
    }
    
    /**
     *    实现模糊统计数据量:
     * @param kw 模糊查询的关键字
     * @return
     */
    public static Integer selectCount(String kw) {
        String sql = "SELECT COUNT(*)"
                + " FROM emp"
                + "  WHERE ename LIKE ?";
        
        try {
            PreparedStatement pst = conn.prepareStatement(sql);
            pst.setObject(1, "%"+kw+"%");
            ResultSet rst = pst.executeQuery();
            rst.next(); //让指针往下移动才能获取结果集中的数据
            return rst.getInt(1);
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            ConnectionUitl.close(conn);
        }
        return 0;
    }
    
    /**
     *     实现模糊分页查询:
     * @param kw 模糊查询的关键字
     * @param cp 当前页
     * @param ls 每页显示的数据量
     * @return
     */
    public static List<Emp> selectSplitAll(String kw,Integer cp,Integer ls) {
        //准备 sql 语句
        String sql = "SELECT empno,ename,job,hiredate,sal,comm,mgr,deptno"
                + " FROM emp"
                + "  WHERE empno LIKE ? LIMIT ?,?";
        
        List<Emp> list = new ArrayList<Emp>();
        try {
            PreparedStatement pst = conn.prepareStatement(sql);
            //为占位符设置具体的值
            pst.setObject(1, "%"+kw+"%");
            pst.setObject(2, (cp-1)*ls);
            pst.setObject(3, ls);
            //执行 sql 语句
            ResultSet rst = pst.executeQuery();
            Emp vo = null;
            while (rst.next()) {
                vo = new Emp();
                //将结果集中的数据取得之后保存到 vo 对象中
                vo.setEmpno(rst.getInt("empno"));
                vo.setJob(rst.getString("job"));
                vo.setSal(rst.getDouble("sal"));
                vo.setComm(rst.getDouble("comm"));
                vo.setDeptno(rst.getInt("deptno"));
                vo.setHiredate(rst.getDate("hiredate"));
                vo.setMgr(rst.getInt("mgr"));
                //将每个对象保存到 List 集合
                list.add(vo);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            ConnectionUitl.close(conn);
        }
        return list;
    }
}
原文地址:https://www.cnblogs.com/yslf/p/10731970.html