基于JDBC的书库系统(MySQL)

ops/2024/11/15 0:17:29/

一、创建数据库中的表

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.ppmy.cn/ops/133252.html

相关文章

Oracle 聚集因子factor clustering

文章目录 聚集因子(Factor clustering)举例说明查询聚集因子聚集因子的优化结论 最近发现突然忘记聚集因子的原理了&#xff0c;故整理记录一下 聚集因子(Factor clustering) 在Oracle中&#xff0c;聚集因子&#xff08;Clustering Factor&#xff09;用于衡量数据在表中存储…

Linux环境基础开发工具的使用_yum源_vim_Git控制器

目录 本节目标&#xff1a; 一、Linux 软件包管理器 yum 1.什么是软件包 2.关于 rzsz 3.注意事项 4.查看软件包 5.注意事项: 6.如何安装软件 说到这里&#xff0c;就可以取百度上康康有哪些好玩的指令&#xff1a; 二、Linux开发工具 Linux编辑器-vim使用 1. vim的基…

恒流数显驱动数显LED驱动芯片VK16D32

产品品牌&#xff1a;永嘉微电/VINKA 产品型号&#xff1a;VK16D32 封装形式&#xff1a;SSOP24L 概述 VK16D32是一种恒流数码管或点阵LED驱动控制专用芯片&#xff0c;内部集成有数据锁存器、LED 恒流驱动模块等电路。可以通过寄存器配置&#xff0c;调节扫描的位数&#…

Spring Boot 多环境开发配置详解:Profiles 的使用指南

目录 前言1. Profiles 简介1.1 什么是 Profiles&#xff1f;1.2 Profiles 的应用场景 2. 单文件配置方式2.1 使用三横杠 --- 分隔配置2.2 指定哪个环境的配置生效 3. 多文件配置方式3.1 配置文件的创建与命名3.2 多文件配置的优点 4. Profiles 分组管理4.1 Profile 分组的配置4…

Docker 安装Immich教程

Immich 是一个开源的自托管照片和视频管理平台,专为帮助用户存储、管理、和分享个人媒体库而设计。Immich 的目标是提供一个类似 Google Photos 的替代方案,但不依赖于第三方服务,用户可以完全控制自己的数据。 本章教程,记录如何用Docker部署安装Immich,使用的操作系统的…

PHP爬虫快速获取京东商品详情(代码示例)

在当今互联网时代&#xff0c;数据的重要性不言而喻。对于电商领域来说&#xff0c;获取商品信息是数据分析、市场研究和价格监控的基础。本文将介绍如何使用PHP编写一个简单的爬虫&#xff0c;以快速获取京东商品的详情信息。 1. 概述 京东是中国领先的电商平台之一&#xff…

微服务架构面试内容整理-监控与追踪-Zipkin

Zipkin 是一个开源的分布式追踪系统,用于帮助开发者监控和跟踪请求在微服务系统中的流动。它提供了请求的可视化跟踪,以识别性能瓶颈和诊断问题。以下是 Zipkin 的主要特点、工作原理和使用场景: 主要特点 1. 分布式追踪: Zipkin 通过跟踪跨越不同微服务的请求路径,帮助开…

大数据常见面试题及答案(Linux、Zookeeper、Hadoop、Hive)

技术问答题目 一、Linux 1.如何给⽂件(⽂件夹)分配读r、w、x的操作权限&#xff1f; 2. vi 编辑器的常⽤命令有哪些&#xff1f; 3.Linux 中⽂件的操作权限分为⼏种&#xff1f; 4.Linux 中实时查看日志的方法 5. Linux查看内存、磁盘存储、io 读写、端口占用、进程等命…