基于JDBC的书库系统(MySQL)

一、创建数据库中的表

1、需求

   有一张表叫javabook【创建表要求使用sql语句进行】
     表中列   bookid  整数自增类型
     表中列   bprice  小数类型
     表中列   bookname  字符串类型 长度不能小于50

工程和包要求:
            domain
            dao
            service
            test

2、实现

create table javabook(bookid int primary key auto_increment,bprice decimal(8,2),bookname varchar(50) not null
);

3、项目结构

二、Idea连接数据库

1、创建文件目录

2、导入文件Jar包

3、连接数据库

package dao;import java.sql.Connection;
import java.sql.DriverManager;/*** @program: Pay.java* @ClassName BaseDao* @description:* @author: 苏芮溪* @create: 2024−11-11 20:10* @Version 1.0**/public class BaseDao {public static final String DRIVERCLASSNAME = "com.mysql.cj.jdbc.Driver";public static final String URL = "jdbc:mysql://localhost:3306/ruixi?sslMode=REQUIRED&characterEncoding=UTF-8&connectionTimeZone=GMT%2B8&forceConnectionTimeZoneToSession=true";public static final String USER = "root";public static final String PASS = "admin";/*** 获取数据库连接*/public Connection getConnection() {//创建连接引用Connection conn = null;try {//装载驱动Class.forName(DRIVERCLASSNAME);//连接数据库conn = DriverManager.getConnection(URL, USER, PASS);//输出连接System.out.println(conn);} catch (Exception e) {e.printStackTrace();}return conn;}
}

三、编写Java代码

1、entity层的实体

package entity;/*** @program: Pay.java* @ClassName Book* @description:* @author: 苏芮溪* @create: 2024−11-12 18:40* @Version 1.0**/public class Book {private int bid;private String bname;private double price;public Book(String bname, double price) {this.bname = bname;this.price = price;}public void setBid(int bid) {this.bid = bid;}public int getBid() {return bid;}public String getBname() {return bname;}public double getPrice() {return price;}@Overridepublic String toString() {return "Book{" +"bid=" + bid +", bname='" + bname + '\'' +", price=" + price +'}';}
}

2、Dao层

2.1、Dao层连接

package dao;import java.sql.*;/*** @program: Pay.java* @ClassName BaseDao* @description:* @author: 苏芮溪* @create: 2024−11-11 20:10* @Version 1.0**/public class BaseDao {public static final String DRIVERCLASSNAME = "com.mysql.cj.jdbc.Driver";public static final String URL = "jdbc:mysql://localhost:3306/ruixi?sslMode=REQUIRED&characterEncoding=UTF-8&connectionTimeZone=GMT%2B8&forceConnectionTimeZoneToSession=true";public static final String USER = "root";public static final String PASS = "admin";/*** 获取数据库连接*/public Connection getConnection() {Connection conn = null;try {//装载驱动.3Class.forName(DRIVERCLASSNAME);//连接数据库conn = DriverManager.getConnection(URL, USER, PASS);System.out.println(conn);} catch (Exception e) {e.printStackTrace();}return conn;}void closedAll(Connection conn, PreparedStatement ps, ResultSet rs) {if (rs != null) {try {rs.close();} catch (SQLException e) {e.printStackTrace();}}if (ps != null) {try {ps.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}}

2.2、Dao层接口

package dao;
import entity.Book;import java.util.List;/*** @program: Pay.java* @ClassName BookDao* @description:* @author: 苏芮溪* @create: 2024−11-12 18:35* @Version 1.0**/public interface BookDao {//添加书void addBook(Book book);//更新书void updateBook(Book book);//根据书名删除书void deleteAllBooks(String bname);//模糊查询书List<Book> findBooks(String bname);
}

2.3、Dao层impl实现

package dao.impl;import dao.BaseDao;
import dao.BookDao;
import entity.Book;import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;/*** @program: Pay.java* @ClassName BookDaoImpl* @description:* @author: 苏芮溪* @create: 2024−11-12 18:40* @Version 1.0**/public class BookDaoImpl extends BaseDao implements BookDao {@Overridepublic void addBook(Book book) {//创建连接引用Connection conn = null;//创建操作引用PreparedStatement ps = null;//SQL操作语句String sql = "insert into javabook(bprice,bookname) values(?,?)";try {//进行数据库连接(调用BaseDao中的方法)conn = getConnection();//创建操作对象ps = conn.prepareStatement(sql);//处理sql操作参数ps.setDouble(1, book.getPrice());ps.setString(2, book.getBname());//执行 插入修改删除ps.executeUpdate();} catch (SQLException e) {throw new RuntimeException(e);}finally {closedAll(conn, ps, null);}}@Overridepublic void updateBook(Book book) {//创建连接引用Connection conn = null;//创建操作引用PreparedStatement ps = null;//SQL操作语句String sql = "update javabook set bprice=?,bookname=? where bookid=?";try {//进行数据库连接(调用BaseDao中的方法)conn = getConnection();//创建操作对象ps = conn.prepareStatement(sql);//处理sql操作参数ps.setDouble(1, book.getPrice());ps.setString(2, book.getBname());ps.setInt(3,book.getBid());//执行 插入修改删除ps.executeUpdate();} catch (SQLException e) {throw new RuntimeException(e);}finally {closedAll(conn, ps, null);}}@Overridepublic void deleteAllBooks(String bname) {
//创建连接引用Connection conn = null;//创建操作引用PreparedStatement ps = null;//SQL操作语句String sql = "delete from javabook where bookname=?";try {//进行数据库连接(调用BaseDao中的方法)conn = getConnection();//创建操作对象ps = conn.prepareStatement(sql);//处理sql操作参数ps.setString(1, bname);//执行 插入修改删除ps.executeUpdate();} catch (SQLException e) {throw new RuntimeException(e);}finally {closedAll(conn, ps, null);}}@Overridepublic List<Book> findBooks(String bname) {//存储数据List<Book> books = new ArrayList<Book>();//创建连接引用Connection conn = null;//创建操作引用PreparedStatement ps = null;//SQL操作语句String sql = "select * from javabook where bname like ?";try {//进行数据库连接(调用BaseDao中的方法)conn = getConnection();//创建操作对象ps = conn.prepareStatement(sql);//处理sql操作参数ps.setString(1, "%"+bname+"%");//执行 插入修改删除ResultSet resultSet = ps.executeQuery();while (resultSet.next()) {Book book = new Book(resultSet.getString("bname"),resultSet.getDouble("bprice"));book.setBid(resultSet.getInt("id"));books.add(book);}} catch (SQLException e) {throw new RuntimeException(e);}finally {closedAll(conn, ps, null);}return books;}}

3、Service层

3.1、接口

package service;import entity.Book;import java.util.List;/*** @program: Pay.java* @ClassName BookService* @description:* @author: 苏芮溪* @create: 2024−11-12 19:20* @Version 1.0**/public interface BookService {//添加书void addBook(Book book);//更新书void updateBook(Book book);//根据书名删除书void deleteAllBooks(String bname);//模糊查询书List<Book> findBooks(String bname);
}

3.2、实现

package service.impl;import dao.BookDao;
import dao.impl.BookDaoImpl;
import entity.Book;
import service.BookService;import java.util.List;/*** @program: Pay.java* @ClassName BookServiceImpl* @description:* @author: 苏芮溪* @create: 2024−11-12 19:22* @Version 1.0**/public class BookServiceImpl implements BookService {//面向接口编程private BookDao bookDao;public BookServiceImpl() {bookDao = new BookDaoImpl();}@Overridepublic void addBook(Book book) {bookDao.addBook(book);}@Overridepublic void updateBook(Book book) {bookDao.updateBook(book);}@Overridepublic void deleteAllBooks(String bname) {bookDao.deleteAllBooks(bname);}@Overridepublic List<Book> findBooks(String bname) {return bookDao.findBooks(bname);}
}

4、测试类

package test;import entity.Book;
import service.BookService;
import service.impl.BookServiceImpl;import java.util.List;/*** @program: Pay.java* @ClassName Test* @description:* @author: 苏芮溪* @create: 2024−11-12 19:24* @Version 1.0**/public class Test {public static void main(String[] args) {Book book1 = new Book("java入门",12.5);Book book2 = new Book("java初级",25);Book book3 = new Book("java高级",50);//插入三本书BookService bs = new BookServiceImpl();bs.addBook(book1);bs.addBook(book2);bs.addBook(book3);//用汇编覆盖掉java初级Book book4 = new Book("汇编",22.5);book4.setBid(2);bs.updateBook(book4);//通过书名删除String bname = "java入门";bs.deleteAllBooks(bname);//模糊查询书名带有”java“的书List<Book> books = bs.findBooks("java");for (Book book : books) {System.out.println(book);}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/13676.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

2024 微信支付公钥 JAVA完整代码参考

需要用到的链接&#xff1a; 微信支付公钥使用介绍 - 平台证书 | 微信支付商户文档中心 GitHub - wechatpay-apiv3/wechatpay-java: 微信支付 APIv3 的官方 Java Library 谨记 如果有疑问 多看几遍 wechatpay-java的readme 和 example 创建预支付 Overridepublic ResultBean&…

CondaError: Run ‘conda init‘ before ‘conda activate‘解决办法

已经执行了conda init&#xff0c;但是还是会报错CondaError: Run ‘conda init’ before ‘conda activate’ 原因&#xff1a;权限不够 解决办法&#xff1a;以管理员身份运行cmd&#xff0c;然后进入要操作的文件夹下&#xff0c;重新执行 conda init 和 conda activate 就可…

边缘计算与推理算力:智能时代的加速引擎

在数据量爆炸性增长的今天&#xff0c;边缘计算与推理算力正成为推动智能应用的关键力量。智能家居、自动驾驶、工业4.0等领域正在逐步从传统的云端计算转向边缘计算&#xff0c;而推理算力的加入&#xff0c;为边缘计算提供了更强的数据处理能力和实时决策能力。本文将探讨边缘…

【Python TensorFlow】进阶指南(续篇二)

在前面的文章中&#xff0c;我们详细探讨了TensorFlow在实际应用中的高级功能和技术细节。本篇将继续深入探讨一些前沿话题&#xff0c;包括但不限于分布式训练、混合精度训练、神经架构搜索&#xff08;NAS&#xff09;、模型微调以及在实际项目中的最佳实践等&#xff0c;帮助…

JAVA后端生成图片滑块验证码 springboot+js完整案例

前言 现在大部分网部都是图片滑块验证码&#xff0c;这个得要与后端联动起来才是确保接口安全性 通过我们系统在发送手机短息时都会选进行滑块验证&#xff0c;但是我们要保证发送短息接口的全安&#xff0c;具体路思如下 那么这个滑块的必须是与后端交互才能保证安全性&…

机器学习—高级优化方法

梯度下降是机器学习中广泛应用的优化算法&#xff0c;像线性回归和逻辑回归以及神经网络的早期实现&#xff0c;现在有一些其他的优化算法&#xff0c;为了最小化成本函数&#xff0c;甚至比梯度下降的效果更好&#xff0c;这种算法可以用来帮助训练神经网络&#xff0c;比梯度…

【Vue3】知识汇总,附详细定义和源码详解,后续出微信小程序项目(3)

快速跳转&#xff1a; 我的个人博客主页&#x1f449;&#xff1a;Reuuse博客 新开专栏&#x1f449;&#xff1a;Vue3专栏 参考文献&#x1f449;&#xff1a;uniapp官网 免费图标&#x1f449;&#xff1a;阿里巴巴矢量图标库 ❀ 感谢支持&#xff01;☀ 前情提要 &#x…

模型减肥秘籍:模型压缩技术 CNN基础

这里是Datawhale的组队学习活动&#xff0c;主要介绍的是模型压缩技术。后续将以CNN网络为基础点&#xff0c;带领大家领略模型压缩的魅力。首先是回顾一下一些关于CNN的基础知识。 参考链接&#xff1a; 模型减肥秘籍&#xff1a;模型压缩技术-课程详情 | Datawhale datawh…

Ollama的安装以及大模型下载教程

简介 Ollama是一个开源的大型语言模型服务工具&#xff0c;它帮助用户快速在本地运行大模型。通过简单的安装指令&#xff0c;用户可以执行一条命令就在本地运行开源大型语言模型&#xff0c; Ollama极大地简化了在Docker容器内部署和管理LLM的过程&#xff0c;使得用户能够快…

Mysql前言

文章目录 Mysql 数据库简介SQL 基础语法什么是 SQL语句SQL 的作用SQL 语句的分类SQL 通用语法查询状态 &#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Mysql专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年11月12日18点20分 SQL是数据库…

Spring Boot编程训练系统:设计与实现要点

5系统详细实现 5.1 管理员模块的实现 5.1.1 用户信息管理 管理员对用户信息修改删除以及查询操作。具体界面的展示如图5.1所示。 图5.1 用户信息管理界面 5.1.2 题库资源管理 系统管理员可以对题库资源信息进行添加&#xff0c;修改&#xff0c;删除以及查询操作。具体界面如…

Xcode 16 使用 pod 命令报错解决方案

原文请点击这个跳转 一、问题现象&#xff1a; 有人会遇到 Xcode 升级到 16 后&#xff0c;新建应用然后使用 pod init 命令会报错如下&#xff1a; Stack Ruby : ruby 3.3.5 (2024-09-03 revision ef084cc8f4) [x86_64-darwin23]RubyGems : 3.5.22Host : macOS 15.0 (24A335…

hive中windows子句的使用

概述 1&#xff0c;windows子句是对窗口的结果做更细粒度的划分 2、windows子句中有两种方式 rows &#xff1a;按照相邻的几行进行开窗 range&#xff1a;按照某个值的范围进行开窗 使用方式 (rows | range) between (UNBOUNDED | [num]) PRECEDING AND ([num] PRECEDING…

Unet++改进24:添加DualConv||轻量级深度神经网络的双卷积核

本文内容:添加DualConv 目录 论文简介 1.步骤一 2.步骤二 3.步骤三 4.步骤四 论文简介 卷积神经网络(CNN)架构通常对内存和计算要求很高,这使得它们在硬件资源有限的嵌入式系统中不可行。 我们提出了双卷积核(DualConv)来构建轻量级深度神经网络。DualConv结合3 3和1…

【Vue3】知识汇总,附详细定义和源码详解,后续出微信小程序项目(4)

快速跳转&#xff1a; 我的个人博客主页&#x1f449;&#xff1a;Reuuse博客 新开专栏&#x1f449;&#xff1a;Vue3专栏 参考文献&#x1f449;&#xff1a;uniapp官网 免费图标&#x1f449;&#xff1a;阿里巴巴矢量图标库 ❀ 感谢支持&#xff01;☀ 前情提要 &#x…

微信小程序_小程序视图与逻辑_day3

一、目标 A. 能够知道如何实现页面之间的导航跳转 B. 能够知道如何实现下拉刷新效果 C. 能够知道如何实现上拉加载更多效果 D. 能够知道小程序中常用的生命周期 二、目录 A. 页面导航 B. 页面事件 C. 生命周期 D. WXS脚本 E. 案例-本地生活&#xff08;列表页面&#xff09;…

springboot社团服务系统的设计与实现,计算机毕业设计项目源码316,计算机毕设程序(LW+开题报告、中期报告、任务书等全套方案)

摘 要 社会发展日新月异&#xff0c;用计算机应用实现数据管理功能已经算是很完善的了&#xff0c;但是随着移动互联网的到来&#xff0c;处理信息不再受制于地理位置的限制&#xff0c;处理信息及时高效&#xff0c;备受人们的喜爱。本次开发一套社团服务系统有管理员&#x…

Linux服务管理-kerberos

Kerberos 官网文档‘&#xff1a;Kerberos&#xff1a;网络身份验证协议 (mit.edu) 基本概念&#xff1a;Kerberos基本概念及原理汇总-腾讯云开发者社区-腾讯云 (tencent.com) kerberos概述 Kerberos是一种计算机网络认证协议&#xff0c;由麻省理工学院&#xff08;MIT&#x…

区块链技术在游戏行业的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 区块链技术在游戏行业的应用 区块链技术在游戏行业的应用 区块链技术在游戏行业的应用 引言 区块链技术概述 定义与原理 发展历程…

MooseFS (MFS) 分布式对象存储

一、MFS 优越特性 Free (GPL): 通用文件系统&#xff0c;开源免费。在线扩容: 体系架构具有极强的可伸缩性&#xff0c;支持在线扩容。部署简单。高可用性: 支持设置任意文件冗余(数据分区)程度&#xff0c;提供比RAID10更高的冗余级别&#xff0c;同时不会影响读写性能&#…