JSP+Servlet培训班作业管理系统[9]–数据库操作类开发

简介: 本文目录1. 本章任务2. 数据库操作类封装3. 数据访问类开发3.1 用户访问类 UserDao3.2 课程访问类 CourseDao3. 选课访问类 SelectionDao4. 作业题目访问类 TitleDao5. 作业内容访问类 JobDao4. 总结

1. 本章任务

通过JDBC操作数据库流程基本都是一样的:


打开数据库连接

执行查询或者更新操作

释放连接

由于每次操作都需要打开、关闭连接,所以封装一个操作类。


2. 数据库操作类封装

将加载驱动、打开、关闭连接封装到一个类:



/**

* 数据库操作工具类

*/

public class DbUtils {


// 连接所需的固定参数

private static String driver = "com.mysql.jdbc.Driver";

private static String url = "jdbc:mysql://127.0.0.1:3306/homework?useUnicode=true&characterEncoding=utf-8";

private static String user = "root";

private static String password = "Easy@0122";


// 初始化的时候加载去的弄

static {

 try {

  Class.forName(driver);

 } catch (ClassNotFoundException e) {

  throw new ExceptionInInitializerError(e);

 }

}


/**

 * 获取连接

 */

public static Connection getConnection() throws SQLException {

 return DriverManager.getConnection(url, user, password);

}


/**

 * 释放连接

 */

public static void releasonConnection(ResultSet rs, Statement st, Connection conn) {

 try {

  if (rs != null)

   rs.close();

 } catch (SQLException e) {

  e.printStackTrace();

 } finally {

  try {

   if (st != null)

    st.close();

  } catch (SQLException e) {

   e.printStackTrace();

  } finally {

   if (conn != null)

    try {

     conn.close();

    } catch (SQLException e) {

     e.printStackTrace();

    }`在这里插入代码片`

  }

 }

}

}


3. 数据访问类开发

有类数据库操作类后,就可以针对各个数据实体开发相应的操作类了,按照国际管理,数据访问类命名为XxxDao。


3.1 用户访问类 UserDao


/**

* 用户数据访问类

*/

public class UserDao {

/**

 * 新增

 */

public int add(User user) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  // 拼装sql,?为预留占位符

  String sql = "insert into user(user_role,user_name,user_password)values(?,?,?)";

  ps = conn.prepareStatement(sql);

  // 将对象属性插入sql预留位置

  ps.setString(1, user.getUserRole());

  ps.setString(2, user.getUserName());

  ps.setString(3, user.getUserPassword());

  // 执行sql

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 根据id删除

 */

public int deleteById(int userId) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "delete from user where user_id=?";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, userId);

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 获取全部用户

 */

public List<User> getUsers() {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 List<User> users = new ArrayList<User>();

 try {

  conn = DbUtils.getConnection();

  String sql = "select * from user";

  ps = conn.prepareStatement(sql);

  rs = ps.executeQuery();

  while (rs.next()) {

   users.add(makeOneUser(rs));

  }

 } catch (SQLException e) {

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

 return users;

}


/**

 * 获取一个用户

 */

public User makeOneUser(ResultSet rs) throws SQLException {

 User user = new User();

 user.setUserId(rs.getInt("user_id"));

 user.setUserName(rs.getString("user_name"));

 user.setUserPassword(rs.getString("user_password"));

 user.setUserRole(rs.getString("user_role"));

 return user;

}


/**

 * 根据id修改其他信息

 */

public int update(User user) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "update user set user_role=?,user_name=?, user_password=? where user_id=? ";

  ps = conn.prepareStatement(sql);

  ps.setString(1, user.getUserRole());

  ps.setString(2, user.getUserName());

  ps.setString(3, user.getUserPassword());

  ps.setInt(4, user.getUserId());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

}

}


3.2 课程访问类 CourseDao


/**

* 课程访问类

*/

public class CourseDao {

/**

 * 新增

 */

public int add(Course course) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  // 拼装sql,?为预留占位符

  String sql = "insert into course(course_user,course_name)values(?,?)";

  ps = conn.prepareStatement(sql);

  // 将对象属性插入sql预留位置

  ps.setInt(1, course.getCourseUser());

  ps.setString(2, course.getCourseName());

  // 执行sql

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 根据id删除

 */

public int deleteById(int courseId) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "delete from course where course_id=?";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, courseId);

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 获取全部

 */

public List<Course> getCourses() {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 List<Course> courses = new ArrayList<Course>();

 try {

  conn = DbUtils.getConnection();

  String sql = "select * from course";

  ps = conn.prepareStatement(sql);

  rs = ps.executeQuery();

  while (rs.next()) {

   courses.add(makeOneCourse(rs));

  }

 } catch (SQLException e) {

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

 return courses;

}


/**

 * 获取一个

 */

public Course makeOneCourse(ResultSet rs) throws SQLException {

 Course course = new Course();

 course.setCourseId(rs.getInt("course_id"));

 course.setCourseName(rs.getString("course_name"));

 course.setCourseUser(rs.getInt("course_user"));

 return course;

}


/**

 * 根据id修改其他信息

 */

public int update(Course course) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "update course set course_user=?,course_name=? where course_id=? ";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, course.getCourseUser());

  ps.setString(2, course.getCourseName());

  ps.setInt(3, course.getCourseId());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

}

}

3. 选课访问类 SelectionDao


/**

* 选课访问类

*/

public class SelectionDao {

/**

 * 新增

 */

public int add(Selection selection) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "insert into selection(selection_user,selection_course)values(?,?)";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, selection.getSelectionUser());

  ps.setInt(2, selection.getSelectionCourse());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 根据id删除

 */

public int deleteById(int selectionId) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "delete from selection where selection_id=?";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, selectionId);

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 获取全部

 */

public List<Selection> getSelections() {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 List<Selection> selections = new ArrayList<Selection>();

 try {

  conn = DbUtils.getConnection();

  String sql = "select * from selection";

  ps = conn.prepareStatement(sql);

  rs = ps.executeQuery();

  while (rs.next()) {

   selections.add(makeOneSelection(rs));

  }

 } catch (SQLException e) {

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

 return selections;

}


/**

 * 获取一个

 */

public Selection makeOneSelection(ResultSet rs) throws SQLException {

 Selection selection = new Selection();

 selection.setSelectionId(rs.getInt("selection_id"));

 selection.setSelectionUser(rs.getInt("selection_user"));

 selection.setSelectionCourse(rs.getInt("selection_course"));

 return selection;

}


/**

 * 根据id修改其他信息

 */

public int update(Selection selection) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "update selection set selection_user=?,selection_course=? where selection_id=? ";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, selection.getSelectionUser());

  ps.setInt(2, selection.getSelectionCourse());

  ps.setInt(3, selection.getSelectionId());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

}

}



4. 作业题目访问类 TitleDao


/**

* 作业题目访问类

*/

public class TitleDao {

/**

 * 新增

 */

public int add(Title title) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "insert into title(title_content,title_course,title_time)values(?,?,?)";

  ps = conn.prepareStatement(sql);

  ps.setString(1, title.getTitleContent());

  ps.setInt(2, title.getTitleCourse());

  ps.setString(1, title.getTitleTime());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 根据id删除

 */

public int deleteById(int titleId) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "delete from title where title_id=?";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, titleId);

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 获取全部

 */

public List<Title> getTitles() {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 List<Title> titles = new ArrayList<Title>();

 try {

  conn = DbUtils.getConnection();

  String sql = "select * from title";

  ps = conn.prepareStatement(sql);

  rs = ps.executeQuery();

  while (rs.next()) {

   titles.add(makeOneTitle(rs));

  }

 } catch (SQLException e) {

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

 return titles;

}


/**

 * 获取一个

 */

public Title makeOneTitle(ResultSet rs) throws SQLException {

 Title title = new Title();

 title.setTitleId(rs.getInt("title_id"));

 title.setTitleContent(rs.getString("title_content"));

 title.setTitleCourse(rs.getInt("title_course"));

 title.setTitleTime(rs.getString("title_time"));

 return title;

}


/**

 * 根据id修改其他信息

 */

public int update(Title title) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "update title set title_content=?,title_course=?,title_time=? where title_id=? ";

  ps = conn.prepareStatement(sql);

  ps.setString(1, title.getTitleContent());

  ps.setInt(2, title.getTitleCourse());

  ps.setString(3, title.getTitleTime());

  ps.setInt(4, title.getTitleId());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

}

}



5. 作业内容访问类 JobDao


/**

* 作业内容访问类

*/

public class JobDao {

/**

 * 新增

 */

public int add(Job job) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "insert into job(job_title,job_user,job_time,job_content,job-score)values(?,?,?,?,?)";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, job.getJobTitle());

  ps.setInt(2, job.getJobUser());

  ps.setString(3, job.getJobTime());

  ps.setString(4, job.getJobContent());

  ps.setString(5, job.getJobScore());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 根据id删除

 */

public int deleteById(int jobId) {

 Connection conn = null;

 PreparedStatement ps = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "delete from job where job_id=?";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, jobId);

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(null, ps, conn);

 }

}


/**

 * 获取全部

 */

public List<Job> getJobs() {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 List<Job> jobs = new ArrayList<Job>();

 try {

  conn = DbUtils.getConnection();

  String sql = "select * from job";

  ps = conn.prepareStatement(sql);

  rs = ps.executeQuery();

  while (rs.next()) {

   jobs.add(makeOneJob(rs));

  }

 } catch (SQLException e) {

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

 return jobs;

}


/**

 * 获取一个

 */

public Job makeOneJob(ResultSet rs) throws SQLException {

 Job job = new Job();

 job.setJobId(rs.getInt("job_id"));

 job.setJobTitle(rs.getInt("job_title"));

 job.setJobUser(rs.getInt("job_user"));

 job.setJobTime(rs.getString("job_time"));

 job.setJobContent(rs.getString("job_content"));

 job.setJobScore(rs.getString("job_score"));

 return job;

}


/**

 * 根据id修改其他信息

 */

public int update(Job job) {

 Connection conn = null;

 PreparedStatement ps = null;

 ResultSet rs = null;

 try {

  conn = DbUtils.getConnection();

  String sql = "update job set job_title=?,job_user=?,job_time=?,job_content=?,job_score=? where job_id=? ";

  ps = conn.prepareStatement(sql);

  ps.setInt(1, job.getJobTitle());

  ps.setInt(2, job.getJobUser());

  ps.setString(3, job.getJobTime());

  ps.setString(4, job.getJobContent());

  ps.setString(5, job.getJobScore());

  ps.setInt(6, job.getJobId());

  return ps.executeUpdate();

 } catch (SQLException e) {

  return 0;

 } finally {

  DbUtils.releaseConnection(rs, ps, conn);

 }

}

}


4. 总结

当前的数据访问类只是封装了基础的增删改查操作,如果需要的话还可以继续定制其他方法。

相关文章
|
10天前
|
前端开发 Oracle 关系型数据库
关于使用SSM+JSP开发时setter、getter隐式调用问题的小结
本文主要分享了在使用SSM+JSP进行网站开发时,因忽视setter、getter的隐式调用问题而导致的常见bug及其解决方法。详细介绍了setter和getter的隐式调用时机,并给出了具体示例,帮助开发者避免类似问题。
36 11
|
17天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
63 3
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
30天前
|
SQL 存储 关系型数据库
数据储存数据库管理系统(DBMS)
【10月更文挑战第11天】
85 3
|
1月前
|
存储 关系型数据库 MySQL
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
PACS系统 中 dicom 文件在mysql 8.0 数据库中的 存储和读取(pydicom 库使用)
27 2
|
1月前
|
安全 NoSQL 关系型数据库
阿里云数据库:构建高性能与安全的数据管理系统
在企业数字化转型过程中,数据库是支撑企业业务运转的核心。随着数据量的急剧增长和数据处理需求的不断增加,企业需要一个既能提供高性能又能保障数据安全的数据库解决方案。阿里云数据库产品为企业提供了一站式的数据管理服务,涵盖关系型、非关系型、内存数据库等多种类型,帮助企业构建高效的数据基础设施。
54 2
|
29天前
|
运维 NoSQL BI
简道云搭载阿里云MongoDB数据库,帮助数以万计企业重构业务系统
通过与MongoDB和阿里云团队的合作,让简道云少走了弯路,保障了线上服务的长期稳定运行,提高了吞吐效率,并相应降低了线上运行成本
|
1月前
|
Java 容器
【学习笔记】Jsp与Servlet技术
【学习笔记】Jsp与Servlet技术
63 0
|
3月前
|
SQL Java 数据库
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
该博客文章介绍了在JSP应用中使用Servlet查询SQL Server数据库的表信息,并通过JavaBean封装图书信息,将查询结果展示在Web页面上的方法。
jsp中使用Servlet查询SQLSERVER数据库中的表的信息,并且打印在屏幕上
|
3月前
|
供应链 前端开发 Java
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)
这篇文章通过一个服装库存管理系统的实例,展示了在Spring Boot项目中使用Ajax、JSON、layui、MVC架构和iframe等技术,涵盖了注册登录、权限管理、用户管理、库存管理等功能,并提供了系统运行环境和技术要求的详细说明。
JSP+servlet+mybatis+layui服装库存管理系统(大三上学期课程设计)