首先声明一点,本篇博客内容不是新内容,以前遇到过N次,只是这儿再重复说明一下。

对员工数据进行分页查询,分页获取的数据进行封装,包装成一个一个的员工实体对象(JavaBean),然后将这些对象放入一个集合中,方便java程序后续的读取和处理。

本篇博客就两点:(1)JavaBean;(2)LIMIT分页(仅适用于MySQL);

目录

首先,先编写Employee实体类:

然后,编写分页查询类: PaginationCommand类:

最后,在HumanResourceApplication入口类中编写分页的部分:


首先,先编写Employee实体类:

开始执行:

Java 实体类中字段映射 jdbc映射实体类_Java 实体类中字段映射

Employee类:

这个类的属性仅仅要求需要和数据库表的字段对应,没有要求一定名字一定相同。。。。。但是还是强烈建议相同啦!!!(因为这样可以避免很多后续的无头绪的问题)

package com.imooc.jdbc.command.entity;

public class Employee {
    /**
     * 一个JavaBean应该具备的条件
     * 1.具备默认构造函数;
     * 2.属性私有;
     * 3.存在getter与setter方法;
     */
    public Employee(){}

    private Integer eno;
    private String ename;
    private Float salary;
    private String dname;

    public Integer getEno() {
        return eno;
    }

    public void setEno(Integer eno) {
        this.eno = eno;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public Float getSalary() {
        return salary;
    }

    public void setSalary(Float salary) {
        this.salary = salary;
    }

    public String getDname() {
        return dname;
    }

    public void setDname(String dname) {
        this.dname = dname;
    }
}

然后,编写分页查询类: PaginationCommand类:

Java 实体类中字段映射 jdbc映射实体类_System_02

PaginationCommand类:

package com.imooc.jdbc.hrapp.command;

import com.imooc.jdbc.common.DbUtils;
import com.imooc.jdbc.hrapp.entity.Employee;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

/**
 * 分页查询员工数据
 */
public class PaginationCommand implements Command{
    @Override
    public void execute() {
        Scanner in = new Scanner(System.in);
        System.out.println("请输入页号:");
        int page = in.nextInt();
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = DbUtils.getConnection();
            String sql = "select * from employee limit ?,10";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1,(page-1)*10);  // mysql在LIMIT关键字中:开始位置是0;
            rs = pstmt.executeQuery();
            List<Employee> list = new ArrayList<>();//
            while (rs.next()) {
                // 推荐使用字段名来获取字段值,而不要使用列的索引获取字段值;
                Integer eno = rs.getInt("eno");
                String ename = rs.getString("ename");
                Float salary = rs.getFloat("salary");
                String dname = rs.getString("dname");
                Employee employee = new Employee();
                employee.setEno(eno);
                employee.setEname(ename);
                employee.setSalary(salary);
                employee.setDname(dname);
                list.add(employee);//将结果集中的数据保存到集合中;即使这个结果集后来被close了,数据已经保存到list中了,数据也不会丢失。
            }
            System.out.println(list.size());
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }finally {
            DbUtils.closeConnection(rs,pstmt,conn);
        }
    }
}

说明:(1)分页查询在MySQL中使用LIMIT关键字。LIMIT关键字并不是标准SQL中有的,LIMIT关键字仅仅是MySQL独有的专用于分页的关键字,是MySQL的方言;Oracle和SQLserver也有对应的方言来实现数据的分页处理。

           (2)MySQL的LIMIT关键字,起始位置是0;

(3)推荐使用列名的方式来获取字段值,(不推荐使用列的索引值来获取),因为数据表的表结构可能在以后发生变化;比如,以后在employee表原本第一个列前有增加了一列,那么此时这儿就会匹配混乱了;

最后,在HumanResourceApplication入口类中编写分页的部分:

然后,在入口类中添加上分页的部分:
HumanResourceApplication类:

package com.imooc.jdbc.hrapp;

import com.imooc.jdbc.hrapp.command.*;

import java.util.Scanner;

public class HumanResourceApplication {
    public static void main(String[] args) {
        System.out.println("1-查询部门员工");
        System.out.println("2-办理员工入职");
        System.out.println("3-调整薪资");
        System.out.println("4-员工离职");
        System.out.println("5-员工分页查询");
        System.out.println("请选择功能:");
        Scanner in = new Scanner(System.in);
        Integer cmd = in.nextInt();
        Command command = null;// 将接口变量定义在外边,并初始化为null;在内部遇到不同操作的时候,再去实例化与之对应的类;
        switch (cmd){
            case 1: //查询部门员工
                command = new PstmtQueryCommand();
                command.execute();
                break;
            case 2: //办理员工入职
                command = new InsertCommand();
                command.execute();
                break;
            case 3: //调整薪资
                command = new UpdateCommand();
                command.execute();
                break;
            case 4: //员工离职
                command = new DeleteCommand();
                command.execute();
            case 5:
                command = new PaginationCommand();
                command.execute();
            default:
        }
    }
}

这篇博客的核心就是:知道LIMIT关键字在实际中的用法。其他内容都还好……