七、JDBC例子——图书的增、删除、改、查

本文详细介绍了一个基于JDBC的图书管理系统实现案例,包括创建图书表、增删改查等核心功能的具体步骤与代码实现。
系统功能与特色: (1)图书类别信息管理:作为一个学校的图书馆,涉及到的图书是很多的,这就有必要对图书进行分门别类,这样有利于对图书询和管理。不同的图书类别可以借阅的天数也是不一样的,管理员登陆系统后可以对图书类别进行添加,更新和删除操作。 (2)图书信息管理:当管理员对图书类别信息添加完成后,就可以开始进行图书信息的录入了,只有将图书馆拥有的图书录入系统中,读者朋友在登陆系统后才可以询到自己喜欢的该图书。 (3)读者类别管理:为了方便图书馆的管理,系统对读者的类别进行了分别,不同的读者类别可以借阅图书的数目是不一样的。管理员在登陆系统后可以这个读者类别信息进行管理,包括添加读者类别信息,修读者类别,删除读者类别,特别是执行删除操作时需要保持数据库表数据之间的一致性。 (4)读者信息管理:当管理员把读者类别信息编辑好完成后,就可以办理读者信息了,管理员可以添加新的读者信息,修已经存在的读者信息,删除读者信息。 (5)图书借阅管理:读者可以登陆系统询自己喜欢的图书,然后到图书馆进行图书借书的登记操作,当读者看完了书或需要归还时,需要拿着自己的图书图书馆进行归还,此时有管理员办理图书归还业务。当然,如果读者借阅了图书因某种原因忘记了归还,管理员还可以对这些信息进行统计,同时,管理员还可以对已经出借的图书进行续借的办理。 (6)系统设置: 管理员登陆系统后可以修图书馆的信息,可以修管理其他操作员的信息,可以管理书架信息。 (7)口令更:无论是管理员或读者身份登陆系统后,都可以对自己的登陆密码进行修操作,这样保证了系统的安全性。 (8)系统特点:采用MVC设计模式,完全采用面向对象的设计思想,使用了开源框架Struts。
### 创建前后端分离的图书管理系统 #### 后端开发:使用Java与SQL Server通过JDBC连接 为了建立一个高效的图书管理系统,后端部分需要精心设计以支持各种功能。这包括但不限于用户认证、图书询、借阅管理等功能。 首先,在配置数据库连接方面,可以通过`DataSource`接口来获取数据库资源[^1]: ```java import javax.sql.DataSource; import com.mchange.v2.c3p0.ComboPooledDataSource; public class DataSourceUtil { private static ComboPooledDataSource cpds = new ComboPooledDataSource(); static { try { cpds.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver"); cpds.setJdbcUrl("jdbc:sqlserver://localhost:1433;DatabaseName=LibraryDB;"); cpds.setUser("sa"); cpds.setPassword("yourpassword"); // 配置c3p0连接池参数... } catch (Exception e) { throw new RuntimeException(e); } } public static DataSource getDataSource() { return cpds; } } ``` 接着定义DAO层用于执行具体的SQL语句,这里给出一个简单的例子——找所有书籍的信息[^3]: ```java import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.ArrayList; import java.util.List; public class BookDao { public List<BookInfo> findAllBooks() throws Exception { String sql = "SELECT * FROM Books"; Connection conn = null; PreparedStatement pstmt = null; ResultSet rs = null; List<BookInfo> books = new ArrayList<>(); try { conn = DataSourceUtil.getDataSource().getConnection(); pstmt = conn.prepareStatement(sql); rs = pstmt.executeQuery(); while (rs.next()) { int id = rs.getInt("id"); String title = rs.getString("title"); String author = rs.getString("author"); books.add(new BookInfo(id, title, author)); } } finally { if (rs != null) rs.close(); if (pstmt != null) pstmt.close(); if (conn != null) conn.close(); } return books; } } ``` 对于业务逻辑层(Service),则负责调用相应的DAO方法并处理返回的结果集,例如分页显示书目列表: ```java @Service public class BookServiceImpl implements BookService { @Autowired private BookDao bookDao; @Override public PageResult<BookInfo> getListByPage(PageRequest pageRequest) { Integer count = bookDao.countTotalRecords(); // 假设有一个计数的方法 List<BookInfo> bookInfos = bookDao.findBooksByPage(pageRequest); for (BookInfo bookInfo : bookInfos){ bookInfo.setStateCN(BookStatusEnums.getDescByCode(bookInfo.getStatus()).getDesc()); } return new PageResult<>(bookInfos, count, pageRequest); } } ``` #### 前端开发:基于Java技术栈的选择 考虑到题目提到希望前端也采用Java技术实现,实际上这是指使用Java编写的服务器端渲染模板引擎如Thymeleaf或Freemarker等工具生成HTML页面;而真正的客户端交互仍然依赖于JavaScript及其库/框架完成。因此建议考虑以下方案之一: - **Spring Boot + Thymeleaf**: 使用Spring Boot快速搭建Web应用程序,并借助Thymeleaf作为视图解析器,能够方便地嵌入Java对象属性至HTML文档中。 - **Vaadin Framework**: 这是一种完全基于Java的企业级UI组件库,允许开发者仅需编写少量甚至无需手写任何JS/CSS代码就能构建响应式的Web应用界面。 不过需要注意的是,如果严格遵循“前后端分离”的架构理念,则更推荐选用现代前端框架比如React.js/Vue.js/Angular配合RESTful API的方式来进行开发[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值