student类: 

 package com.myschool.entity;
  public class student{
   private int studentno;  //学号
   private String loginpwd;   //密码
   private String studentname;  //学生姓名
   private int sex;  //性别
   private int gradeid;  //年级ID
   private String phone;  //电话
   private String address;  //地址
   private String borndate;  //生日

   private String email;  //邮箱
   private String IdentityCard;  //身份证号
 
   grade grade=new grade();  //年级对象
 
   public grade getGrade() {
      return grade;
   }
   public void setGrade(grade grade) {
      this.grade = grade;
   }
 
   public int getStudentno() {
      return studentno;
   }
   public void setStudentno(int studentno) {
      this.studentno = studentno;
   }
   public String getLoginpwd() {
      return loginpwd;
   }
   public void setLoginpwd(String loginpwd) {
      this.loginpwd = loginpwd;
   }
   public String getStudentname() {
      return studentname;
   }
   public void setStudentname(String studentname) {
      this.studentname = studentname;
   }
   public int getSex() {
      return sex;
   }
   public void setSex(int sex) {
      this.sex = sex;
   }
   public int getGradeid() {
      return gradeid;
   }
   public void setGradeid(int gradeid) {
      this.gradeid = gradeid;
   }
   public String getPhone() {
      return phone;
   }
   public void setPhone(String phone) {
      this.phone = phone;
   }
   public String getAddress() {
      return address;
   }
   public void setAddress(String address) {
      this.address = address;
   }
   public String getBorndate() {
      return borndate;
   }
   public void setBorndate(String borndate) {
      this.borndate = borndate;
   }
   public String getEmail() {
      return email;
   }
   public void setEmail(String email) {
      this.email = email;
   }
   public String getIdentityCard() {
      return IdentityCard;
   }
   public void setIdentityCard(String identityCard) {
      IdentityCard = identityCard;
   }
   //带参构造

   public student(int studentno, String loginpwd, String studentname, int sex,
       int gradeid, String phone, String address, String borndate,
       String email, String identityCard) {
        super();
        this.studentno = studentno;
        this.loginpwd = loginpwd;
        this.studentname = studentname;
        this.sex = sex;
        this.gradeid = gradeid;
        this.phone = phone;
        this.address = address;
        this.borndate = borndate;
        this.email = email;
        IdentityCard = identityCard;
   }
   //无参构造
   public student(){
  
   }
}

grade类:

package com.myschool.entity;
import java.util.List;
public class grade {
   private int gradeid;  //年级编号
   private String gradename;  //年级名称
 
      public List<student> list;  //学生表集合
 
   public List<student> getList() {
      return list;
   }
   public void setList(List<student> list) {
      this.list = list;
   }
   public int getGradeid() {
      return gradeid;
   }
   public void setGradeid(int gradeid) {
      this.gradeid = gradeid;
   }
   public String getGradename() {
      return gradename;
   }
   public void setGradename(String gradename) {
      this.gradename = gradename;
   }
   //带参构造
   public grade(int gradeid, String gradename) {
      super();
      this.gradeid = gradeid;
      this.gradename = gradename;
   }
  //无参构造
   public grade(){
  
   }
}
 
BaseDao接口:
  

package com.myschool.daos;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
   private final String DRIVER="com.mysql.jdbc.Driver";
   private final String URL="jdbc:mysql:///myschools";
   private final String USERNAME="root";
   private final String PASSWORD="123";
 
   private Connection con=null;
   private PreparedStatement ps=null;
   private ResultSet rs=null;
 
  //建立数据库连接
   public Connection getConnection(){
     try {
       Class.forName(DRIVER);
     if (con==null || con.isClosed()) {
        con=DriverManager.getConnection(URL,USERNAME,PASSWORD);
     }
    } catch (ClassNotFoundException e) {
       // TODO: handle exception
       e.printStackTrace();
    }catch (SQLException e) {
       // TODO: handle exception
     e.printStackTrace();
    }
    return con;
 }
   //增删改方法
   public int executUpdate(String sql,Object...obj) throws Exception{
     getConnection();
    ps=con.prepareStatement(sql);
    for (int i = 0; i < obj.length; i++) {
       ps.setObject(i+1, obj[i]);
    }
    int count=ps.executeUpdate();
  
    return count;
 }
 
  //查询方法
   public ResultSet executeQuery(String sql,Object...obj) throws Exception{
    getConnection();
    ps=con.prepareStatement(sql);
    for (int i = 0; i < obj.length; i++) {
       ps.setObject(i+1, obj[i]);
    }
    rs = ps.executeQuery();
    return rs;
 }
 
  //回收资源
   public void getclose() throws Exception{
    if (rs!=null) {
       rs.close();
    }
    if (ps!=null) {
       ps.close();
    }
    if (con!=null) {
       con.close();
    }
 }
 
}
接口:
package com.myschool.daos;
import java.util.List;
import com.myschool.entity.grade;
import com.myschool.entity.student;
public interface studentdao {
  //查询所有学生,包含年级名称
   public List<student> getstudent() throws Exception;
   //查询S1下的学生记录
   public grade getgrade(String gradeid) throws Exception;
 }
 
实现类: 
package com.myschool.dao.impl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import com.myschool.daos.BaseDao;
import com.myschool.daos.studentdao;
import com.myschool.entity.grade;
import com.myschool.entity.student;
public class studnetdaoimpl extends BaseDao implements studentdao{
 
   private ResultSet rs=null;
 
   @Override
   public grade getgrade(String gradename) throws Exception {
      List<student> list1=new ArrayList<student>();
      String sql="select s.*,g.GradeName from student as s,grade as g where s.GradeId=g.GradeId and g.gradename=?";
      Object[] obj={gradename};
      rs=executeQuery(sql, obj);
      grade grade=null;
      if (rs!=null) {
         while(rs.next()){
            grade=new grade();
            student student=new student();
            student.setStudentno(rs.getInt("studentno"));
            student.setStudentname(rs.getString("studentname"));
            list1.add(student);
            grade.setGradename(rs.getString("gradename"));
         }
         grade.setList(list1);
      }
      return grade;
   }
   @Override
   public List<student> getstudent() throws Exception {
      List<student> list=new ArrayList<student>();
      String sql="select * from student as s,grade as g where s.GradeId=g.GradeId";
      rs = executeQuery(sql);
  
      if (rs!=null) {
         while(rs.next()){
            student stu=new student();
            grade grade=new grade();
            stu.setStudentno(rs.getInt("studentno"));
            stu.setStudentname(rs.getString("studentname"));
            grade.setGradename(rs.getString("gradename"));
            stu.setGrade(grade);
            list.add(stu);
         }
      }
      return list;
   }
 
}
main方法:
  

package ui;
import java.util.List;
import com.myschool.dao.impl.studnetdaoimpl;
import com.myschool.daos.studentdao;
import com.myschool.entity.grade;
import com.myschool.entity.student;
public class ui {
   static studentdao dao=new studnetdaoimpl();
 
   public static void getstudent() throws Exception{
      List<student> list=dao.getstudent();
      for (student student : list) {
       System.out.println(student.getStudentno()+"\t"+student.getStudentname()+"\t"+student.getGrade().getGradename());
      }
   }
 
   public static void main(String[] args) throws Exception {
      getstudent();
      System.out.println("=================================");
      grade grade=dao.getgrade("S1");
      for (student stu : grade.getList()) {
         System.out.println(stu.getStudentno()+"\t"+stu.getStudentname()+"\t"+grade.getGradename());
      }
   }
}
 
执行结果:
  

DAO模式多表联查的更多相关文章

  1. Java实验项目六——使用DAO模式实现对职工表的操作

    Program: 利用JDBC访问职工信息表,实现对职工信息的添加.更新.删除.按照职工号查找.查找全部职工的功能. Description:在这里我采用了DAO设计模式完成对职工表的操作,下面介绍一 ...

  2. Java笔记——面向接口编程(DAO模式)

    1.DAO模式  DAO(Data Access Object)模式就是写一个类,把访问数据库的代码封装起来.DAO在数据库与业务逻辑(Service)之间.     l  实体域,即操作的对象,例如 ...

  3. jdbc之二:DAO模式

    详细代码请参见 https://code.csdn.net/jediael_lu/daopattern 1.创建Dao接口. package com.ljh.jasonnews.server.dao; ...

  4. java数据库编程之DAO模式

    第八章:DAO模式 8.1:JDBC封装 为了提高代码的维护性和扩展性,我们使用JDBC进行封装数据, 先定义统一的API,将操作数据的代码抽象到接口中,业务逻辑代码只需要调用这些接口的实现类的对象, ...

  5. 面向对象DAO模式

    DAO模式编写数据访问层代码步骤? 1.  接口 增.删.改.查的方法 方法的返回类型为泛型集合 Int rows=select语句的条数 If(rows>0) 方法的返回类型为泛型集合 If( ...

  6. 2、原生jdbc的dao模式

    一.dao模式 (data access object)1.作用:持久层,专门操作数据的层次结构,不掺杂任何的业务和其他内容2.dao组成部分: a.数据库工厂类 b.数据实体类 javabean p ...

  7. Javaweb学习笔记——(十七)——————JDBC的原理、四大核心类、四大参数、预编译、Dao模式、批处理、大数据、时间类型的转换

    JDBC入门 *导入jar包:驱动 *加载驱动类:Class.forName("类名"); *给出url.username.password,其中url背下来 *使用DriverM ...

  8. 熟悉DAO模式的用法

    今天主要是使用DAO模式. DAO模式通过对业务层提供数据抽象层接口,实现了以下目标: 1. 数据存储逻辑的分离 通过对数据访问逻辑进行抽象,为上层机构提供抽象化的数据访问接口.业务层无需关心具体的s ...

  9. 使用DAO模式开发宠物管理系统---hellokitty

    宠物有狗和企鹅. 狗的属性有:编号.名称.亲密值.健康值.品种.所属主人编号. 企鹅的属性有:编号.名称.亲密值.健康值.性别.所属主人编号. 该系统中主人可以领养宠物,主人的属性有:编号.用户名.密 ...

随机推荐

  1. PHP file_get_contents 读取js脚本的问题

    PHP file_get_contents 读取js脚本的问题 如果文件中带有js脚本 会触发 比方说alert 这个时候 你不用去管他

  2. 关于vue ui组件

    一.vue ui  组件 1: vue 当前很火前端框架vue 针对PC用户 pc 端与移动端区别 (1)屏幕宽度:992px > (2)操作方式:鼠标 事件   手指:触碰操作 -饿了么:基于 ...

  3. js数组方法大全(上)

    # js数组方法大全(上) 记录一下整理的js数组方法,免得每次要找方法都找不到.图片有点多,注意流量,嘻嘻! 本期分享 join() reverse() sort() concat() slice( ...

  4. 深入理解java继承从“我爸是李刚”讲起

    目录 1.继承的概述 2.关于继承之后的成员变量 3.关于继承之后的成员方法 4.关于继承之后的构造方法 5.关于继承的多态性支持的例子 6.super与this的用法 前言 本文主要多方面讲解jav ...

  5. maven聚合(依赖聚合)

    maven聚合工程 原文地址:http://juvenshun.iteye.com/blog/305865 http://blog.csdn.NET/woxueliuyun/article/detai ...

  6. 详解Vue 方法与事件处理器

      本篇文章主要介绍了详解Vue 方法与事件处理器 ,小编觉得挺不错的,现在分享给大家,也给大家做个参考.一起跟随小编过来看看吧 方法与事件处理器 方法处理器 可以用 v-on 指令监听 DOM 事件 ...

  7. SpringBoot 整合NoSql

    通用配置 maven依赖 添加Spring-Web和Spring-Security依赖,使用Spring-Security是因为使用SpringBoot的Redis依赖时,必须添加Spring-Sec ...

  8. Python字符串类型判断错误

    Python里面常用的字符串类型有str和unicode,如果要判断一个对象的类型,最好用basestring,否则可能会判断错误: str1 = "hello" str2 = u ...

  9. 学习PHP框架只停留在会用层面,职业生涯肯定走不远!

    工作这么多年,也面试过很多PHP工程师,我发现很多PHP工程师只停留在使用框架的层面,然而对框架底层根本没有深入去了解,那么这就会给自己的职业生涯带来一定的瓶颈,当遇到问题的时候你就无从下手,不知道如 ...

  10. vue中router跳转本页刷新

    问题:  导航栏的地址发生改变但是页面却不刷新  (用vue-router路由到当前页面,页面是不进行刷新的)解决: 1.);           2.location.reload()       ...