java中联合查询数据

联合查询
demp表格+dept表格
等值连接
外连接
内连接
Emp deptno(聚合关系)emp ——> dept 一对多关系

public class DaoEmp {


    //数据持久层
    private String className = "com.mysql.jdbc.Driver" ; //"com.mysql.jdbc.Driver"
    private String url = "jdbc:mysql://localhost:3306/test?characterEncoding=utf-8&verifyServerCertificate=false&useSSL=true" ;
    private String user = "root" ;
    private String password = "root" ;

    public ArrayList<Emp> limit(int rowIndex){
        Connection con = null ;
        PreparedStatement pstat = null ;
        ResultSet rs = null ;
        ArrayList<Emp> list = new ArrayList<Emp>();
        try {
            Class.forName(className);
            con = DriverManager.getConnection(url,user,password);
            String sql = "SELECT * FROM EMP,DEPT WHERE EMP.DEPTNO=DEPT.DEPTNO LIMIT ?,5";
            pstat = con.prepareStatement(sql);
            pstat.setInt(1,rowIndex);
            rs = pstat.executeQuery();
            while(rs.next()){
                Emp emp = new Emp();
                emp.setEmpno(rs.getInt("empon"));
                emp.setEname(rs.getString("ename"));
                emp.setJob(rs.getString("job"));
                emp.setMgr(rs.getInt("mgr"));
                emp.setHireDate(rs.getDate("hiredate"));
                emp.setSal(rs.getInt("sal"));
                emp.setComm(rs.getInt("comm"));
                Dept dept = new Dept();
                dept.setDeptno(rs.getInt("deptno"));
                dept.setDname(rs.getString("dname"));
                dept.setLoc(rs.getString("loc"));
                emp.setDeptno(dept);
                list.add(emp);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if (rs!=null){
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (pstat!=null){
                    pstat.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (con!=null){
                    con.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
        return list ;
    }


//=======================================================================
public class ServiceEmp {
    private DaoEmp dao = new DaoEmp() ;
    //数据处理层
    public ArrayList<Emp> limit(int page){
        return dao.limit((page-1)*5);//每次查询的行数是5
    }
}

//===========================
public class Main {
    public static void main(String[] args){
        ServiceEmp service = new ServiceEmp() ;
        Scanner input = new Scanner(System.in);
        System.out.println("输入页码");
        int page = input.nextInt() ;
        ArrayList<Emp> list = service.limit(page);
        for (Emp emp : list){
            System.out.println(emp);
        }
    }
}

//============================================================
public class Emp {

    private Integer empno ;
    private String ename ;
    private String job ;
    private Integer mgr ;
    private Date hireDate ;
    private Integer sal ;
    private Integer comm ;
    private Dept deptno ;//把Dept当做属性

    public Emp(){};
    public Emp(Integer empno, String ename, String job, Integer mgr, Date hireDate, Integer sal, Integer comm, Dept deptno) {
        this.empno = empno;
        this.ename = ename;
        this.job = job;
        this.mgr = mgr;
        this.hireDate = hireDate;
        this.sal = sal;
        this.comm = comm;
        this.deptno = deptno;
    }

    @Override
    public String toString() {
        StringBuilder builder = new StringBuilder("{");
        builder.append(this.empno);
        builder.append(",");
        builder.append(this.ename);
        builder.append(",");
        builder.append(this.job);
        builder.append(",");
        builder.append(this.mgr);
        builder.append(",");
        builder.append(this.hireDate);
        builder.append(",");
        builder.append(this.sal);
        builder.append(",");
        builder.append(this.comm);
        builder.append(",");
        builder.append(this.deptno);
        builder.append("}");
        return builder.toString();
    }
    public Integer getEmpno() {
        return empno;
    }
    public void setEmpno(Integer empno) {
        this.empno = empno;
    }
    public String getEname() {
        return ename;
    }
    public void setEname(String ename) {
        this.ename = ename;
    }
    public String getJob() {
        return job;
    }
    public void setJob(String job) {
        this.job = job;
    }
    public Integer getMgr() {
        return mgr;
    }
    public void setMgr(Integer mgr) {
        this.mgr = mgr;
    }
    public Date getHireDate() {
        return hireDate;
    }
    public void setHireDate(Date hireDate) {
        this.hireDate = hireDate;
    }
    public Integer getSal() {
        return sal;
    }
    public void setSal(Integer sal) {
        this.sal = sal;
    }
    public Integer getComm() {
        return comm;
    }
    public void setComm(Integer comm) {
        this.comm = comm;
    }
    public Dept getDeptno() {
        return deptno;
    }
    public void setDeptno(Dept deptno) {
        this.deptno = deptno;
    }
}

//------------------------------------------
public class Dept {
    private Integer deptno ;
    private String dname ;
    private String loc ;

    public Dept(){}
    public Dept(Integer deptno, String dname, String loc) {
        this.deptno = deptno;
        this.dname = dname;
        this.loc = loc;
    }
    public String toString(){
        StringBuilder builder = new StringBuilder();
        builder.append(this.deptno);
        builder.append(",");
        builder.append(this.dname);
        builder.append(",");
        builder.append(this.loc);
        return builder.toString() ;
    }

    public Integer getDeptno() {
        return deptno;
    }
    public void setDeptno(Integer deptno) {
        this.deptno = deptno;
    }
    public String getDname() {
        return dname;
    }
    public void setDname(String dname) {
        this.dname = dname;
    }
    public String getLoc() {
        return loc;
    }
    public void setLoc(String loc) {
        this.loc = loc;
    }
}

如果查询的表表格中原有的列 是通过后续计算出来的
用ArrayList>
一个Map集合来存储信息–相当于是一个对象

public ArrayList<HashMap<String,Object>> count(){
        Connection con = null ;
        PreparedStatement pstat = null ;
        ResultSet rs = null ;
        ArrayList<HashMap<String,Object>> list = new ArrayList<>();
        try {
            Class.forName(className);
            con = DriverManager.getConnection(url,user,password);
            String sql = "SELECT DEPTNO,COUNT(EMPON) AS CO FROM EMP GROUP BY DEPTNO";
            pstat = con.prepareStatement(sql);
            rs = pstat.executeQuery();
            while(rs.next()){
                HashMap<String,Object> map = new HashMap<String,Object>();
                map.put("deptno",rs.getInt("deptno"));
                map.put("co",rs.getInt("co"));
                list.add(map);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }finally{
            try {
                if (rs!=null){
                    rs.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (pstat!=null){
                    pstat.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                if (con!=null){
                    con.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }

        }
        return list ;
    }
    


//--------------------------------------
    public ArrayList<HashMap<String,Object>> count(){
        return  dao.count();

    }

//---------------------------
public static void main(String[] args){
        ServiceEmp service = new ServiceEmp() ;
        ArrayList<HashMap<String,Object>>list = service.count();
        for (HashMap<String,Object> map : list){
            System.out.println(map.get("deptno")+"  "+map.get("co"));
        }
}

你可能感兴趣的:(java中联合查询数据)