• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
玅神
博客园    首页    新随笔    联系   管理    订阅  订阅

第三周进度博客

第三周
所花时间 15左右
代码量 700行左右
博客量 2篇
学到的知识点 可视化图表的使用、条件查询,分页

 

摘要、本周主要通过视频资源学习了条件查询和分页显示的一些操作,条件查询不是很难,通过获得的查询条件拼接sql语句即可,实现了通过姓名模糊查询,通过性别精确查找。分页操作比较难,通过编写了一个PageBean,提供了相关的构造方法。在给出的代码中有具体的解释

一、代码部分

1、分页功能的相关代码

PageBean

复制代码
package entity;
import java.util.ArrayList;
import java.util.List;

public class PageBean<T> {
    
    //当前页
    private int currentPage;
    //当前页显示的条数
    private int currentCount;
    //总条数
    private int totalCount;
    //总页数
    private int totalPage;
    //每页显示的数据
    private List<T> list = new ArrayList<T>();
    
    
    public int getCurrentPage() {
        return currentPage;
    }
    public void setCurrentPage(int currentPage) {
        this.currentPage = currentPage;
    }
    public int getCurrentCount() {
        return currentCount;
    }
    public void setCurrentCount(int currentCount) {
        this.currentCount = currentCount;
    }
    public int getTotalCount() {
        return totalCount;
    }
    public void setTotalCount(int totalCount) {
        this.totalCount = totalCount;
    }
    public int getTotalPage() {
        return totalPage;
    }
    public void setTotalPage(int totalPage) {
        this.totalPage = totalPage;
    }
    public List<T> getList() {
        return list;
    }
    public void setList(List<T> list) {
        this.list = list;
    }
}
复制代码

Servlet

复制代码
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");

        PageService service = new PageService();
        // 模拟当前是第一页
        String currentPageStr = request.getParameter("currentPage");
        if (currentPageStr == null)
            currentPageStr = "1";
        int currentPage = Integer.parseInt(currentPageStr);
        // 认为每页显示2条
        int currentCount = 2;
        PageBean<User> pageBean = null;
        pageBean = service.findPageBean(currentPage, currentCount);

        request.setAttribute("pageBean", pageBean);
        request.getRequestDispatcher("all.jsp").forward(request, response);
    }
复制代码

service

复制代码
package service;

import java.util.ArrayList;
import dao.PageDao;
import entity.PageBean;
import entity.User;


public class PageService {
    
    PageDao dao=new PageDao();

    public PageBean<User> findPageBean(int currentPage, int currentCount) {

        //目的:就是想办法封装一个PageBean 并返回
                PageBean pageBean = new PageBean();
                //1、当前页private int currentPage;
                pageBean.setCurrentPage(currentPage);
                //2、当前页显示的条数private int currentCount;
                pageBean.setCurrentCount(currentCount);
                //3、总条数private int totalCount;
                int totalCount = dao.getTotalCount();
                System.out.println(totalCount);
                pageBean.setTotalCount(totalCount);
                //4、总页数private int totalPage;
                /*
                 * 总条数        当前页显示的条数    总页数
                 * 10        4                3
                 * 11        4                3
                 * 12        4                3
                 * 13        4                4
                 * 
                 * 公式:总页数=Math.ceil(总条数/当前显示的条数)
                 * 
                 */
                int totalPage = (int) Math.ceil(1.0*totalCount/currentCount);
                pageBean.setTotalPage(totalPage);
                //5、每页显示的数据private List<T> productList = new ArrayList<T>();
                /*
                 * 页数与limit起始索引的关系
                 * 例如 每页显示4条
                 * 页数        其实索引        每页显示条数
                 * 1        0            4
                 * 2        4            4
                 * 3        8            4
                 * 4        12            4
                 * 
                 * 索引index = (当前页数-1)*每页显示的条数
                 * 
                 */
                int index = (currentPage-1)*currentCount;
                
                ArrayList<User> findlist = dao.findlist(index,currentCount);
                pageBean.setList(findlist);
                System.out.println("66");
                return pageBean;
    }
    }
复制代码

dao

复制代码
public int getTotalCount() {
        // TODO 自动生成的方法存根
        int ans = 0;
        String sql = "select * from user";
        Connection con = null;
        Statement state = null;
        ResultSet rs = null;
        con = DBUtil.getConn();
        try {
            state = con.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                ans++;
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBUtil.close(rs, state, con);
        return ans;
    }

    public ArrayList<User> findlist(int index, int currentCount) {
        // TODO 自动生成的方法存根
        ArrayList<User> list = new ArrayList<>();
        String sql = "select * from user limit ?,?";
        Connection con = null;
        Statement state = null;
        PreparedStatement ps;
        con = DBUtil.getConn();
        ResultSet rs1 = null;
        try {
            ps = con.prepareStatement(sql);
            ps.setInt(1, index);
            ps.setInt(2, currentCount);
            rs1 = ps.executeQuery();
        } catch (SQLException e1) {
            // TODO 自动生成的 catch 块
            e1.printStackTrace();
        }
        User bean = null;
        try {
            while (rs1.next()) {
                String name = rs1.getString("name");
                String sex = rs1.getString("sex");
                String school = rs1.getString("school");
                String adress = rs1.getString("address");
                bean = new User(name, sex, school, adress);
                list.add(bean);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBUtil.close(rs1, state, con);
        return list;
    }
复制代码

2、条件查询的相关代码

servlet

复制代码
protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub
        request.setCharacterEncoding("utf-8");
        String name = request.getParameter("name");
        String sex = request.getParameter("sex");
        String adress = request.getParameter("adress");
//        System.out.println(name);
//        System.out.println(sex);
        User bean = new User(name, sex, adress);
        PageBean<User> pageBean = null;
        UserService service = new UserService();
        pageBean = service.find(bean);
        request.setAttribute("pageBean", pageBean);
        request.getRequestDispatcher("all.jsp").forward(request, response);
    }
复制代码

dao

复制代码
public ArrayList<User> find(User bean) {
        ArrayList<User> list = new ArrayList<>();
        String sql = "select * from user where ";
        if ((bean.getName() != null && !bean.getName().trim().equals(""))
                && (bean.getSex() != null && !bean.getSex().trim().equals(""))) {
            sql += "name like '%" + bean.getName() + "%' and sex like '%" + bean.getSex() + "%'";
        } else if (bean.getName() != "") {
            sql += "name like '%" + bean.getName() + "%'";
        } else if (bean.getSex() != "") {
            sql += "sex ='" + bean.getSex() + "'";
        }
        if (bean.getName() == "" && bean.getSex() == "") {
            sql = "select * from user";
        }
        Connection con = null;
        Statement state = null;
        ResultSet rs = null;
        con = DBUtil.getConn();
        User beans = null;
        try {
            state = con.createStatement();
            rs = state.executeQuery(sql);
            while (rs.next()) {
                String name = rs.getString("name");
                String sex = rs.getString("sex");
                String school = rs.getString("school");
                String adress = rs.getString("address");
                beans = new User(name, sex, school, adress);
                list.add(beans);
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        DBUtil.close(rs, state, con);
        return list;
    }
复制代码
posted @ 2020-03-09 20:42  玅神  阅读(96)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3