java项目01 管家婆项目简单的增删改查
来源:互联网 发布:js如何理解面向对象 编辑:程序博客网 时间:2024/05/25 18:11
l apache的commons组件:
Ø commons-dbutils-1.4.jar:封装并简化了JDBC;
Ø commons-dbcp-1.4.jar:apache commons提供的数据库连接池组件,命名为DBCP;
Ø commons.pool-1.3.jar:DBCP连接池依赖该jar包;
l mysql-connector-java-5.1.28-bin.jar:MySQL的JDBC驱动包,用JDBC连接MySQL数据库必须使用该JAR包。
复制进lib 包 ->buildpath
二.创建数据库
1.创建数据库:create database jewelry;
2.创建数据库表:
CREATE TABLE jew_zhangwu(
jwid INT PRIMARY KEY AUTO_INCREMENT,
jwname VARCHAR(200),
jwmoney DOUBLE,
jwplace VARCHAR(200),
jwcreatetime Date,
jwDescription VARCHAR(200)
);
3.填入相关数据:
INSERT INTO jew_zhangwu(jwid,jwname,jwmoney,jwplace,jwcreatetime,jwDescription)VALUES(1,'红钻石','9999','南非','2017-09-09','买来送给老妈');
三.分包 分层
l view层作用:视图层,即项目中的界面
l controller层作用:控制层,获取界面上的数据,为界面设置数据;将要实现的功能交给业务层处理
l service层作用:业务层,功能的实现,与controller控制层和数据访问层DAO交互,将对数据库的操作交给DAO数据访问层来处理
l dao层作用:数据访问层,用来操作数据库表的数据
l db数据库:这里指MySQL
l domain实体包:存放JavaBean
l tools工具包:存放项目中使用到的工具类
l test测试包:存放项目功能测试的代码
1. 使用Eclipse创建Java工程,命名为gjp
2. 创建工程包
Ø cn.itcast.gjp.app:存放main方法类;
Ø cn.itcast.gjp.domain:存放JavaBean;
Ø cn.itcast.gjp.view:存放界面,及表现层类;
Ø cn.itcast.gjp.service:存放业务层类;
Ø cn.itcast.gjp.dao:存放数据访问层类;
Ø cn.itcast.gjp.tools:存放工具类
四.编写工具类 创建连接池
public class JDBCUtils {
//创建basicdatasource 对象
private static BasicDataSource datasource = new BasicDataSource();
//静态代码块 实现必要参数设置
static{
datasource.setDriverClassName("com.mysql.jdbc.Driver");
datasource.setUrl("jdbc:mysql://localhost:3306/mybase");
datasource.setUsername("root");
datasource.setPassword("123");
datasource.setMaxActive(10);//最大激活
datasource.setMaxIdle(5);//最大空闲
datasource.setMinIdle(2);//最小空闲
datasource.setInitialSize(10);//数据源
}
/*返回连继池对象*/
public static DataSource getDataSpirce(){//DataSource接口
return datasource;
}
}
四.开始实现功能模块
1、在domain 包中建立封装信息的javabean 自动生成空参有参构造方法 tostring get/set方法
2、 在dao包中,创建类ZhangWuDao.java,给ZhangWuDao类添加一个成员变量QueryRunner对象,因为我们使用dbutils来操作数据库。
private QueryRunner qr=new QueryRunner(JDBCUtils.getDataSpirce());
3、在service包中 创建zhangwuservice.java
给ZhangWuService类添加一个类型为ZhangWuDao的成员变量,因为service依赖dao
private zhangwudao dao =new zhangwudao();
4、在control包中 创建zhangwucontrol类
private ZhangWuService service=new ZhangWuService();
5、在view包中创建MainView类 添加一个
private ZhangWuController controller= new ZhangWuController();
五、功能的界面菜单
界面菜单的完成,是项目编写的第一步。我们通过输出语句,完成界面菜单的输出,之后再根据输入的功能序号,进行对应功能的调用。
1 编写MainView类run方法
1.1 完成功能界面菜单显示
1.2 接收键盘输入的功能选项
1.3 根据选项值,调用对应的功能方法
2 编写MainApp类的main主方法
2.1 调用MainView类中run方法,实现将程序执行起来,显示功能界面菜单。
1.在View包中编写界面run方法
//创建Scanner类的对象 反复键盘的输入
Scanner sc=new Scanner(System.in);
while (true) {
System.out.println("---------------管家婆家庭记账软件---------------");
System.out.println("1.添加账务 2.编辑账务 3.删除账务 4.查询账务 5.退出系统");
System.out.println("请输入要操作的功能序号[1-5]:");
//接收用户的菜单选择
int choose=sc.nextInt();
//对选择的惨淡判断 调用不同的功能
switch(choose){
case 1:
//选择添加账务 调用添加账务的方法
addZhangWu();
break;
case 2:
//选择编辑账务,调用编辑账务的方法
editZhangWu();
break;
case 3:
deleteZhangWu();
//选择删除账务的方法
break;
case 4:
//选择的是 查询账务 调用查询
selectZhangwu();
break;
case 5:
System.exit(0);
break;
}
2、在mainapp中 调用run 方法
new MainView().run();
六.查询信息功能实现:
1.编写view界面层相关代码
private void selectzhangwu() {
System.out.println("请选择查询方式:1:查询所有 2:条件查询");
Scanner sc=new Scanner(System.in);
int cho =sc.nextInt();
switch(cho){
case 1:
SelectAll();
break;
case 2:
break;
}
}
private void SelectAll() {
//这里调用控制层中的方法 查询所有账务的数据
}
2.去账务控制层中调用方法 实现查询数据
方法 由 view 层调用 所有在控制层写方法
public void selectAll(){}
3.F3进去 service 层 写方法
public void selectall(){}
4.service 再去调用dao层
public void SelectAll()
5.结果集要以什么形式传给控制台呢??
所以这里利用结果集 将所有的账务数据 存储到bean中 存储到集合中 所以方法返回值不是void 而是list集合
所以 改===>public List<ZhangWu> selectAll(){}
service改成 public List<ZhangWu> SelectAll(){
return dao.SelectAll();
}
control 改成
public List<ZhangWu>SelectAll(){
return service.SelectAll();
6.开始编写sql语句
public List<ZhangWu> SelectAll(){
try{
String sql="select * from jew_zhangwu";
//调用qr 结果list集合
List <ZhangWu> list=qr.query(sql, new BeanListHandler<>(ZhangWu.class));
return list;
}catch(SQLException ex){
System.out.println(ex);
throw new RuntimeException("账务添加失败");
}
}
7.view 层显示
private void SelectAll() {
List<ZhangWu> list =contrl.SelectAll();
//输出表头
System.out.println("ID\t珠宝名称\t珠宝价格\t珠宝产地\t创建时间\t备注");
//遍历集合 增强for
for(ZhangWu zw:list){
System.out.println(zw.getJwid()+"\t"+zw.getJwname()+"\t"+zw.getJwmoney()+"\t"+
zw.getJwplace()+"\t"+zw.getJwcreatetime()+"\t"+zw.getJwDescription());
}
}
条件查询:
1.System.out.println("查询条件为产地");
Scanner sc= new Scanner(System.in);
System.out.println("请输入产地");
String place=sc.nextLine();
2、control 层代码
public List<ZhangWu>Select(String place)
3.service 层代码
public List<ZhangWu>Select(String place)
4.dao层代码
public List<ZhangWu>Select(String place){
return null;
}
5.补齐代码
service 补 return dao.Select(place);
control 补 return service.select(place);
mainview 补 List<ZhangWu> list=contrl.Select(place);
6.回去dao 编写sql 语句
public List<ZhangWu>Select(String place){
try{
String sql="SELECT * FROM jew_zhangwu where jwplace=?";
//定义对象数组 存储?占位符
Object[] params={place};
//调用qr
return qr.query(sql, new BeanListHandler<>(ZhangWu.class),params);
}catch(SQLException ex){
System.out.println(ex);
throw new RuntimeException("账务添加失败");
}
}
7.抽取相同方法
System.out.println("ID\t珠宝名称\t珠宝价格\t珠宝产地\t创建时间\t备注");
//遍历集合 增强for
for(ZhangWu zw:list){
System.out.println(zw.getJwid()+"\t"+zw.getJwname()+"\t"+zw.getJwmoney()+"\t"+
zw.getJwplace()+"\t"+zw.getJwcreatetime()+"\t"+zw.getJwDescription());
}
alt+shift+m
加一个if语句判断
if(list.size()!=0)
print(list);
else
System.out.println("没数据");
添加账务功能
1.veiw层
private void addzhangwu() {
System.out.println("请输入珠宝名称:");
Scanner sc= new Scanner(System.in);
String jwname =sc.nextLine();
System.out.println("请输入珠宝价格:");
double jwmoney =sc.nextDouble();
System.out.println("请输入珠宝产地:");
String jwplace =sc.nextLine();
System.out.println("请输入买入时间:");
String jwcreatetime =sc.nextLine();
System.out.println("请输入相关描述:");
String jwDescription =sc.nextLine();
2.control层
public void addzhangwu(ZhangWu zw)
}
3.service
4.dao
补全相关代码
5.写SQL
public void addzhangwu(ZhangWu zw){
try{
String sql ="INSERT INTO jew_zhangwu(jwname,jwmoney,jwplace,jwcreatetime,jwDescription)values(?,?,?,?,?)";
Object[] params={zw.getJwname(),zw.getJwmoney(),zw.getJwplace(),zw.getJwcreatetime(),zw.getJwDescription()};
qr.update(sql, params);}
catch(SQLException ex){
System.out.println(ex);
throw new RuntimeException("账务添加失败");
}
6.回头完善view层
将用户输入的所有参数 封装成ZhangWu对象
ZhangWu zw=new ZhangWu(0, jwname, jwmoney, jwplace, jwcreatetime, jwDescription);
contrl.addzhangwu(zw);
编辑功能
与添加功能类似
删除功能
同上
- java项目01 管家婆项目简单的增删改查
- 关于项目的增删改查
- android实际项目中数据库的应用(增删改查)
- thinkPHP项目部署以及基本模型的增删改查
- jQuery在web项目中增删改查的应用
- java 项目ssh框架搭建的增删查改,带数据库文件
- Java without entity 实现在一个 control中写一个增删改查4个方法,而适用于整个项目的没有业务的所有增删改查。
- java简单的MySQL数据库连接增删改查
- Java、SQL Serve ----简单的增删查改
- 数据库---简单的使用Java操作数据库增删改查
- Java-Hibernate简单增删改查
- java Mysql简单增删改查
- 【java】-- JDBCDemo:连接,简单增删查改
- java小项目之管家婆
- sql的简单的增删改查
- Dom4j的增删改查简单使用
- Extjs tree 的简单增删改查
- Hibernate 简单的增删改查 示例
- 算法--360面试:使用递归实现:a0=1,a1=1;a2=a0+a1;a3=a1+a2...以此类推,求a30
- 进程与线程的区分
- 吐血推荐: 深入理解java 虚拟机
- js改变背景颜色有感
- 【POJ1823】Hotel
- java项目01 管家婆项目简单的增删改查
- 【剑指offer】面试题 29:顺时针打印矩阵
- 好开心 饭点前又AC一题
- Java 多线程(一)
- PAT 1036跟奥巴马一起编程
- ios对于fixed属性不兼容的解决方案
- 1.Eclipse搭建JFinal坏境(Jetty运行)
- 生僻姓(多音字姓)
- WebView中Settings积累