练习-Java代码实现书籍管理系统

本文介绍了一个使用Java实现的书籍管理系统,通过JDBC操作数据库,包括创建表、项目结构、日志配置、数据库连接配置、属性文件读取、DBUtil工具类、RowMapper接口以及出版社、书籍和客户端管理模块的详细实现。
摘要由CSDN通过智能技术生成

一、项目需求

已知如下两个表:
publisher:id、name(唯一)、address
book:id、isbn、name(唯一)、publisher_id

实现如下功能:

欢迎进入书籍管理系统
1、出版社管理:增、删(name)、改(name)、查(name)
2、书籍管理:增、删(name)、改(name)、查(name)
3、退出

二、创建表

//创建publisher表
CREATE TABLE `publisher` (
	`id` char(36) NOT NULL,
	`name` varchar(16) NOT NULL,
	`address` varchar(100) NOT NULL,
	PRIMARY KEY (`id`),
	UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
//创建book表
CREATE TABLE `book` (
	`id` char(36) NOT NULL,
	`name` varchar(16) NOT NULL,
	`isbn` char(11) NOT NULL,
	`publisher_id` char(36) DEFAULT NULL,
	PRIMARY KEY (`id`),
	UNIQUE KEY `name` (`name`),
	UNIQUE KEY `isbn` (`isbn`),
	KEY `publisher_id` (`publisher_id`),
	CONSTRAINT `book_ibfk_1` FOREIGN KEY (`publisher_id`) REFERENCES `publisher` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

三、项目结构

在这里插入图片描述

四、log4j.properties

因为在控制台打印的信息有限,所以需要把相关的日志文件保存在一个日志文件中,便于查找问题。导入log4j的jar包并配置log4j.properties。

# DEBUG设置输出日志级别,由于为DEBUG,所以ERROR、WARN和INFO 级别日志信息也会显示出来
log4j.rootLogger=DEBUG,Console,RollingFile

#将日志信息输出到控制台
log4j.appender.Console=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern= [%-5p]-[%d{yyyy-MM-dd HH:mm:ss}] -%l -%m%n
#将日志信息输出到操作系统D盘根目录下的log.log文件中
log4j.appender.RollingFile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File=D://log.log
log4j.appender.RollingFile.layout=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern=%d [%t] %-5p %-40.40c %X{traceId}-%m%n

五、db.properties

使用JDBC连接数据库的时候有时候需要修改连接的配置信息,如果每次修改都更改源代码不利于项目的维护,所以这里是使用db.properties文件把JDBC的配置信息保存在其中。

jdbc.driverClass=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/test
jdbc.username=root
jdbc.password=0314

六、PropertiesUtil.java

上面已经把数据库的相关配置信息保存在了db.properties文件中。然后再使用一个PropertiesUtil类读取db.properties文件。

/**
 * 获取db.properties文件的工具类
 *
 * @author Administrator
 */
public class PropertiesUtil {

	private static Properties properties = new Properties();
	static {
		InputStream inputStream = PropertiesUtil.class.getClassLoader().getResourceAsStream("db.properties");
		try {
			properties.load(inputStream);
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 依据key获取value值
	 *
	 * @author Administrator
	 */
	public String getValue(String key) {
		return properties.getProperty(key);
	}
}

七、DBUtil.java

在上面已经获得了数据库连接的配置信息,创建一个DBUtil类来对数据库进行增删改查。

/**
 * 数据库工具类
 *
 * @author Administrator
 */
public class DBUtil {
	
	private static Logger logger = Logger.getLogger(DBUtil.class);
	static Connection connection = null;
	static Statement statement = null;
	static ResultSet result = null;
	static PreparedStatement pStatement = null;
	
	/**
	 * 加载驱动
	 */
	static {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			logger.debug(e.getMessage(), e);
		}
	}
	
	/**
	 * 获取连接
	 *
	 * @author Administrator
	 */
	private static Connection getConnection() {
		try {
			PropertiesUtil pUtil = new PropertiesUtil();
			String url = pUtil.getValue("jdbc.url");
			String username = pUtil.getValue("jdbc.username");
			String password = pUtil.getValue("jdbc.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值