zoukankan      html  css  js  c++  java
  • JAVA Class14

    学习内容:

    分包(分层):

    通过定义不同的包来将工程的各个功能细分,一般包含如下几部分:

    view层作用: 视图层,即项目中的界面

    controller层作用: 控制层, 获取界面上的数据,为界面设置数据; 将要实现的功能交给业务层处理

    service层作用: 业务层, 功能的实现, 与controller控制层和数据访问层DAO交互, 将对数据库的操作交给DAO数据访问层来处理

    dao层作用: 数据访问层, 用来操作数据库表的数据

    db数据库: 这里指MySQL

    domain 实体包: 存放JavaBean

    tools工具包:存放项目中使用到的工具类

    test 测试包: 存放项目功能测试的代码

    编写顺序:

    以下是一个简单的超市管理系统:

    1.tools包,创建工具方法,建立数据库连接,关闭数据库连接

    package com.store.tools;
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    public class DButil {
        private DButil() {};
        public static Connection getConn() {
            try {
                Class.forName("com.mysql.jdbc.Driver");
                String url="jdbc:mysql://127.0.0.1:3306/demo_JDBC?characterEncoding=UTF-8";
                String username="root";
                String password="123456";
                Connection conn=DriverManager.getConnection(url,username,password);
                return conn;
            } catch (Exception e) {
                throw new RuntimeException(e+"数据库连接失败");
            }
        }
        public static void close(Statement sta,Connection conn) {
            if(sta!=null) {
                try {
                    sta.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if(conn!=null) {
                try {
                    conn.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
        public static void close(ResultSet rs,Statement sta,Connection conn) {
            if(rs!=null) {
                try {
                    rs.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            close(sta,conn);
        } 
    }

    2.domain包,创建实体类,定义Store类的构造方法、属性等

    package com.store.domain;
    public class Store {
        private int sid;
        private String brands;
        private int size;
        private double price;
        private int counts;
        public Store(){};
        public Store(int sid,String brands,int size,double price,int counts) {
            this.sid = sid;
            this.brands = brands;
            this.size = size;
            this.price = price;
            this.counts = counts;
        }
        public int getSid() {
            return sid;
        }
        public void setSid(int sid) {
            this.sid = sid;
        }
        public String getBrands() {
            return brands;
        }
        public void setBrands(String brands) {
            this.brands = brands;
        }
        public int getSize() {
            return size;
        }
        public void setSize(int size) {
            this.size = size;
        }
        public double getPrice() {
            return price;
        }
        public void setPrice(double price) {
            this.price = price;
        }
        public int getCounts() {
            return counts;
        }
        public void setCounts(int counts) {
            this.counts = counts;
        }
    }

    3.view包,创建操作页面

    package com.store.view;
    import java.util.ArrayList;
    import java.util.Scanner;
    import com.store.controller.StoreController;
    import com.store.domain.Store;
    import com.store.tools.DButil;
    public class StoreView {
        StoreController storeController = new StoreController();
        Scanner sc = new Scanner(System.in);
        public void run() {
            while(true) {
            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("请选择功能序号:");
            int choose = sc.nextInt();
                switch(choose) {
                    case 1:
                        find();
                        break;
                    case 2:
                        find();
                        add();
                        break;
                    case 3:
                        find();
                        update();
                        break;
                    case 4:
                        find();
                        delete();
                        break;
                    case 5:
                        System.out.println("欢迎下次使用!");
                        return;
                    default:
                        System.out.println("选择有误,请重新选择功能!");
                }
            }
        }
        public  void find() {
            ArrayList<Store> list = storeController.find();
            System.out.println("商品编号	商品品牌	商品尺寸	商品价格	商品数量");
            for(int i=0;i<list.size();i++) {
                System.out.printf("%d	%s	%d	%f	%d%n"
                ,list.get(i).getSid(),list.get(i).getBrands(),list.get(i).getSize(),list.get(i).getPrice(),list.get(i).getCounts());
            }
        }
        public  void add() {
            System.out.println("请输入商品品牌:");
            String brands = sc.next();
            System.out.println("请输入商品尺寸");
            int size = sc.nextInt();
            System.out.println("请输入商品价格:");
            double price = sc.nextDouble();
            System.out.println("请输入商品数量:");
            int counts= sc.nextInt();    
            Store store = new Store();
            store.setBrands(brands);
            store.setSize(size);
            store.setPrice(price);
            store.setCounts(counts);
            storeController.add(store);
        }
    
      public  void update() {
          System.out.println("请输入要修改商品的ID");
          int sid = sc.nextInt();
          System.out.println("请输入修改后的商品品牌:");
          String brands = sc.next();
          System.out.println("请输入修改后的商品尺寸");
          int size = sc.nextInt();
          System.out.println("请输入修改后的商品价格:");
          double price = sc.nextDouble();
          System.out.println("请输入修改后的商品数量:");
          int counts= sc.nextInt();    
          Store store = new Store();
          store.setSid(sid);
          store.setBrands(brands);
          store.setSize(size);
          store.setPrice(price);
          store.setCounts(counts);
          storeController.update(store);
       }
    
      public  void delete() {
          System.out.println("请输入要删除的商品的ID");
          int sid = sc.nextInt();
          Store store = new Store();
          store.setSid(sid);
          storeController.delete(store);
        }
    }

    4.dao包,定义操作数据库的方法

    package com.store.dao;
    import java.sql.Connection;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.Statement;
    import java.util.ArrayList;
    import com.store.domain.Store;
    import com.store.tools.DButil;
    public class StoreDAO {
        public ArrayList<Store> find() {
            try {
                Connection conn = DButil.getConn();
                Statement sta = conn.createStatement();
                String sql = "select * from store";
                ResultSet rs = sta.executeQuery(sql);
                ArrayList<Store> store = new ArrayList<Store>();
                while(rs.next()) {
                    Store s = new Store(rs.getInt("sid"),rs.getString("brands"),rs.getInt("size"),rs.getDouble("price"),rs.getInt("counts"));
                    store.add(s);
                }
                DButil.close(rs, sta, conn);
                return store;
            } catch (Exception e) {
                System.out.println(e);
                throw new RuntimeException("商品查询失败");
            }    
        }
        public int add(Store store) {
            try {
                Connection conn = DButil.getConn();
                String sql = "insert into store(brands,size,price,counts) values(?,?,?,?)";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.setString(1, store.getBrands());
                ps.setInt(2, store.getSize());
                ps.setDouble(3, store.getPrice());
                ps.setInt(4,store.getCounts());
                int row = ps.executeUpdate();
                DButil.close(ps, conn);
                return row;
            } catch (Exception e) {
                System.out.println(e);
                throw new RuntimeException("商品添加失败");
            }
        }
        public int update(Store store) {
            try {
                Connection conn = DButil.getConn();
                String sql = "update store set brands=?,size=?,price=?,counts=? where sid=?";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.setString(1, store.getBrands());
                ps.setInt(2, store.getSize());
                ps.setDouble(3, store.getPrice());
                ps.setInt(4,store.getCounts());
                ps.setInt(5,store.getSid());
                int row = ps.executeUpdate();
                DButil.close(ps, conn);
                return row;
            } catch (Exception e) {
                System.out.println(e);
                throw new RuntimeException("商品修改失败");
            }
        }
        public int delete(Store store) {
            try {
                Connection conn = DButil.getConn();
                String sql = "delete from store where sid=?";
                PreparedStatement ps = conn.prepareStatement(sql);
                ps.setInt(1, store.getSid());
                int row = ps.executeUpdate();
                DButil.close(ps, conn);
                return row;
            } catch (Exception e) {
                System.out.println(e);
                throw new RuntimeException("商品删除失败");
            }
        }
    }

    5.service包,业务类,实现controller与dao包间的数据交换

    package com.store.service;
    import java.util.ArrayList;
    import com.store.dao.StoreDAO;
    import com.store.domain.Store;
    public class StoreService {
        private StoreDAO storeDAO = new StoreDAO();
        public ArrayList<Store>    find(){
            return storeDAO.find();
        }
        public int add(Store store) {
            return storeDAO.add(store);
        }
        public int update(Store store) {
            return storeDAO.update(store);
        }
        public int delete(Store store) {
            return storeDAO.delete(store);
        }
    }

    6.controller包,捕获view包传递的数据

    package com.store.controller;
    import java.util.ArrayList;
    import com.store.domain.Store;
    import com.store.service.StoreService;
    public class StoreController {
        private StoreService storeService = new StoreService();
        public ArrayList<Store>    find(){
            return storeService.find();
        }
        public  void add(Store store) {
            int mes =  storeService.add(store);
            if(mes>0) {
                System.out.println("商品添加成功");
            }else {
                System.out.println("商品添加失败");
            }
        }
        public  void update(Store store) {
            int mes =  storeService.update(store);
            if(mes>0) {
                System.out.println("商品修改成功");
            }else {
                System.out.println("商品修改失败");
            }
        }
        public  void delete(Store store) {
            int mes =  storeService.delete(store);
            if(mes>0) {
                System.out.println("商品删除成功");
            }else {
                System.out.println("商品删除失败");
            }
        }
    }

    7.test包,测试功能

    package com.store.test;
    import com.store.view.StoreView;
    public class TestStore {
        public static void main(String[] args) {
            new StoreView().run();
        }
    }
  • 相关阅读:
    Go语言基础(四)
    Go语言基础(一)
    Go语言简介和开发环境搭建
    数据分析(四)数据可视化之Matplotlib
    数据分析(三)Pandas
    git简介与基本操作
    drf框架之三大认证之频率类源码分析
    数据分析(二)numpy
    换零钱问题的非递归解法 SICP 1.2.2中的一个问题
    # Java中的代理类
  • 原文地址:https://www.cnblogs.com/whwjava/p/8759099.html
Copyright © 2011-2022 走看看