CSDN话题挑战赛第2期
参赛话题:学习笔记
更多文章,进入专栏阅读:(点击进入专栏)
【1】idea添加mysql-jar包
【2】使用IDEA连接数据库,执行增删改操作。
【3】IDEA连接数据库,执行查询操作,返回结果集并输出。
【4】JDBC实战 水果库存系统 [设计阶段]
【5】水果库存系统 [功能实现](接口实现类FruitDAOImpl的功能实现)
JDBC专栏,我们在前面的文章中学习了mysql-jar
包的导入,使用JDBC规范连接数据库
,以及JDBC对数据库进行增
、删
、改
、查
等常规操作。
接下来,就到检验学习成果的时刻了,我们将运用JDBC一系列常规操作,实现一个水果库存系统,将之前学到的知识融会贯通在一起…
水果库存系统的需求
是实现以下几个功能:
只要是更新
或者是查看
信息的功能,都需要我们去使用JDBC规范连接数据库来实现。
在一开始,我们先不考虑代码是否冗余的问题,第一目标是 实现需求
,基本功能实现之后再对代码进行优化
…
在项目工程中,我们需要创建一个Fruit
类,用于存放库存系统中每一种水果的信息;
每种水果都包含以下属性
:
因此,在Fruit
类中,我们需要为其设置对应的属性
,构造方法
,Get()
、Set()
方法,以及重写toString()
方法从而方便在需要查看水果库存信息时输出…
Fruit类的代码:
/**
* @author .29.
* @create 2022-09-22 22:15
*/
public class Fruit {
//属性
private Integer fid; //水果编号
private String fname; //水果名称
private Integer price; //水果单价
private Integer fcount;//库存数量
private String remark; //备注
//构造方法
public Fruit() {
}
public Fruit(int fid, String fname, int price, int fcount, String remark) {
this.fid = fid;
this.fname = fname;
this.price = price;
this.fcount = fcount;
this.remark = remark;
}
//对象get、set方法
public Integer getFid() {
return fid;
}
public void setFid(Integer fid) {
this.fid = fid;
}
public String getFname() {
return fname;
}
public void setFname(String fname) {
this.fname = fname;
}
public Integer getPrice() {
return price;
}
public void setPrice(Integer price) {
this.price = price;
}
public Integer getFcount() {
return fcount;
}
public void setFcount(Integer fcount) {
this.fcount = fcount;
}
public String getRemark() {
return remark;
}
public void setRemark(String remark) {
this.remark = remark;
}
//重写toString方法
@Override
public String toString() {
return fid +"\t\t\t"+ fname +"\t\t\t"+ price +"\t\t\t"+ fcount +"\t\t\t"+ remark;
}
}
准备好Fruit类之后,我们还需要准备一个菜单类Menu
,在菜单类中,需要显示菜单
的方法,还有需求实现
的方法。
有了这些方法,才能实现水果库存系统的功能:
showMainMenu()
showFruitList()
addFruit()
showFruitInfo()
delFruit()
exit()
在设计阶段,我们先准备好需要的结构,具体的功能代码实现可以放在下一阶段进行。
Menu类初版的代码(未实现功能):
/**
* @author .29.
* @create 2022-09-22 22:19
*
*/
//菜单类
public class Menu {
//显示主菜单
public int showMainMenu(){
System.out.println("==================水果库存界面=================");
System.out.println("1.查看水果库存列表");
System.out.println("2.添加水果库存信息");
System.out.println("3.查看特定水果库存信息");
System.out.println("4.水果下架");
System.out.println("5.退出");
System.out.println("==============================================");
System.out.print("请选择:");
int input = scan.nextInt();
return input;
}
//查看水果库存列表
public void showFruitList(){
return;
}
//添加水果库存信息--- 业务方法:添加库存记录
public void addFruit(){
return;
}
//查看指定水果库存信息
public void showFruitInfo(){
return;
}
//水果下架
public void delFruit(){
return;
}
//退出方法
public boolean exit(){
return true;
}
}
水果库存系统的使用,是需要客户通过选择
菜单功能选项,系统再运行
客户需要使用的功能。所以我们还需要一个客户类Client
,实现先选择再运行:
Client类设计代码:
import com.haojin.fruit.controller.Menu;//导入项目工程中设计的Menu类
/**
* @author .29.
* @create 2022-09-22 22:21
*/
public class Client {
public static void main(String[] args) {
Menu m = new Menu(); //创建Menu类的对象
boolean flag = true;
while(flag){
//显示主菜单
int slt = m.showMainMenu();
switch(slt){
case 1:
//查看列表
m.showFruitList();
break;
case 2:
//添加
m.addFruit();
break;
case 3:
//查看指定信息
m.showFruitInfo();
break;
case 4:
//下架
m.delFruit();
break;
case 5:
//退出
flag = m.exit();
break;
default:
System.out.println("系统没有此项功能,请重新选择吧...");
break;
}
}
System.out.println("感谢使用");
}
}
DAO(Data Access Object)是一个为数据库或其他持久化机制提供抽象接口
的对象,在不暴露底层持久化实现细节的前提下提供各种数据访问操作
。
具体来说,就是设计一个接口
,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且创建接口实现类
。
在接口中,我们需要准备抽象方法,对应了JDBC对数据库的不同操作:
getFruitList();
addFruit(Fruit fruit);
UpdateFruit(Fruit fruit);
getFruitByFname(String fname);
DelFruit(String fname);
import com.haojin.fruit.pojo.Fruit;
import java.util.List;
/**
* @author .29.
* @create 2022-09-23 17:38
*/
public interface FruitDAO {
//查询库存列表
List<Fruit> getFruitList();
//新增库存
boolean addFruit(Fruit fruit);
//修改库存
boolean UpdateFruit(Fruit fruit);
//删除库存
boolean DelFruit(String fname);
//查询指定库存
Fruit getFruitByFname(String fname);
}
实现接口FruitDAO
,重写接口中的抽象方法,重写方法中包含了底层持久化实现细节,这里,实现类方法都是单精度方法,方法的颗粒密度不能再被划分了。
上文设计的Menu
类中的方法实现中,需要引用这里的实现类方法,使用当中JDBC连接,操作数据库的功能。
FruitDAOImpl实现类代码(不包含实现代码):
import com.haojin.fruit.dao.FruitDAO;
import com.haojin.fruit.pojo.Fruit;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/**
* @author .29.
* @create 2022-09-23 17:56
*/
public class FruitDAOImpl implements FruitDAO {
@Override
public List<Fruit> getFruitList() {
return null;
}
@Override
public boolean addFruit(Fruit fruit) throws SQLException {
return false;
}
@Override
public boolean UpdateFruit(Fruit fruit) {
return false;
}
@Override
public boolean DelFruit(String fname) {
return false;
}
@Override
public Fruit getFruitByFname(String fname) {
return null;
}
}
至此,水果库存系统的 结构 就设计完成啦,接下来就是功能代码的实现。
⚽
求关注
⚽ 作者 .29. 的✔博客主页✔
您的点赞
,收藏
以及关注
是对作者最大的鼓励喔 ~~