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("商品編號\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;
        }
        
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM