DAO模式多表联查案例
查询所有学生记录,包含年级名称
一、BaseDao工具类
package BaseDao;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
/**
* 连接数据库
*/
private static final String DRIVER="com.mysql.jdbc.Driver";
private static final String URL="jdbc:mysql://localhost:3306/myschool? useUniCode=true&characterEncoding=utf-8";
private static final String USERNAME="root";
private static final String PASSWORD="123";
Connection connection;
PreparedStatement statement;
ResultSet rs;
/**
* 获取连接
* @throws Exception
*/
public Connection getConnection(){
try {
Class.forName(DRIVER);
if (connection==null||connection.isClosed()) {
connection= DriverManager.getConnection(URL, USERNAME, PASSWORD);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return connection;
}
/**
* 增删改
* @throws Exception
*/
public int executeUpdate(String sql,Object...obj) throws Exception{
//获取连接
getConnection();
//获取prepareStatement对象
statement= connection.prepareStatement(sql);
//循环加载参数
for (int i = 1; i <=obj.length; i++) {
statement.setObject(i,obj[i-1]);
}
//执行SQL
int count=statement.executeUpdate();
return count;
}
/**
* 查询的方法
* @throws Exception
*/
public ResultSet executeQuery(String sql,Object...obj) throws Exception{
//获取连接
getConnection();
//获取
statement= connection.prepareStatement(sql);
//循环加载参数
for (int i = 1; i <=obj.length; i++) {
statement.setObject(i, obj[i-1]);
}
//执行SQL
rs= statement.executeQuery();
return rs;
}
/**
* 回收资源
* @throws Exception
*/
public void clossResource() throws Exception{
if (rs!=null) {
rs.close();
}if (statement!=null) {
statement.close();
}if (connection!=null) {
connection.close();
connection=null;
}
}
}
二、Students实体类
package com.students;
public class students {
private int StudentNo;
private String LoginPwd;
private String studentName;
private int sex;
private String Phone;
private String Address;
private String bornDate;
private String Email;
private String IdentityCard;
private int Gradeid;
public int getGradeid() {
return Gradeid;
}
public void setGradeid(int gradeid) {
Gradeid = gradeid;
}
private Grade grade;
public Grade getGrade() {
return grade;
}
public void setGrade(Grade grade) {
this.grade = grade;
}
public int getStudentNo() {
return StudentNo;
}
public void setStudentNo(int studentNo) {
StudentNo = studentNo;
}
public String getLoginPwd() {
return LoginPwd;
}
public void setLoginPwd(String loginPwd) {
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 String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getAddress() {
return Address;
}
public void setAddress(String address) {
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) {
Email = email;
}
public String getIdentityCard() {
return IdentityCard;
}
public void setIdentityCard(String identityCard) {
IdentityCard = identityCard;
}
}
三、StudentDao接口
package com.student.dao;
import java.util.List;
import com.students.students;
public interface StudentDao {
/*
* 查询得方法
*/
List<students> stu() throws Exception;
}
四、StudentDaoImpl接口实现类
package com.student.dao.impl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;
import BaseDao.BaseDao;
import com.student.dao.StudentDao;
import com.students.Grade;
import com.students.students;
public class StudentDaoImpl extends BaseDao implements StudentDao{
@Override
public List<students> stu() throws Exception {
List<students> students=new ArrayList<students>();
//准备SQL
String sql="SELECT student.*,grade.* FROM student,grade WHERE student.GradeId=grade.GradeID";
ResultSet rs = executeQuery(sql);
if (rs!=null) {
while (rs.next()) {
students stu=new students();
stu.setStudentNo(rs.getInt("StudentNo"));
stu.setLoginPwd(rs.getString("LoginPwd"));
stu.setStudentName(rs.getString("StudentName"));
stu.setSex(rs.getInt("Sex"));
stu.setGradeid(rs.getInt("Gradeid"));
stu.setPhone(rs.getString("Phone"));
stu.setAddress(rs.getString("Address"));
stu.setBornDate(rs.getString("BornDate"));
stu.setEmail(rs.getString("Email"));
stu.setIdentityCard(rs.getString("IdentityCard"));
Grade grade = new Grade();
grade.setGradeName(rs.getString("GradeName"));
stu.setGrade(grade);
students.add(stu);
}
}
clossResource();
return students;
}
}
五、Test实现类
package com.student.dao.impl;
import java.util.List;
import com.student.dao.StudentDao;
import com.students.students;
public class Test {
public static void main(String[] args) throws Exception {
StudentDao studentDao=new StudentDaoImpl();
System.out.println("学号\t密码\t姓名\t性别\t年级编号\t\t地址\t手机号\t邮箱\t日期\t身份证号\t 年纪名称");
List<students> stu=studentDao.stu();
for (students students : stu) {
System.out.println(students.getStudentNo()+"\t"+students.getLoginPwd()+"\t"+students.getStudentName()+"\t"+students.getSex()+"\t"+students.getGradeid()+"\t"+students.getAddress()+"\t"+students.getPhone()+"\t"+students.getEmail()+"\t"+students.getBornDate()+"\t"+students.getIdentityCard()+"\t"+students.getGrade().getGradeName());
}
}
}
查询s1年级下的学生记录
一、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(){
}
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;
}
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());
}
转载于:https://www.cnblogs.com/tinghao/p/10945031.html
DAO模式多表联查案例相关推荐
- 健康管理系统第六天(移动端开发之体检预约_经典五表联查_调用阿里云提供的短信服务进行短信验证码发送)
一.移动端开发 1.移动端开发方式 随着移动互联网的兴起和手机的普及,目前移动端应用变得愈发重要,成为了各个商家的必争之地.例如,我们可以使用手机购物.支付.打车.玩游戏.订酒店.购票等, 以前只能通 ...
- 持久层是什么意思_软件项目实训及课程设计指导—如何在数据持久层中应用DAO模式...
软件项目实训及课程设计指导--如何在J2EE应用系统数据持久层中应用DAO模式 1.为什么要在软件应用系统中提供数据持久层 软件应用系统中的数据持久层主要为整个软件应用系统提供数据访问功能服务,从而可 ...
- JDBC之二:DAO模式
JDBC之二:DAO模式 @(JAVA)[java] 详细代码请参见 https://github.com/lujinhong/dao 一.前期准备 1.创建数据库 create database f ...
- java mysql dao_Java DAO 模式
哈哈哈哈哈...呃~参考文章 DAO 模式 DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问.通俗来讲,就是将数据库操作都封装起来. ...
- java dao模式_Java DAO 模式
DAO 模式 DAO (DataAccessobjects 数据存取对象)是指位于业务逻辑和持久化数据之间实现对持久化数据的访问.通俗来讲,就是将数据库操作都封装起来. 对外提供相应的接口 在面向对象 ...
- Mysql库及表的基本概念、增删查改操作以及表的约束、多表联查
什么是数据库? 存储数据的仓库 数据库的存储介质:磁盘和内存. 为什么要用数据库不用文件?(数据库与文件进行数据存储的区别) 1.文件存储安全性低 2.数据库对数据进行良好的存储,查询以及管理 3.便 ...
- 使用spring-data-jpa实现简单的两表联查
关于Spring-data-jpa的配置+Springboot+Spring-data-jpa的简单操作简单操作+分布式服务设置一个永远不重复的ID 初学Spring套餐家族中的Spring-data ...
- java 关于JDBC和DAO模式使用
JDBC(全称:Java Data Base Connectivity)是java数据库连接简称 ,提供连接各种数据库的能力 JDBC API主要的功能: 与数据库建立连接 执行SQL语句 处理结果 ...
- 使用DAO模式开发宠物管理系统---hellokitty
宠物有狗和企鹅. 狗的属性有:编号.名称.亲密值.健康值.品种.所属主人编号. 企鹅的属性有:编号.名称.亲密值.健康值.性别.所属主人编号. 该系统中主人可以领养宠物,主人的属性有:编号.用户名.密 ...
最新文章
- 南京医科大学陈连民组招收博硕士研究生(肠道微生物与心血管代谢健康方向)...
- Reactor学习笔记
- MySQL——查询数据库、数据表总记录数
- 爬取猎聘python_爬取猎聘大数据岗位相关信息--Python
- Java Lambdas简介
- c++如何显示图片_Vue+laravel后端添加商品后图片如何显示?
- CSS中的margin、border、padding区别 CSS padding margin border属性详解
- 腾讯云认证考试常见问题答疑
- mysql alter atafter_MySQL 常用操作
- 并行计算课程上机作业
- 通过angularjs的directive以及service来实现的列表页加载排序分页
- 纯HTML的个人简历,真的超简单,有源码
- InfoGAN 翻译
- javascript获取css行内样式
- 企业微信客户朋友圈怎么发?朋友圈规则有哪些?
- NCBI Pathogen Detection project简介
- (解析+源码)基于JAVA Swing+MySQL实现学生信息管理系统(增、删、改、查)数据库/文件存储
- android硬件加速默认,android 硬件加速
- 开篇词:“桌面应用”是一顶璀璨的王冠
- 中国中药提取物市场深度研究分析报告
热门文章
- Cocos2d-x3.0 DrawNode吸取
- android AsyncTask介绍(转)
- BZOJ 1012: [JSOI2008]最大数maxnumber(线段树)
- 景切换的时候加上遮罩
- 多操作系统安装实践小结
- LeetCode题解之Reorder List
- window安装swagger editor
- Mybatis sql注入问题
- 关于MyEclipse对Struts2配置文件较检异常 Invalid result location value/parameter
- 使用srvany.exe将任何程序作为Windows服务运行