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方法)

 

JAVA基础之项目分包详解编程语言

 

 

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("商品编号/t商品名称/t商品价格/t生产日期"); 
        //调用Controller方法getGoods()获取集合 
        ArrayList<Goods> arr=goodsController.getGoods(); 
        for(Goods g:arr){ 
            System.out.println(g.getGid()+"/t"+g.getGname()+"/t"+g.getPrice()+"/t"+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; 
        } 
         
}

 

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/16576.html

(0)
上一篇 2021年7月19日 19:24
下一篇 2021年7月19日 19:24

相关推荐

发表回复

登录后才能评论