java项目01 管家婆项目简单的增删改查

来源:互联网 发布:js如何理解面向对象 编辑:程序博客网 时间:2024/05/25 18:11
.搭建环境 导入相关的配置文件

l apachecommons组件:

Ø commons-dbutils-1.4.jar:封装并简化了JDBC

Ø commons-dbcp-1.4.jarapache commons提供的数据库连接池组件,命名为DBCP

Ø commons.pool-1.3.jarDBCP连接池依赖该jar包;

l mysql-connector-java-5.1.28-bin.jarMySQLJDBC驱动包,用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          编写MainViewrun方法

1.1         完成功能界面菜单显示

1.2         接收键盘输入的功能选项

1.3         根据选项值,调用对应的功能方法

2          编写MainApp类的main主方法

2.1         调用MainView类中run方法,实现将程序执行起来,显示功能界面菜单。


1.在View包中编写界面run方法

public void 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);  



编辑功能

与添加功能类似

删除功能

同上



原创粉丝点击