Java之增删改查

2023-11-06

一、搭建底层代码

首先导入我们需要的jar包依赖
在这里插入图片描述
导入我们需要的js
在这里插入图片描述
结构目录:
在这里插入图片描述
各包展示
DBHelpoer.java

package com.xlb.util;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

/**
 * 提供了一组获得或关闭数据库对象的方法
 * 
 */
public class DBHelper {
	private static String driver;
	private static String url;
	private static String user;
	private static String password;

	static {// 静态块执行一次,加载 驱动一次
		try {
			InputStream is = DBHelper.class
					.getResourceAsStream("config.properties");

			Properties properties = new Properties();
			properties.load(is);

			driver = properties.getProperty("driver");
			url = properties.getProperty("url");
			user = properties.getProperty("user");
			password = properties.getProperty("pwd");

			Class.forName(driver);
		} catch (Exception e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

	/**
	 * 获得数据连接对象
	 * 
	 * @return
	 */
	public static Connection getConnection() {
		try {
			Connection conn = DriverManager.getConnection(url, user, password);
			return conn;
		} catch (SQLException e) {
			e.printStackTrace();
			throw new RuntimeException(e);
		}
	}

	public static void close(ResultSet rs) {
		if (null != rs) {
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}

	public static void close(Statement stmt) {
		if (null != stmt) {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}

	public static void close(Connection conn) {
		if (null != conn) {
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
				throw new RuntimeException(e);
			}
		}
	}

	public static void close(Connection conn, Statement stmt, ResultSet rs) {
		close(rs);
		close(stmt);
		close(conn);
	}

	public static boolean isOracle() {
		return "oracle.jdbc.driver.OracleDriver".equals(driver);
	}

	public static boolean isSQLServer() {
		return "com.microsoft.sqlserver.jdbc.SQLServerDriver".equals(driver);
	}
	
	public static boolean isMysql() {
		return "com.mysql.jdbc.Driver".equals(driver);
	}

	/**
	 * 关闭资源
	 * @param con 连接
	 * @param ps  执行对象
	 * @param rs  结果集
	 */
	public static void myClose(Connection con,PreparedStatement ps,ResultSet rs) {
		try {
			if(rs!=null) {
				rs.close();
			}
			if(ps!=null) {
				ps.close();
			}
			if(con!=null&&!con.isClosed()) {
				con.close();
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	
	public static void main(String[] args) {
		Connection conn = DBHelper.getConnection();
		DBHelper.close(conn);
		System.out.println("isOracle:" + isOracle());
		System.out.println("isSQLServer:" + isSQLServer());
		System.out.println("isMysql:" + isMysql());
		System.out.println("数据库连接(关闭)成功");
	}
}

config.properties文件

#oracle9i
#driver=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:orcl
#user=scott
#pwd=123


#sql2005
#driver=com.microsoft.sqlserver.jdbc.SQLServerDriver
#url=jdbc:sqlserver://localhost:1433;DatabaseName=test1
#user=sa
#pwd=123


#sql2000
#driver=com.microsoft.jdbc.sqlserver.SQLServerDriver
#url=jdbc:microsoft:sqlserver://localhost:1433;databaseName=unit6DB
#user=sa
#pwd=888888


#mysql
driver=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/db_0613?useUnicode=true&characterEncoding=UTF-8&useSSL=false
user=root
pwd=123

com.xlb.servlet包
IndexServlet.java

package com.xlb.servlet;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import javax.websocket.Session;

import com.xlb.biz.ClassBiz;
import com.xlb.biz.IClassBiz;
import com.xlb.biz.ILikeBiz;
import com.xlb.biz.IStuBiz;
import com.xlb.biz.ITeacharBiz;
import com.xlb.biz.LikeBiz;
import com.xlb.biz.StuBiz;
import com.xlb.biz.TeacharBiz;
import com.xlb.dao.IStuDao;
import com.xlb.entity.Like;
import com.xlb.entity.Student;
import com.xlb.entity.Teachar;

/**
 * 主界面servlet
 * @author 波哥
 *
 * 2022年6月18日 下午7:33:36
 */
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {
	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");
		
		//拿到out
		PrintWriter out = response.getWriter();
		
		//拿到session
		HttpSession session = request.getSession();
		
		//定义分页数
		int pageInde=1;
		int pageSize=2;
		//拿到值
		String str = request.getParameter("str");//老师
		String strr = request.getParameter("strr");//班级
		String[] s = request.getParameterValues("strrr");//爱好
		if(str==null) {
			str="";
		}
		if(strr==null) {
			strr="";
		}
//		System.out.println("老师"+str+"===班级"+strr+"爱好==="+s);

		String sss="";
		if(s!=null) {
			for (String string : s) {
				sss+=string+",";
			}
		}
		
		System.out.println(sss);
		
		//调用方法
		IStuBiz isb=new StuBiz();

		//班级类
		IClassBiz icb=new ClassBiz();
		//调用查询全部方法
		List<com.xlb.entity.Class> classls = icb.getAll();
		//老师类
		ITeacharBiz itb=new TeacharBiz();
		List<Teachar> teacharls = itb.getAll();
		
		//爱好类
		ILikeBiz ilk=new LikeBiz();
		List<Like> likels = ilk.getAll();
	

		//接收pid
		String pid=request.getParameter("pid");
		if(pid!=null) {
			pageInde=Integer.parseInt(pid);
		}
		//调用最大页码
		int max = isb.getMax(str, strr, sss, pageSize);
		if(max==0) {
			max=1;
		}
		//学生集合
		List<Student> studentls = isb.getAll(str, strr, sss , pageInde, pageSize);
		
		session.setAttribute("classls", classls);
		session.setAttribute("teacharls", teacharls);
		session.setAttribute("likels", likels);
		
		//存进去
		request.setAttribute("studentls", studentls);
		request.setAttribute("max", max);
		request.setAttribute("pageIndex", pageInde);
		//转发
		request.getRequestDispatcher("index.jsp").forward(request, response);
			
	}

}

TyServlet.java

package com.xlb.servlet;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.xlb.biz.ClassBiz;
import com.xlb.biz.IClassBiz;
import com.xlb.biz.ILikeBiz;
import com.xlb.biz.IStuBiz;
import com.xlb.biz.ITeacharBiz;
import com.xlb.biz.LikeBiz;
import com.xlb.biz.StuBiz;
import com.xlb.biz.TeacharBiz;
import com.xlb.entity.Student;

/**
 * 增删改查servlet
 * @author 波哥
 *
 * 2022年6月20日 下午2:36:27
 */
@WebServlet("/aa.do")
public class TyServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}

	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//设置编码方式
		request.setCharacterEncoding("utf-8");
		response.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=UTF-8");

		//拿到out
		PrintWriter out = response.getWriter();
	
		//调用业务逻辑层
		IStuBiz isb=new StuBiz();
		IClassBiz icb=new ClassBiz();
		ITeacharBiz itb=new TeacharBiz();
		ILikeBiz ilb=new LikeBiz();
		//接收aa
		String ssss = request.getParameter("a");
		int l=Integer.parseInt(ssss);
		if(l==0) {
			//增加
			//拿到表单的值
			String sname = request.getParameter("sname");
			String str = request.getParameter("str");//老师
			String strr = request.getParameter("strr");//班级
			String[] s = request.getParameterValues("strrr");//爱好
			String like="";
			for (String string : s) {
				like+=string+",";
			}
			//调用方法
			int n = isb.addStudent(new Student(sname, itb.getDg(Integer.parseInt(str)), icb.getDg(Integer.parseInt(strr)), like));
			if(n>0) {
				//增加成功
				out.print("<script>alert('增加成功');location.href='IndexServlet';</script>");
			}
			else {
				//增加失败
				out.print("<script>alert('增加失败');location.href='add.jsp';</script>");
			}
		}
		if(l==1) {
			//删除
			//拿到id
			String sid = request.getParameter("sid");
			//调用方法
			int n = isb.deleteStudent(sid);
			if(n>0) {
				//删除成功
				out.print("<script>alert('删除成功');location.href='IndexServlet';</script>");
			}
			else {
				//删除失败
				out.print("<script>alert('删除失败');location.href='IndexServlet';</script>");
			}
		}
		if(l==2) {
			//修改邦值
			//拿到id
			String sid = request.getParameter("sid");
			Student ss = isb.getDg(sid);
			//存进去
			request.setAttribute("stu", ss);
			//转发
			request.getRequestDispatcher("update.jsp").forward(request, response);
		}
		if(l==3) {
			//拿到值
			String sid = request.getParameter("sid");
			String sname = request.getParameter("sname");
			String str = request.getParameter("str");//老师
			String strr = request.getParameter("strr");//班级
			String[] s = request.getParameterValues("strrr");//爱好
			String like="";
			for (String string : s) {
				like+=string+",";
			}
			//调用修改方法
			int n=isb.updateStudent(new Student(Integer.parseInt(sid), sname, itb.getDg(Integer.parseInt(str)), icb.getDg(Integer.parseInt(strr)), like));
			if(n>0) {
				//修改成功IndexServlet
				out.print("<script>alert('修改成功');location.href='IndexServlet';</script>");
			}
			else {
				//删除失败
				out.print("<script>alert('修改失败');location.href='aa.do?a=2&sid="+sid+"';</script>");
			}
		}
		
		
	
	}

}

com.xlb.entity包
Class.java

package com.xlb.entity;

import java.io.Serializable;

/**
 * 班级实体类
 * @author 波哥
 *
 * 2022年6月14日 下午3:00:43
 */
public class Class implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 8851742647135346944L;
	private int cid;//班级id
	private String tname;//班级名
	public int getCid() {
		return cid;
	}
	public void setCid(int cid) {
		this.cid = cid;
	}
	public String getTname() {
		return tname;
	}
	public void setTname(String tname) {
		this.tname = tname;
	}
	public Class() {
		// TODO Auto-generated constructor stub
	}
	public Class(int cid, String tname) {
		super();
		this.cid = cid;
		this.tname = tname;
	}
	public Class(String tname) {
		this.tname = tname;
	}
	@Override
	public String toString() {
		return "Class [cid=" + cid + ", tname=" + tname + "]";
	}
	
}

Like.java

package com.xlb.entity;

/**
 * 爱好实体类
 * @author 波哥
 *
 * 2022年6月14日 下午3:46:54
 */
public class Like {
	private int lid;//爱好实体类
	private String lname;//爱好名
	public int getLid() {
		return lid;
	}
	public void setLid(int lid) {
		this.lid = lid;
	}
	public String getLname() {
		return lname;
	}
	public void setLname(String lname) {
		this.lname = lname;
	}
	
	public Like() {
		// TODO Auto-generated constructor stub
	}
	public Like(int lid, String lname) {
		super();
		this.lid = lid;
		this.lname = lname;
	}
	public Like(String lname) {
		this.lname = lname;
	}
	@Override
	public String toString() {
		return "Like [lid=" + lid + ", lname=" + lname + "]";
	}
	
}

Student.java

package com.xlb.entity;

import java.util.List;

/**
 * 学生实体类
 * @author 波哥
 *
 * 2022年6月14日 下午2:57:16
 */
public class Student {
	private int sid;//学生id
	private String sname;//学生姓名
	private Teachar t;//老师实体类
	private Class c;//班级实体类
	//private String likee;//爱好
	private List<Like> ah;
	private String like;//用来增加修改删除
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public Teachar getT() {
		return t;
	}
	public void setT(Teachar t) {
		this.t = t;
	}
	public Class getC() {
		return c;
	}
	public void setC(Class c) {
		this.c = c;
	}
	public List<Like> getAh() {
		return ah;
	}
	public void setAh(List<Like> ah) {
		this.ah = ah;
	}
	
	public Student() {
		// TODO Auto-generated constructor stub
	}
	
	public Student(int sid, String sname, Teachar t, Class c, List<Like> ah) {
		this.sid = sid;
		this.sname = sname;
		this.t = t;
		this.c = c;
		this.ah = ah;
	}
	public Student(String sname, Teachar t, Class c, List<Like> ah) {
		this.sname = sname;
		this.t = t;
		this.c = c;
		this.ah = ah;
	}
	public String getLike() {
		return like;
	}
	public void setLike(String like) {
		this.like = like;
	}
	
	
	
	public Student(String sname, Teachar t, Class c, String like) {
		super();
		this.sname = sname;
		this.t = t;
		this.c = c;
		this.like = like;
	}
	@Override
	public String toString() {
		return "Student [sid=" + sid + ", sname=" + sname + ", t=" + t + ", c=" + c + ", ah=" + ah + ", like=" + like
				+ "]";
	}
	public Student(int sid, String sname, Teachar t, Class c, String like) {
		super();
		this.sid = sid;
		this.sname = sname;
		this.t = t;
		this.c = c;
		this.like = like;
	}
	
	
	
}


Teachar.java

package com.xlb.entity;

import java.io.Serializable;

/**
 * 老师实体类
 * @author 波哥
 *
 * 2022年6月14日 下午2:58:10
 */
public class Teachar implements Serializable{
	/**
	 * 
	 */
	private static final long serialVersionUID = 2041300652578515543L;
	private int tid;//老师id
	private String tname;//老师名
	public int getTid() {
		return tid;
	}
	public void setTid(int tid) {
		this.tid = tid;
	}
	public String getTname() {
		return tname;
	}
	public void setTname(String tname) {
		this.tname = tname;
	}
	
	public Teachar() {
		// TODO Auto-generated constructor stub
	}
	public Teachar(int tid, String tname) {
		super();
		this.tid = tid;
		this.tname = tname;
	}
	@Override
	public String toString() {
		return "Teachar [tid=" + tid + ", tname=" + tname + "]";
	}
	
	public Teachar(String tname) {
		this.tname = tname;
	}
	
}

com.xlb.dao
ClassDao.java

package com.xlb.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.xlb.entity.Class;

/**
 * 班级数据库访问层
 * @author 波哥
 *
 * 2022年6月14日 下午10:18:26
 */
public class ClassDao implements IClassDao{
	
	//调用通用方法层
	TyDao td=new TyDao();

	@Override
	public Class getDg(int cid) {
		Class c=new Class();
		try {
			Object[] obj= {cid};
			//调用方法
			ResultSet rs=td.executeQuery("select * from tb_class where cid=?", obj);
			if(rs.next()){
				c.setCid(rs.getInt(1));
				c.setTname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return c;
	}

	/**
	 * 查询全部班级 
	 */
	@Override
	public List<Class> getAll() {
		List<Class> ls=new ArrayList<Class>();
		try {
			ResultSet rs=td.executeQuery("select * from tb_class");
			while(rs.next()) {
				//实例化一个班级对象
				Class c=new Class();
				c.setCid(rs.getInt(1));
				c.setTname(rs.getString(2));
				ls.add(c);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return ls;
	}
	

	
}

IClassDao.java

package com.xlb.dao;

import java.util.List;

import com.xlb.entity.Class;

/**
 * 班级表数据库访问层
 * @author 波哥
 *
 * 2022年6月15日 上午8:57:25
 */
public interface IClassDao {
	
	/**
	 * 根据id查找班级
	 * @param cid 班级id
	 * @return 班级对象
	 */
	Class getDg(int cid);
	
	/**
	 * 查询全部班级
	 * @return 班级集合
	 */
	List<Class> getAll();
	
}

ILikeDao.java

package com.xlb.dao;

import java.util.List;

import com.xlb.entity.Like;

/**
 * 爱好表数据库访问层
 * @author 波哥
 *
 * 2022年6月15日 上午8:57:25
 */
public interface ILikeDao {
	
	/**
	 * 根据id查找爱好
	 * @param cid 爱好id
	 * @return 爱好对象
	 */
	Like getDg(int lid);
	
	/**
	 * 查询全部爱好
	 * @return 查询全部爱好
	 */
	List<Like> getAll();
	
}

IStuDao.java

**package com.xlb.dao;

import java.util.List;

import com.xlb.entity.Student;

/**
 * 学生数据库访问层
 * @author 波哥
 *
 * 2022年6月14日 下午4:24:27
 */
public interface IStuDao {
	/**
	 * 带分页的模糊查询
	 * @param str 老师关键字
	 * @param strr 班级关键字
	 * @param strrr 爱好关键字
	 * @param pageIndex 页码
	 * @param pageSize 每页多少页
	 * @return 
	 */
	List<Student> getAll(String str,String strr,String strrr,int pageIndex,int pageSize);
	
	/**
	 * 增加学生方法
	 * @param stu 学生对象
	 * @return 影响行数
	 */
	int addStudent(Student stu);
	
	/**
	 * 拿到最大页码
	 * @param str 老师关键字
	 * @param strr 班级关键字
 	 * @param strrr 爱好关键字
	 * @return 最大页码
	 */
	int getMax(String str,String strr,String strrr);
	
	/**
	 * 根据id删除学生
	 * @param sid 学生id
	 * @return 影响行数
	 */
	int deleteStudent(String sid);
	
	/**
	 * 根据id查询单个
	 * @param sid 学生id
	 * @return 学生对象
	 */
	Student getDg(String sid);
	
	/**
	 * 修改
	 * @param s 学生对象
	 * @return 影响行数
	 */
	int updateStudent(Student s);
	
}
**

ITeacharDao.java

package com.xlb.dao;

import java.util.List;

import com.xlb.entity.Like;
import com.xlb.entity.Teachar;


/**
 * 通用数据库访问层
 * @author 波哥
 *
 * 2022年6月14日 下午4:29:23
 */
public interface ITeacharDao {
	
	/**
	 * 根据id查找单个老师
	 * @param tid 老师id
	 * @return 老师对象
	 */
	Teachar getDg(int tid);
	
	/**
	 * 查询全部老师
	 * @return 老师对象
	 */
	List<Teachar> getAll();
	
}

LikeDao.java

package com.xlb.dao;


import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.xlb.entity.Class;
import com.xlb.entity.Like;

/**
 * 爱好数据库访问层
 * @author 波哥
 *
 * 2022年6月14日 下午10:18:26
 */
public class LikeDao implements ILikeDao{
	
	//调用通用方法层
	TyDao td=new TyDao();

	@Override
	public Like getDg(int lid) {
		Like l=new Like();
		try {
			Object[] b= {lid};
			ResultSet rs=td.executeQuery("select * from tb_like where lid=?", b);
			if(rs.next()) {
				l.setLid(rs.getInt(1));
				l.setLname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return l;
	}
	
	/**
	 * 查询全部爱好 
	 */
	@Override
	public List<Like> getAll() {
		List<Like> ls=new ArrayList<Like>();
		try {
			ResultSet rs=td.executeQuery("select * from tb_like");
			while(rs.next()) {
				//实例化一个爱好对象
				Like c=new Like();
				c.setLid(rs.getInt(1));
				c.setLname(rs.getString(2));
				ls.add(c);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return ls;
	}
	
}

StuDao.java

package com.xlb.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.xlb.entity.Like;
import com.xlb.entity.Student;
import com.xlb.util.DBHelper;

/**
 * 学生数据库访问层
 * @author 波哥
 *
 * 2022年6月14日 下午10:24:21
 */
public class StuDao implements IStuDao{
	
	//调用通用方法层
	TyDao td=new TyDao();
	
	//调用其他dao层
	LikeDao ld=new LikeDao();
	ClassDao cd=new ClassDao();
	TeacharDao tdd =new TeacharDao();
	
	@Override
	public List<Student> getAll(String str,String strr,String strrr, int pageIndex, int pageSize) {
		int a=(pageIndex-1)*pageSize;
		List<Student> ls=new ArrayList<>();
		try {
			String sql="select * FROM tb_student WHERE tid like '%"+str+"%' and cid like '%"+strr+"%' and likee like '%"+strrr+"%'  LIMIT ?,? ";
			Object[] obj= {a,pageSize};
			ResultSet rs=td.executeQuery(sql, obj);
			while(rs.next()) {
				//实例化一个学生
				Student sd=new Student();
				//实例化一个爱好数组
				List<Like> ll=new ArrayList<Like>();
				sd.setSid(rs.getInt(1));
				sd.setSname(rs.getString(2));
				sd.setT(tdd.getDg(rs.getInt(3)));
				sd.setC(cd.getDg(rs.getInt(4)));
				String s = rs.getString(5);//爱好字符串 利用逗号分割
				String[] split = s.split(",");
				for (String string : split) {
					ll.add(ld.getDg(Integer.parseInt(string)));
				}
				//加到学生实体类
				sd.setAh(ll);
				//最后加到大集合里面
				ls.add(sd);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return ls;
	}
	
	
	/**
	 * 增加方法
	 */
	@Override
	public int addStudent(Student stu) {
		int n = 0;
		try {
			String sql="insert into tb_student(sname,tid,cid,likee) values(?,?,?,?)";
			Object[] ob= {stu.getSname(),stu.getT().getTid(),stu.getC().getCid(),stu.getLike()};
		    n=td.tyzsc(sql,ob);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return n;
	}

	/**
	 * 拿到最大行数
	 */
	@Override
	public int getMax(String str, String strr, String strrr) {
		int n=0;
		try {
			String sql="select count(*) from tb_student where tid like '%"+str+"%' and cid like '%"+strr+"%' and likee like '%"+strrr+"%' ";
			ResultSet rs = td.executeQuery(sql);
			if(rs.next()) {
				n=rs.getInt(1);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return n;
	}
	

	/**
	 * 删除学生
	 */
	@Override
	public int deleteStudent(String sid) {
		int n = 0;
		try {
			String sql="delete from tb_student where sid=?";
			Object[] obj= {sid};
			n=td.tyzsc(sql, obj);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return n;
	}


	/**
	 * 根据id查询单个
	 */
	@Override
	public Student getDg(String sid) {
		Student stu=new Student();
		try {
			String sql="select * from tb_student where sid=?";
			Object[] obj= {sid};
			ResultSet rs=td.executeQuery(sql, obj);
			if(rs.next()) {
				List<Like> ls=new ArrayList<>();
				stu.setSid(rs.getInt(1));
				stu.setSname(rs.getString(2));
				stu.setT(tdd.getDg(rs.getInt(3)));
				stu.setC(cd.getDg(rs.getInt(4)));
				String ss=rs.getString(5);
				//用逗号分割
				String[] ll = ss.split(",");
				for (String kk : ll) {
					//调用查询
					Like dg = ld.getDg(Integer.parseInt(kk));
					ls.add(dg);
				}
				stu.setAh(ls);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return stu;
	}


	@Override
	public int updateStudent(Student s) {
		int n=0;
		try {
			String sql="update tb_student set sname=?,tid=?,cid=?,likee=? where sid=? ";
			Object[] obj={s.getSname(),s.getT().getTid(),s.getC().getCid(),s.getLike(),s.getSid()};
			n=td.tyzsc(sql, obj);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return n;
	}
	
}

TeacharDao.java

package com.xlb.dao;

import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

import com.xlb.entity.Like;
import com.xlb.entity.Teachar;

/**
 * 老师dao方法
 * @author 波哥
 *
 * 2022年6月14日 下午4:32:45
 */
public class TeacharDao implements ITeacharDao{

	//调用通用方法层
	TyDao td=new TyDao();
	private ResultSet rs=null;
	
	/**
	 * 查看单个教师方法
	 */
	@Override
	public Teachar getDg(int tid) {
		Teachar t=new Teachar();
		try {
			String sql="select * from tb_teachar where tid=?";
			Object[] obj= {tid};
			rs=td.executeQuery(sql, obj);
			if(rs.next()) {
				t.setTid(rs.getInt(1));
				t.setTname(rs.getString(2));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return t;
	}
	
	/**
	 * 查询全部老师 
	 */
	@Override
	public List<Teachar> getAll() {
		List<Teachar> ls=new ArrayList<Teachar>();
		try {
			ResultSet rs=td.executeQuery("select * from tb_teachar");
			while(rs.next()) {
				//实例化一个爱好对象
				Teachar c=new Teachar();
				c.setTid(rs.getInt(1));
				c.setTname(rs.getString(2));
				ls.add(c);
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
		return ls;
	}
	
}

TyDao.java

package com.xlb.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.util.ArrayList;
import java.util.List;

import com.xlb.entity.Like;
import com.xlb.util.DBHelper;

/**
 * 通用dao方法
 * @author 波哥
 *
 * 2022年6月14日 下午3:49:29
 */
public class TyDao {
	//三兄弟
	private Connection con=null;
	private PreparedStatement ps=null;
	private ResultSet rs=null;
	
	/**
	 * 通用增删改
	 * @param sql sql语句
	 * @param objects 占位符
	 * @return 影响行数
	 */
	public int tyzsc(String sql,Object...objects) {
		int n = 0;
		try {
			con=DBHelper.getConnection();
			ps=con.prepareStatement(sql);
			css(ps, objects);
			n=ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return n;
	}
	
	/**
	 * 通用叠层
	 * @param ps
	 * @param objects
	 */
	public void css(PreparedStatement ps,Object...objects) {
		try {
			if(objects!=null) {
				for (int i = 0; i < objects.length; i++) {
					ps.setObject(i+1, objects[i]);
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 通用查询方法
	 * @param sql sql语句
	 * @param objects 占位符
	 * @return
	 */
	public List<Object> select(String sql,Object...objects){
		List<Object> ls=new ArrayList<Object>();
		try {
			con=DBHelper.getConnection();
			ps=con.prepareStatement(sql);
			//获取表元数据
			//设置参数
			css(ps, objects);
			rs=ps.executeQuery();
			ResultSetMetaData data = rs.getMetaData();
			while(rs.next()) {
				//data.getColumnCount() 列
				for (int i = 1; i <= data.getColumnCount(); i++) {
					ls.add(rs.getObject(i));
				}
			}
		} catch (Exception e) {
			e.printStackTrace();
		}finally {
			DBHelper.myClose(con, ps, rs);
		}
		return ls;
	}
	
	/**
	 * 方法功能:通用查询
	 * 
	 * @param sql sql语句
	 * @param Object...objs 
	 */
	public ResultSet executeQuery(String sql, Object... objects) {
		try {
			con = DBHelper.getConnection();
			ps = con.prepareStatement(sql);
			for (int i = 0; i < objects.length; i++) {
				ps.setObject(i + 1, objects[i]);
			}
			rs = ps.executeQuery();
		} catch (Exception e) {
			System.out.println("DAO查询异常");
			e.printStackTrace();
		} 
		return rs;
	}
	
	
}

com.xlb.biz
ClassBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.dao.ClassDao;
import com.xlb.dao.IClassDao;
import com.xlb.dao.ITeacharDao;
import com.xlb.dao.TeacharDao;
import com.xlb.entity.Class;

/**
 * 班级表业务逻辑层
 * @author 波哥
 *
 * 2022年6月14日 下午10:15:07
 */
public class ClassBiz implements IClassBiz{

	//调用数据库访问层
	IClassDao icd=new ClassDao();
	
	@Override
	public Class getDg(int cid) {
		return icd.getDg(cid);
	}

	@Override
	public List<Class> getAll() {
		// TODO Auto-generated method stub
		return icd.getAll();
	}

	
	
}

IClassBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.entity.Class;

/**
 * 班级表业务逻辑层
 * @author 波哥
 *
 * 2022年6月15日 上午8:57:25
 */
public interface IClassBiz {
	
	/**
	 * 根据id查找班级
	 * @param cid 班级id
	 * @return 班级对象
	 */
	Class getDg(int cid);
	
	
	/**
	 * 查询全部班级
	 * @return 班级集合
	 */
	List<Class> getAll();
}

ILikeBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.entity.Like;

/**
 * 爱好表业务逻辑层层
 * @author 波哥
 *
 * 2022年6月15日 上午8:57:25
 */
public interface ILikeBiz {
	
	/**
	 * 根据id查找爱好
	 * @param cid 爱好id
	 * @return 爱好对象
	 */
	Like getDg(int lid);
	
	/**
	 * 查询全部爱好
	 * @return 查询全部爱好
	 */
	List<Like> getAll();
}

IStuBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.entity.Student;

/**
 * 学生业务逻辑层
 * @author 波哥
 *
 * 2022年6月15日 上午9:31:46
 */
public interface IStuBiz {
	/**
	 * 带分页的模糊查询
	 * @param str 老师关键字
	 * @param strr 班级关键字
	 * @param strrr 爱好关键字
	 * @param pageIndex 页码
	 * @param pageSize 每页多少页
	 * @return 
	 */
	List<Student> getAll(String str,String strr,String strrr,int pageIndex,int pageSize);

	/**
	 * 增加学生方法
	 * @param stu 学生对象
	 * @return 影响行数
	 */
	int addStudent(Student stu);
	

	/**
	 * 拿到最大页码
	 * @param str 老师关键字
	 * @param strr 班级关键字
 	 * @param strrr 爱好关键字
	 * @return 最大页码
	 */
	int getMax(String str,String strr,String strrr,int pageSize);
	
	/**
	 * 根据id删除学生
	 * @param sid 学生id
	 * @return 影响行数
	 */
	int deleteStudent(String sid);

	/**
	 * 根据id查询单个
	 * @param sid 学生id
	 * @return 学生对象
	 */
	Student getDg(String sid);
	
	/**
	 * 修改
	 * @param s 学生对象
	 * @return 影响行数
	 */
	int updateStudent(Student s);
	
}

ITeacharBiz.java

package com.xlb.biz;


import java.util.List;

import com.xlb.entity.Teachar;

/**
 * 业务逻辑层
 * @author 波哥
 *
 * 2022年6月14日 下午10:13:28
 */
public interface ITeacharBiz {
	
	/**
	 * 根据id查找单个老师
	 * @param tid 老师id
	 * @return 老师对象
	 */
	Teachar getDg(int tid);
	
	/**
	 * 查询全部老师
	 * @return 老师对象
	 */
	List<Teachar> getAll();
}

LikeBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.dao.ILikeDao;
import com.xlb.dao.LikeDao;
import com.xlb.entity.Like;

/**
 * 爱好表业务逻辑层
 * @author 波哥
 *
 * 2022年6月14日 下午10:15:07
 */
public class LikeBiz implements ILikeBiz{

	//调用数据库访问层
	ILikeDao ikd=new LikeDao();
	
	@Override
	public Like getDg(int lid) {
		return ikd.getDg(lid);
	}

	@Override
	public List<Like> getAll() {
		return ikd.getAll();
	}
	
}

StuBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.dao.IStuDao;
import com.xlb.dao.StuDao;
import com.xlb.entity.Student;

/**
 * 学生数据库访问层
 * @author 波哥
 *
 * 2022年6月15日 上午9:32:28
 */
public class StuBiz implements IStuBiz{
	
	//调用数据访问层
	IStuDao isd=new StuDao();

	@Override
	public List<Student> getAll(String str, String strr, String strrr, int pageIndex, int pageSize) {
		return isd.getAll(str, strr, strrr, pageIndex, pageSize);
	}

	
	@Override
	public int getMax(String str, String strr, String strrr,int pageSize) {
		int rows=isd.getMax(str, strr, strrr);//拿到总行数
		int max=rows/pageSize;//求页码
		if(rows%pageSize!=0) {//判断是否能够除尽
			max++;
		}
		return max;
	}

	@Override
	public int addStudent(Student stu) {
		// TODO Auto-generated method stub
		return isd.addStudent(stu);
	}


	@Override
	public int deleteStudent(String sid) {
		// TODO Auto-generated method stub
		return isd.deleteStudent(sid);
	}


	@Override
	public Student getDg(String sid) {
		// TODO Auto-generated method stub
		return isd.getDg(sid);
	}


	@Override
	public int updateStudent(Student s) {
		// TODO Auto-generated method stub
		return isd.updateStudent(s);
	}

}

TeacharBiz.java

package com.xlb.biz;

import java.util.List;

import com.xlb.dao.ITeacharDao;
import com.xlb.dao.TeacharDao;
import com.xlb.entity.Teachar;

/**
 * 老师表业务逻辑层
 * @author 波哥
 *
 * 2022年6月14日 下午10:15:07
 */
public class TeacharBiz implements ITeacharBiz{

	//调用数据库访问层
	ITeacharDao itd=new TeacharDao();

	@Override
	public Teachar getDg(int tid) {
		return itd.getDg(tid);
	}

	@Override
	public List<Teachar> getAll() {
		// TODO Auto-generated method stub
		return itd.getAll();
	}
	
	
}

二、界面

增加界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主界面</title>
</head>
<body>
	<center>
		<h1>增加界面</h1>
		<form action="aa.do?a=0" method="post">
			<table border="1px">
				<tr>
					<td>
						学生姓名:<input type="text"  name="sname" />
					</td>
				</tr>
				<tr>
					<td>
					学生教员:
						<!-- 教员下拉框 -->
						<select name="str">
							<c:forEach items="${teacharls}" var="t">
								<option value="${t.tid}">${t.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
					学生班级:
						<!-- 班级下拉框 -->
						<select name="strr">
							<c:forEach items="${classls}" var="c">
								<option value="${c.cid}">${c.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
					学生爱好:
						<!-- 爱好复选框 -->
						<c:forEach items="${likels}" var="l">
							<input type="checkbox" name="strrr" value="${l.lid}">${l.lname}
						</c:forEach>
					</td>
				</tr>
			</table>
			<br/>
			<input type="submit" value="增加" />
		</form>
	</center>
</body>
</html>

主界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>主界面</title>
</head>
<body>
	<center>
		<h1>增加界面</h1>
		<form action="aa.do?a=0" method="post">
			<table border="1px">
				<tr>
					<td>
						学生姓名:<input type="text"  name="sname" />
					</td>
				</tr>
				<tr>
					<td>
					学生教员:
						<!-- 教员下拉框 -->
						<select name="str">
							<c:forEach items="${teacharls}" var="t">
								<option value="${t.tid}">${t.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
					学生班级:
						<!-- 班级下拉框 -->
						<select name="strr">
							<c:forEach items="${classls}" var="c">
								<option value="${c.cid}">${c.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
					学生爱好:
						<!-- 爱好复选框 -->
						<c:forEach items="${likels}" var="l">
							<input type="checkbox" name="strrr" value="${l.lid}">${l.lname}
						</c:forEach>
					</td>
				</tr>
			</table>
			<br/>
			<input type="submit" value="增加" />
		</form>
	</center>
</body>
</html>

修改界面

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>修改界面</title>
</head>
<body>
	<center>
		<h1>修改界面</h1>
		<form action="aa.do?a=3&sid=${stu.sid}" method="post">
			<table border="1px">
				<tr>
					<td>
						学生姓名:<input type="text" value="${stu.sname}" name="sname" />
					</td>
				</tr>
				<tr>
					<td>
					学生教员:
						<!-- 教员下拉框 -->
						<select name="str">
							<c:forEach items="${teacharls}" var="t">
								<option <c:if test="${t.tid==stu.t.tid}">selected="selected"</c:if> value="${t.tid}">${t.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
					学生班级:
						<!-- 班级下拉框 -->
						<select name="strr">
							<c:forEach items="${classls}" var="c">
								<option <c:if test="${c.cid==stu.c.cid}">selected="selected"</c:if> value="${c.cid}">${c.tname}</option>
							</c:forEach>
						</select>
					</td>
				</tr>
				
				<tr>
					<td>
					学生爱好:
						<!-- 爱好复选框 -->
						<c:forEach items="${likels}" var="l">
							<input <c:forEach items="${stu.ah}" var="y"><c:if test="${l.lname==y.lname}">checked="checked"</c:if></c:forEach> type="checkbox" name="strrr" value="${l.lid}">${l.lname}
						</c:forEach>
					</td>
				</tr>
			</table>
			<br/>
			<input type="submit" value="修改" />
		</form>
	</center>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java之增删改查 的相关文章

随机推荐

  • 【Windows】如何使用Windbg检测Windows程序内存泄漏

    文章目录 使用Windbg检测Windows程序内存泄漏的步骤如下 启动程序 使用Windbg启动需要检测内存泄漏的程序 可以通过在Windbg中选择 文件 gt 打开程序 来打开程序 设置符号路径 在Windbg中 可以通过设置符号路径来
  • python 多线程模拟多用户访问接口

    coding utf 8 import threading import requests from urllib parse import quote 定义访问接口的函数 def access api user id params E4
  • Kafka数据丢失原因及解决方案

    Kafka包括Producer Broker Consumer 因此从这三个方面分析 Producer端 丢失原因 Kafka在Producer端的消息发送采用的是异步发送的方式 还有同步发送 但是同步发送会导致消息阻塞 需要等待 丢失数据
  • XSS漏洞学习

    原理 XSS攻击通常指的是通过利用网页开发时留下的漏洞 通过巧妙的方法注入恶意指令代码到网页 使用户加载并执行攻击者恶意制造的网页程序 这些恶意网页程序通常是JavaScript 但实际上也可以包括Java VBScript ActiveX
  • openmpi参数_Open MPI的目标、概念及实现

    目前 许多可用的MPI实现只关注HPC 高性能计算 的部分方面或是专注于解决某个具体问题 这导致了这些MPI实现不兼容 如果独立安装组合来获取它们的特有功能 Open MPI是在LAM MPI LA MPI and FT MPI的基础上的一
  • 目标检测如何计算召回率_目标检测+准确率、召回率、PR曲线、AP、mAp、mmAp

    查准率 查全率 AP map 参考知乎地址 https zhuanlan zhihu com p 94597205 TP True Positive 一个正确的检测 检测的IOU threshold 即预测的边界框 bounding box
  • JavaScript中常用的三种弹窗

    目录 一 alert 警告框 二 confirm 确认框 三 prompt 提示框 JavaScript 中可以创建三种消息框 警告框 确认框 提示框 一 alert 警告框 alert 方法是显示一条弹出提示消息和确认按钮的警告框 需要注
  • 【js】删除数组中的指定元素,且不改变原数组

    笨办法 export function remove arr item let result arr forEach function element if element item result push element return r
  • 样本不平衡问题分析与部分解决办法

    最近工作中在处理文本分类问题遇到了分类不均衡的问题 主要还是样本太少还同时非常的不均衡正负样本1 10 类别不平衡比例超过4 1 就会造成偏移 就使用了SMOTE方法 注意 在进行数据增广的时候一定要将测试集和验证集单独提前分开 扩张只在训
  • Doxygen简介及使用说明

    https blog csdn net Candy1232009 article details 80786179
  • java的String字符串拼接和StringBuffer的append的速度差异

    今天在leetcode上做题的时候发现 实现字符串拼接的时候 用StringBuffer的append比String的 快很多 思考了一下这两者的差别 我是初学者 有说错的还请大家指正 首先得出String的 拼接的时间 public st
  • Linux下多线程编程思考与学习----01(线程创建pthread_create函数详解)

    一 为什么需要使用多线程编程 当在执行某些程序的时候难免会需要同时执行两个 甚至多个任务 当然可以使用多个进程进行执行 但是难免需要用到信息的传输 因此就需要引入进程间通信的问题 这对于CPU内存调度的压力也会更大 多线程编程的优点是在同一
  • 数据结构题目-二叉排序树

    目录 问题 A 二叉排序树 文本输出 问题 B 销售排行榜 问题 C 二叉排序树 平衡因子 问题 D 案例 1 1 1 二分查找 问题 E 进阶实验 1 3 1 两个有序序列的中位数 问题 A 二叉排序树 文本输出 题目描述 给定一个序列
  • 登录页面渗透测试思路总结

    登录页面可能产生哪些漏洞呢 1 注入点及万能密码登录 2 登录时 不安全的用户提示 比如提示用户名不存在或者密码验证码错误 3 查看登录页面源代码 看是否存在敏感信息泄露 4 不安全的验证码 5 在注册账号的时候 是否存在不安全的提示 6
  • 【华为OD机试 2023 B卷

    在线OJ 已购买本专栏用户 请私信博主开通账号 在线刷题 运行出现 Runtime Error 0Aborted 请忽略 华为OD统一考试A卷 B卷 新题库说明 2023年5月份 华为官方已经将的 2022 0223Q 1 2 3 4 统一
  • 唐僧团队要裁员,你会裁谁?

    提问 西游记取经团为了节约成本 唐太宗需要在这个团队里裁掉一名队员 该裁掉哪一位呢 为什么 为了完成西天取经任务 组成取经团队 成员有唐僧 孙悟空 猪八戒 沙和尚 白龙马 高层领导 观音 项目经理 唐僧 技术核心 孙悟空 普通团员 猪八戒
  • JAVA:计算1+2+3+…,加到多少时和超过10000?

    计算1 2 3 加到多少时和超过10000 int s 0 int i 1 for s lt 10000 i s i System out println i
  • 【数据库】当日期(时间)为条件,查询oracle数据库,以及出现ORA-01849:小时值必须介于1和12之间时的解决方法

    说明 数据库 Oracle 11g 可视化 Navicat Premiu 15 注意 在ORACLE中 时间格式默认时间为12小时制 所以如果出现 ORA 01849 小时值必须介于1和12之间 的提醒 需要把下面中的 yyyy MM dd
  • 实现一个高性能网络通讯库的要点

    实现一个高性能网络通讯库的要点 由于硬件的发展速度快 本来占时间消耗小头的软件层 变成了大头 原本占性能比例非常小的的中断 上下文切换 也成为了性能优化的方向 许多bypass kernel的方案开始发展起来 以前在千兆网卡普及的时代 就有
  • Java之增删改查

    增删改查 一 搭建底层代码 二 界面 一 搭建底层代码 首先导入我们需要的jar包依赖 导入我们需要的js 结构目录 各包展示 DBHelpoer java package com xlb util import java io Input