1.需求
已知如下两个表:
publisher id name(唯一) address
book id isbn name publisher_id
欢迎进入书籍管理系统
1.出版社管理:增、删(name)、改(name)、查(name)
2.书籍管理:增、删(name)、改(name)、查(name)
3.退出
2.log4j.properties 为什么
3.db.properties 为什么
4.PropertiesUtil
5.DBUtil
6.IRowMapper
7.PublisherManager
8.BookManager
9.Client
一.首先在mysql数据库软件中建立如下两个表
create table publisher(
id char(36) primary key,
name varchar(24) unique,
address varchar(120)
)
create table book(
id char(36) primary key,
isbn varchar(12) unique,
name varchar(24),
publisher_id char(36),
foreign key(publisher_id) references publisher(id)
)
关于SQL语句中约束的知识在下面博客中提及过
https://blog.youkuaiyun.com/qq_44724446/article/details/90027794
https://blog.youkuaiyun.com/qq_44724446/article/details/90031272
log4j为什么用如何配置,查看
https://blog.youkuaiyun.com/qq_44724446/article/details/90044781
properties为什么用,如何配置,java代码的实现-封装的工具类PropertiesUtil查看
https://blog.youkuaiyun.com/qq_44724446/article/details/90048065
DBUtil和IRowMapper查看
https://blog.youkuaiyun.com/qq_44724446/article/details/89918464
当时未考虑到SQL注入的情况,所以补充代码,引入PreparedStatement接口的概念,
//关于防止sql注入的步骤参考如下
http://www.cnblogs.com/flei/p/6727520.html
创建36位UUID的工具类
import java.util.UUID;
public class StringUtil {
public static String getId() {
return UUID.randomUUID().toString();
}
}
创建用于出版社系统实现增删改查的封装类
import java.sql.ResultSet;
import java.util.Scanner;
public class PublisherManager {
static Scanner sc= new Scanner(System.in);
/**
* 出版社管理
*/
public static void pManager() {
System.out.println("请输入出版社管理操作:");
System.out.println("1.添加出版社信息");
System.out.println("2.删除出版社信息");
System.out.println("3.修改出版社信息");
System.out.println("4.查询出版社信息");
System.out.println("请输入操作,按enter键结束");
int option = sc.nextInt();
switch (option) {
case 1:
pInsert();
break;
case 2:
pDelete();
break;
case 3:
pUpdate();
break;
case 4:
pSelect();
break;
default:
System.out.println("Sorry,there is not the " + option + " option,请重新输入选择:");
break;
}
}
/**
* 添加出版社信息
*/
public static void pInsert() {
String id = StringUtil.getId();
System.out.println("请输入要添加的出版社的名字");
String name = sc.next();
if (new PublisherManager().exit(name)) {
// 判断出版社是否存在
System.out.println("出版社名字不允许重复,无法添加,操作停止");
return;
}
System.out.println("请输入要添加的出版社的地址");
String address = sc.next();
String sql = "insert into publisher (id,name,address) values (?,?,?)";
if (DButil.upDate(sql, id, name, address)) {
System.out.println("添加信息成功");
return;
}
System.out.println("系统错误,添加信息失败");
}
/**
* 删除出版社信息
*/
public static void pDelete() {
System.out.println("请输入要删除的出版社的名字");
String name = sc.next();
if (!new PublisherManager().exit(name)) {
// 判断出版社是否存在,不存在没办法删除
System.out.println("出版社名字不存在,无法删除,操作停止");
return;
}
String sql = "delete from publisher where name=?";
if (DButil.upDate(sql, name)) {
System