黑马程序员技术交流社区

标题: 【黑马程序员济南】小鲁哥哥白话笔记-管家婆项目(二) [打印本页]

作者: 小鲁哥哥    时间: 2017-11-9 14:49
标题: 【黑马程序员济南】小鲁哥哥白话笔记-管家婆项目(二)

小鲁哥哥白话笔记-管家婆项目

今天我们接着来通过管家婆这个小案例熟悉一下我们之前的所学知识,上一篇主要是聊的整个项目的搭建和所需要做的前期工作,今天我们讲一讲具体的代码实现。
实现查询所有账务的控制,业务层的实现
A: 实现查询所有账务的控制,业务层的实现
a: 案例核心代码
a: cn.itcast.gjp.dao包中创建ZhangWuDao类
           
[Java] 纯文本查看 复制代码
 /*
             *  实现对数据表 gjp_zhangwu 数据增删改查操作
             *  dbuils工具类完成,类成员创建QueryRunner对象,指定数据源
             */
            public class ZhangWuDao {
                private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                /*
                 * 定义方法,查询数据库,获取所有的账务数据
                 * 方法,由业务层调用
                 * 结果集,将所有的账务数据,存储到Bean对象中,存储到集合中
                 */
                public List<ZhangWu> selectAll(){                    
                    return null;
                }
            }

b: cn.itcast.gjp.service包中创建ZhangWuService类
               
[Java] 纯文本查看 复制代码
/*
                 *  业务层类
                 *  接收上一层,控制层controller的数据
                 *  经过计算,传递给dao层,操作数据库
                 *  调用dao层中的类,类成员位置,创建Dao类的对象
                 */
                public class ZhangWuService {
                    private ZhangWuDao dao = new ZhangWuDao();
                    /*
                     *  定义方法,实现查询所有的账务数据
                     *  此方法,由控制层调用, 去调用dao层的方法
                     *  返回存储ZhangWu对象的List集合
                     */
                    public List<ZhangWu> selectAll(){
                        return dao.selectAll();
                    }
                }

c: cn.itcast.gjp.controller包中建立ZhangWuController类
               
[Java] 纯文本查看 复制代码
 /*
                 *  控制器层
                 *  接收视图层的数据,数据传递给service层
                 *  成员位置,创建service对象
                 */
                public class ZhangWuController {
                    private ZhangWuService service = new ZhangWuService();        
                    /*
                     * 控制层类定义方法,实现查询所有的账务数据
                     * 方法由试图层调用,方法调用service层
                     */
                    public List<ZhangWu> selectAll(){
                        return service.selectAll();
                    }                    
                }

            
实现查询所有账务的dao层的实现
A: 实现查询所有账务的dao层的实现
a: 案例核心代码
a: cn.itcast.gjp.dao包中创建ZhangWuDao类selectAll方法
[Java] 纯文本查看 复制代码
 /*
             *  实现对数据表 gjp_zhangwu 数据增删改查操作
             *  dbuils工具类完成,类成员创建QueryRunner对象,指定数据源
             */
            public class ZhangWuDao {
                private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                /*
                 * 定义方法,查询数据库,获取所有的账务数据
                 * 方法,由业务层调用
                 * 结果集,将所有的账务数据,存储到Bean对象中,存储到集合中
                 */
                public List<ZhangWu> selectAll(){
                    try{
                        //查询账务数据的SQL语句
                            String sql = "SELECT * FROM gjp_zhangwu";
                            //调用qr对象的方法,query方法,结果集BeanListHandler
                            List<ZhangWu> list = qr.query(sql, new BeanListHandler<>(ZhangWu.class));
                            return list;
                        }catch(SQLException ex){
                            System.out.println(ex);
                            throw new RuntimeException("查询所有账务失败");
                        }
                }
            }

        
实现查询所有账务的view层的实现
    * A: 实现查询所有账务的view层的实现
        * a: 案例核心代码
            * cn.itcast.gjp.view包中建立MainView类selectAll方法
            
[Java] 纯文本查看 复制代码
/*
              * 定义方法,实现查询所有的账务数据
              */
             public void selectAll(){
                 //调用控制层中的方法,查询所有的账务数据
                 List<ZhangWu> list = controller.selectAll();
                //输出表头
                 System.out.println("ID\t\t类别\t\t账户\t\t金额\t\t时间\t\t说明");
                 //遍历集合,结果输出控制台
                 for(ZhangWu zw : list){
                     System.out.println(zw.getZwid()+"\t\t"+zw.getFlname()+"\t\t"+zw.getZhanghu()+"\t\t"+
                     zw.getMoney()+"\t\t"+zw.getCreatetime()+"\t"+zw.getDescription());
                 }
             }


实现条件查询账务的菜单实现
    * A: 实现条件查询账务的菜单实现
        * a: 案例核心代码
            * cn.itcast.gjp.view包中建立MainView类select方法
            
[Java] 纯文本查看 复制代码
 /*
              * 定义方法,实现条件查询账务数据
              * 提供用户的输入日期,开始日期结束日期
              * 就2个日期,传递到controller层
              * 调用controller的方法,传递2个日期参数
              * 获取到controller查询的结果集,打印出来
              */
             public void select(){
                 System.out.println("选择条件查询,输入日期格式XXXX-XX-XX");
                 Scanner sc = new Scanner(System.in);
                 System.out.print("请输入开始日期:");
                 String startDate = sc.nextLine();
                 System.out.print("请输入结果日期:");
                 String endDate = sc.nextLine();
                 //调用controller层的方法,传递日期,获取查询结果集
                 
             }

            
实现条件查询账务的控制层,业务层实现
    * A: 实现条件查询账务的控制层,业务层实现
        * a: 案例核心代码
            * a: cn.itcast.gjp.dao包中创建ZhangWuDao类
              
[Java] 纯文本查看 复制代码
  /*
                 *  实现对数据表 gjp_zhangwu 数据增删改查操作
                 *  dbuils工具类完成,类成员创建QueryRunner对象,指定数据源
                 */
                public class ZhangWuDao {
                    private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                    /*
                     * 定义方法,查询数据库,带有条件去查询账务表
                     * 由业务层调用,查询结果集存储到Bean对象,存储到List集合
                     * 调用者传递2个日期字符串
                     */
                    public List<ZhangWu> select(String startDate,String endDate){
                        return null;
                    }
                }

            * b: cn.itcast.gjp.service包中创建ZhangWuService类
               
[Java] 纯文本查看 复制代码
/*
                 *  业务层类
                 *  接收上一层,控制层controller的数据
                 *  经过计算,传递给dao层,操作数据库
                 *  调用dao层中的类,类成员位置,创建Dao类的对象
                 */
                public class ZhangWuService {
                    private ZhangWuDao dao = new ZhangWuDao();
                    /*
                     * 定义方法,实现条件查询账务
                     * 方法由控制层调用,传递2个日期字符串
                     * 调用dao层的方法,传递2个日期字符串
                     * 获取到查询结果集
                     */
                    public List<ZhangWu> select(String startDate,String endDate){
                        return dao.select(startDate, endDate);
                    }
                }

            * c: cn.itcast.gjp.controller包中建立ZhangWuController类
               
[Java] 纯文本查看 复制代码
 /*
                 *  控制器层
                 *  接收视图层的数据,数据传递给service层
                 *  成员位置,创建service对象
                 */
                public class ZhangWuController {
                    private ZhangWuService service = new ZhangWuService();        
                    /*
                     * 定义方法,实现条件查询账务
                     * 方法由试图层调用,传递两个日期的字符串
                     * 调用service层的方法,传递两个日期字符串,获取结果集
                     * 结果集返回给试图
                     */
                    public List<ZhangWu> select(String startDate,String endDate){
                        return service.select(startDate, endDate);
                    }                    
                }

实现条件查询账务的dao层实现
    * A: 实现条件查询账务的dao层实现
        * a: 案例核心代码
            * a: cn.itcast.gjp.dao包中创建ZhangWuDao类select方法
               
[Java] 纯文本查看 复制代码
 /*
                 *  实现对数据表 gjp_zhangwu 数据增删改查操作
                 *  dbuils工具类完成,类成员创建QueryRunner对象,指定数据源
                 */
                public class ZhangWuDao {
                    private QueryRunner qr = new QueryRunner(JDBCUtils.getDataSource());
                    /*
                     * 定义方法,查询数据库,带有条件去查询账务表
                     * 由业务层调用,查询结果集存储到Bean对象,存储到List集合
                     * 调用者传递2个日期字符串
                     */
                    public List<ZhangWu> select(String startDate,String endDate){
                        try{
                            //拼写条件查询的SQL语句
                            String sql = "SELECT * FROM gjp_zhangwu WHERE createtime BETWEEN ? AND ?";
                            //定义对象数组,存储?占位符
                            Object[] params = {startDate,endDate};
                            //调用qr对象的方法query查询数据表,获取结果集
                            return qr.query(sql, new BeanListHandler<>(ZhangWu.class),params);
                        }catch(SQLException ex){
                            System.out.println(ex);
                            throw new RuntimeException("条件查询失败");
                        }
                    }
                }


实现条件查询账务的view层实现
    * A: 实现条件查询账务的view层实现
        * a: 案例核心代码
            * cn.itcast.gjp.view包中建立MainView类selectAll方法优化、抽取print方法、select方法
           
[Java] 纯文本查看 复制代码
 /*
              * 定义方法,实现查询所有的账务数据
              */
             public void selectAll(){
                 //调用控制层中的方法,查询所有的账务数据
                 List<ZhangWu> list = controller.selectAll();
                 if(list.size()!=0)
                     print(list);
                 else
                     System.out.println("没有查询到数据");
             }
            
             /*
              * 定义方法,实现条件查询账务数据
              * 提供用户的输入日期,开始日期结束日期
              * 就2个日期,传递到controller层
              * 调用controller的方法,传递2个日期参数
              * 获取到controller查询的结果集,打印出来
              */
             public void select(){
                 System.out.println("选择条件查询,输入日期格式XXXX-XX-XX");
                 Scanner sc = new Scanner(System.in);
                 System.out.print("请输入开始日期:");
                 String startDate = sc.nextLine();
                 System.out.print("请输入结果日期:");
                 String endDate = sc.nextLine();
                 //调用controller层的方法,传递日期,获取查询结果集
                 List<ZhangWu> list = controller.select(startDate, endDate);
                 if(list.size()!=0)
                     print(list);
                 else
                     System.out.println("没有查询到数据");
             }
            
             //输出账务数据方法,接收List集合,遍历集合,输出表格
             private void print(List<ZhangWu> list) {
                    //输出表头
                     System.out.println("ID\t\t类别\t\t账户\t\t金额\t\t时间\t\t说明");
                     //遍历集合,结果输出控制台
                     for(ZhangWu zw : list){
                         System.out.println(zw.getZwid()+"\t\t"+zw.getFlname()+"\t\t"+zw.getZhanghu()+"\t\t"+
                         zw.getMoney()+"\t\t"+zw.getCreatetime()+"\t"+zw.getDescription());
                     }
                }
好了,今天先讲到这里,讲了讲部分业务层的代码实现和业务逻辑,关键的是还需要同学在平常多多练习,毕竟熟能生巧!!
    【黑马程序员济南】小鲁哥哥全学科技术整合帖(一贴在手!天下我有!)
如果你想了解更多黑马课程,如果你想加入黑马这个大家庭学习先进技术,光交天下好友,那就快来吧!
     黑马程序员济南中心联系电话:0531-55696830






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2