• JAVA基础之项目分包


    个人理解:

      项目分层分包适合多人开发合作的,最好一个界面设置一个view,同时注释一定设置好,按照顺序:从前向后进行传递参数,从后向前进行传递返回值来进行判断是否真正的执行了sql语句(可以不返回),异常是在Service层处理,若是处理多个sql语句则也在Service层进行整合处理到一起。 

    一、作用:

      当程序规模小的时候,可以一个人全部完成;但程序规模大的时候,一个人难以完成,这时,要采用多人合作的方式来完成程序开发。

            多人合作方式将会碰到工作任务分配问题,这时我们会想,每个人负责完成项目的一块内容就可以了。那么,这一块块内容的划分,就需要我们采用分层(分包)的方式完成了。

            通过下图(用户注册功能)来讲解下,项目中常见的分层(分包)。

       

    1、view层作用: 视图层,即项目中的界面(输入、输出语句)

    2、controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理(向后面传值---对用户输入的信息进行封装,向后台请求)

    3、service层作用: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理(通常处理dao层抛出的异常)

    4、 dao层作用: 数据访问层, 用来操作数据库表的数据(JDBC负责和数据库打交道,返回的行号 row 不要这层处理)

    5、 db数据库: 这里指MySQL

    6、domain 实体包: 存放JavaBean(实体类,一个表一个类,最好创建的实体类与数据库里的表的名字和数量都一样)

    7、 tools工具包:存放项目中使用到的工具类(比如JDBC里的相同的部分封装成的工具类)

    8、test 测试包: 存放项目功能测试的代码(main方法)

    view层:

    package com.oracle.view;
    
    import java.util.ArrayList;
    import java.util.Scanner;
    
    import com.oracle.controller.GoodsController;
    import com.oracle.controller.UserController;
    import com.oracle.domain.Goods;
    
    public class MainView {
        private GoodsController goodsController=new GoodsController();
        private UserController userController=new UserController();
        //一级菜单
        public void firstshow(){
            System.out.println("========欢迎光临超市========");
            System.out.println("1.用户注册");
            System.out.println("2.用户登录");
            System.out.println("3.退出");
            System.out.println("请输入您的选择:");
        }
        
        //一级菜单功能
        public void show1(){
            while(true){
                firstshow();
                Scanner sc=new Scanner(System.in);
                int choose=sc.nextInt();
                //对用户输入的选择进行判断
                switch(choose){
                case 1://用户注册
                    break;
                case 2://用户登录
                    login();
                    break;
                case 3:
                    return;
                default:
                    System.out.println("您的输入有误,请重新输入:");
                    break;
                }
            }
        }
        //二级菜单页面
        public void secondshow(){
            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("请输入您的选择:");
        }
        //二级菜单功能页面
        public void show2(){
            while(true){
                secondshow();
                Scanner sc=new Scanner(System.in);
                int choose=sc.nextInt();
                switch(choose){
                case 1://新增商品
                    addGoods();
                    break;
                case 2://修改商品
                    updateGoods();
                    break;
                case 3://删除商品
                    deleteGoods();
                    break;
                case 4://查询商品
                    getGoods();
                    break;
                case 5:
                    return;//不能用exit
                default:
                    System.out.println("您的输入有误,请重新输入:");
                    break;
                
                }
            }
        }
        //新增商品页面
        public void addGoods(){
            System.out.println("========新增商品页面========");
            System.out.println("请输入新增商品的名称:");
            Scanner sc=new Scanner(System.in);
            String gname=sc.next();
            System.out.println("请输入商品价格:");
            double price=sc.nextDouble();
            System.out.println("请输入生产日期(XXXX-XX-XX):");
            String date=sc.next();
            //调用Controller层的add方法新增商品
            int row=goodsController.addGoods(gname, price, date);
            if(row>0){
                System.out.println("新增成功!");
            }else{
                System.out.println("新增失败!");
            }
        }
        //修改页面
        public void updateGoods(){
            System.out.println("========修改页面========");
            //查询所有商品
            getGoods();
            System.out.println("请输入您要修改的商品编号:");
            Scanner sc=new Scanner(System.in);
            int gid=sc.nextInt();
            System.out.println("请输入您要修改后的商品名称:");
            String gname=sc.next();
            System.out.println("请输入您要修改后的商品价格:");
            Double price=sc.nextDouble();
            System.out.println("请输入您要修改后的商品的生产日期(XXXX-XX-XX):");
            String gdate=sc.next();
            //调用Controller方法修改商品
            int row=goodsController.updateGoods(gid, gname, price, gdate);
            if(row>0){
                System.out.println("修改成功!");
            }else{
                System.out.println("修改失败!");
            }
            
            
        }
        //查询页面
        public void getGoods(){
            System.out.println("========所有商品页面========");
            System.out.println("商品编号	商品名称	商品价格	生产日期");
            //调用Controller方法getGoods()获取集合
            ArrayList<Goods> arr=goodsController.getGoods();
            for(Goods g:arr){
                System.out.println(g.getGid()+"	"+g.getGname()+"	"+g.getPrice()+"	"+g.getGdate());
            }
        }
        //删除商品
        public void deleteGoods(){
            System.out.println("========删除商品页面========");
            getGoods();
            System.out.println("请输入您要删除的商品编号:");
            Scanner sc=new Scanner(System.in);
            int gid=sc.nextInt();
            //调用Controller方法删除商品
            int row=goodsController.deleteGoods(gid);
            if(row>0){
                System.out.println("删除成功!");
            }else{
                System.out.println("删除失败!");
            }
        }
        // 用户登录
        public void login(){
            System.out.println("用户登录页面");
            System.out.println("请输入用户名:");
            Scanner sc=new Scanner(System.in);
            String uname=sc.next();
            System.out.println("请输入密码:");
            String pwd=sc.next();
            //调用UserController方法登录
            int count=userController.login(uname,pwd);
            if(count>0){
                System.out.println("登录成功!");
                show2();
            }else{
                System.out.println("用户名或密码错误,请重新登录!");
            }
        }
    }

    controller层:

    package com.oracle.controller;
    
    import java.text.ParseException;
    import java.text.SimpleDateFormat;
    import java.util.ArrayList;
    import java.util.Date;
    
    import com.oracle.domain.Goods;
    import com.oracle.service.GoodsService;
    
    public class GoodsController {
        private GoodsService goodsService=new GoodsService();//掉方法需要创建对象
        //新增商品
        public int addGoods(String gname,double price,String date){
            //封装Goods对象
            Goods goods=new Goods();
            goods.setGname(gname);
            goods.setGdate(date);
            goods.setPrice(price);
        //调用Service层的新增方法
            int row=goodsService.addGoods(goods);
            return row;
        }
        //查询所有商品
        public ArrayList<Goods> getGoods(){
            return goodsService.getGoods();
        }
        //修改商品
        public int updateGoods(int gid,String gname,double price,String gdate){
            //封装Goods对象
            Goods goods=new Goods();
            goods.setGid(gid);
            goods.setGdate(gdate);
            goods.setGname(gname);
            goods.setPrice(price);
            //调用Service方法修改商品
            int row=goodsService.updateGoods(goods);
            return row;
        }
        //删除商品
        public int deleteGoods(int gid){
            //封装Goods对象
                    Goods goods=new Goods();
                    goods.setGid(gid);
                    //调用Service方法删除商品
                    int row=goodsService.deleteGoods(goods);
                    return row;
        }
        
    }

    service层:

    package com.oracle.service;
    
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.oracle.dao.GoodsDao;
    import com.oracle.domain.Goods;
    
    public class GoodsService {
        private GoodsDao goodsDao=new GoodsDao();//私有化是只能Service层调用Dao层,不能跨层
        //新增商品
        public int addGoods(Goods goods){
            int row=0;
            try {
                row=goodsDao.addGoods(goods);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return row;
        }
        //查询所有商品
        public ArrayList<Goods> getGoods(){
            ArrayList<Goods> arr=null;
            try {
                arr=goodsDao.getGoods();
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return arr;
        }
        //修改商品
        public int updateGoods(Goods goods){
            int row=0;
            try {
                row=goodsDao.updateGoods(goods);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return row;
        }
        //删除商品
        public int deleteGoods(Goods goods){
            int row=0;
            try {
                row=goodsDao.deleteGoods(goods);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            return row;
        }
    }

    Dao层:

    package com.oracle.dao;
    
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.oracle.domain.Goods;
    import com.oracle.tools.JDBCUtils;
    
    public class GoodsDao {
        //新增商品
        public int addGoods(Goods goods) throws SQLException{
            //获取连接对象
            Connection conn=JDBCUtils.getConn();
            //获取语句执行平台
            String sql="insert into goods(gname,price,gdate) values(?,?,?)";
            PreparedStatement pst=conn.prepareStatement(sql);
            //执行sql
            pst.setString(1, goods.getGname());
            pst.setDouble(2, goods.getPrice());
            pst.setString(3, goods.getGdate());
            int row=pst.executeUpdate();
            //释放资源
            JDBCUtils.close(conn, pst);
            return row;
        }
        //查询所有商品
        public ArrayList<Goods> getGoods() throws SQLException{
            //获取连接对象
            Connection conn=JDBCUtils.getConn();
            //获取语句连接平台
            String sql="select * from goods";
            PreparedStatement pst=conn.prepareStatement(sql);
            //执行sql;
            ResultSet rs=pst.executeQuery();
            //处理结果集
            ArrayList<Goods> arr=new ArrayList<Goods>();
            while(rs.next()){
                Goods goods=new Goods();
                goods.setGid(rs.getInt("gid"));
                goods.setGname(rs.getString("gname"));
                goods.setPrice(rs.getDouble("price"));
                goods.setGdate(rs.getString("gdate"));
                arr.add(goods);
            }
            //释放资源
            JDBCUtils.close(conn, pst,rs);
            return arr;
        }
        //修改商品
        public int updateGoods(Goods goods) throws SQLException{
            //获取连接对象
            Connection conn=JDBCUtils.getConn();
            //获取语句平台
            String sql="update goods set gname=?,price=?,gdate=?where gid=?";
            PreparedStatement pst=conn.prepareStatement(sql);
            //执行sql语句
            pst.setString(1, goods.getGname());
            pst.setDouble(2, goods.getPrice());
            pst.setString(3, goods.getGdate());
            pst.setInt(4, goods.getGid());
            int row=pst.executeUpdate();
            //释放资源
            JDBCUtils.close(conn, pst);
            return row;
        }
        //删除商品
            public int deleteGoods(Goods goods) throws SQLException{
                //获取连接对象
                Connection conn=JDBCUtils.getConn();
                //获取语句平台
                String sql="delete from goods where gid=?";
                PreparedStatement pst=conn.prepareStatement(sql);
                //执行sql语句
                pst.setInt(1, goods.getGid());
                int row=pst.executeUpdate();
                //释放资源
                JDBCUtils.close(conn, pst);
                return row;
            }
            
    }
  • 相关阅读:
    网口 光口 电口都是接什么的?
    webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
    webService学习之路(二):springMVC集成CXF快速发布webService
    全国计算机技术与软件专业技术资格(水平)考试网上报名平台
    Axis2创建WebService实例
    使用axis2构建webservice
    JavaSE----API之集合(Collection、List及其子类、Set及其子类、JDK1.5新特性)
    SGU
    REST技术第四步 多个參数注解问题
    深入源代码解析Android中的Handler,Message,MessageQueue,Looper
  • 原文地址:https://www.cnblogs.com/21-forever/p/11014627.html
Copyright © 2020-2023  润新知