Java Web 实训项目:西蒙购物网

网站实现步骤

目录

网站实现步骤

(一)创建数据库与表

1、创建数据库

2、创建用户表

3、创建类别表

4、创建商品表

5、创建订单表

(二)创建Web项目

1、创建新项目——Simonshop项目

2、编辑index页面

3、启用查看效果

(三)创建实体类

1、创建用户实体类User

2、创建类别实体类

 3、创建商品实体类

4、创建订单实体类

(四)创建数据库工具类 

1、添加数据库驱动程序包

2、创建数据库连接管理类

3、测试数据库连接是否成功

 (五)、数据访问接口

1、创建用户数据访问接口

2、创建类别数据访问接口CategoryDao

3、创建商品数据访问接口ProductDao

4、创建订单数据访问接口OrderDao

(六)、创建数据访问接口实现类

1、创建用阿古数据访问接口实现类

(1)编写插入用户方法

<2>、删除用户记录

<3>、编写更新用户方法

<4、>编写按照标识符查询用户方法

<5、>编写按照用户名查询用户的方法

<6、>编写查询全部用户

<7、>编写登录方法       

 2、对用户数据访问接口实现类做单元测试

 (1)编写测试登录方法testLogin()

(2)编写按照标识符查找用户

(3)编写按照用户名查询方法

 (4)编写查询全部用户

(5)编写插入用户方法

(6)编写测试更新用户方法 

 (7)编写测试删除用户方法

 3、对商品数据访问接口实现类做单元测试

4、编写商品数据访问接口实现类

<1>、编写插入商品方法 

<2>、编写按照标识符删除商品方法

<3>、编写更新商品方法

<4>、编写按照标识符查询方法

<5>、编写按照类别标识符查询方法

<6>、编写查询全部商品方法

<7>、编写删除商品方法

4、创建订单数据访问接口实现类


(一)创建数据库与表

1、创建数据库

  • 数据库 - simonshop

2、创建用户表

  • 创建用户表结构 - t_user
CREATE TABLE `t_user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(20) NOT NULL,
  `password` varchar(20) DEFAULT NULL,
  `telephone` varchar(11) DEFAULT NULL,
  `register_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `popedom` int(11) DEFAULT NULL COMMENT '0:管理员;1:普通用户',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

 在用户表里插入记录

INSERT INTO `t_user` VALUES ('1', 'admin', '12345', '15734345678', '2021-12-02 08:40:35', '0');
INSERT INTO `t_user` VALUES ('2', '郑晓红', '11111', '13956567889', '2022-12-20 09:51:43', '1');
INSERT INTO `t_user` VALUES ('3', '温志军', '22222', '13956678907', '2022-12-20 09:52:36', '1');
INSERT INTO `t_user` VALUES ('4', '涂文艳', '33333', '15890905678', '2022-12-05 09:52:56', '1');

3、创建类别表

  • 创建类别表结构 - t_category

CREATE TABLE `t_category` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品类别标识符',
  `name` varchar(100) NOT NULL COMMENT '商品类别名称',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

 在类别表里插入记录

INSERT INTO `t_category` VALUES ('1', '家用电器');
INSERT INTO `t_category` VALUES ('2', '床上用品');
INSERT INTO `t_category` VALUES ('3', '文具用品');
INSERT INTO `t_category` VALUES ('4', '休闲食品');

4、创建商品表

  • 创建商品表结构 - t_product
CREATE TABLE `t_product` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '商品标识符',
  `name` varchar(200) NOT NULL COMMENT '商品名称',
  `price` double DEFAULT NULL COMMENT '商品单价',
  `add_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
  `category_id` int(11) DEFAULT NULL COMMENT '商品类别标识符',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8;

 

INSERT INTO `t_product` VALUES ('1', '容声电冰箱', '2000', '2016-12-20 09:54:41', '1');
INSERT INTO `t_product` VALUES ('2', '松下电视', '5000', '2016-12-20 09:54:35', '1');
INSERT INTO `t_product` VALUES ('3', '红岩墨水', '3', '2016-12-20 09:56:05', '3');
INSERT INTO `t_product` VALUES ('4', '海尔洗衣机', '1000', '2016-11-30 08:58:09', '1');
INSERT INTO `t_product` VALUES ('5', '新宇电饭煲', '1200', '2016-12-20 09:55:11', '1');
INSERT INTO `t_product` VALUES ('6', '英雄微波炉', '600', '2016-12-20 09:55:39', '1');
INSERT INTO `t_product` VALUES ('7', '红双喜席梦思', '700', '2016-11-28 08:59:38', '2');
INSERT INTO `t_product` VALUES ('8', '旺仔牛奶糖', '24.4', '2016-12-20 10:00:11', '4');
INSERT INTO `t_product` VALUES ('9', '西蒙枕头', '100', '2016-12-20 09:56:57', '2');
INSERT INTO `t_product` VALUES ('10', '甜甜毛毯', '400', '2016-12-20 09:57:26', '2');
INSERT INTO `t_product` VALUES ('11', '永久钢笔', '50', '2016-12-20 09:57:30', '3');
INSERT INTO `t_product` VALUES ('12', '硬面抄笔记本', '5', '2016-12-20 09:57:53', '3');
INSERT INTO `t_product` VALUES ('13', '晨光橡皮擦', '0.5', '2016-11-30 09:02:40', '3');
INSERT INTO `t_product` VALUES ('14', '美的空调', '3000', '2016-11-03 09:03:02', '1');
INSERT INTO `t_product` VALUES ('15', '迷你深海鱼肠', '14.4', '2016-12-02 10:01:14', '4');

5、创建订单表

  • 创建订单表结构 - t_order
CREATE TABLE `t_order` (
  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '订单标识符',
  `username` varchar(20) DEFAULT NULL COMMENT '用户名',
  `telephone` varchar(11) DEFAULT NULL COMMENT '电话号码',
  `total_price` double DEFAULT NULL COMMENT '总金额',
  `delivery_address` varchar(50) DEFAULT NULL COMMENT '送货地址',
  `order_time` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '下单时间',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

 在订单表里插入记录

INSERT INTO `t_order` VALUES ('1', '郑晓红', '13956567889', '2000', '泸职院信息工程系', '2016-12-25 17:12:36');
INSERT INTO `t_order` VALUES ('2', '温志军', '13956678907', '1000', '泸职院机械工程系', '2016-12-02 17:12:17');

(二)创建Web项目

1、创建新项目——Simonshop项目

2、编辑index页面

<%@ page import="java.util.Date" %><%--
  Created by IntelliJ IDEA.
  User: ASUS
  Date: 2023/5/29
  Time: 15:45
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首页</title>
  </head>
  <body>
  <h1 style="color: blue; text-align: center">Java Web实训项目:西蒙购物网</h1>
  <h3 style="text-align: center"><%= new Date()%></h3>
  <p style="text-align: center"><a href="login.jsp">跳转到登录界面</a></p>
  </body>
</html>

3、启用查看效果

(三)创建实体类

1、创建用户实体类User

创建net.gyh.shop.bean 包,然后在里面创建User类

package net.gyh.shop.bean;

import java.util.Date;

public class User {
    private int id;
    private String username;//姓名
    private  String password;//密码
    private String telephone;//电话
    private Date registerTime;//注册时间
    private int popedom;//权限(0:管理元 ;1: 普通用户)

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public Date getRegisterTime() {
        return registerTime;
    }

    public void setRegisterTime(Date registerTime) {
        this.registerTime = registerTime;
    }

    public int getPopedom() {
        return popedom;
    }

    public void setPopedom(int popedom) {
        this.popedom = popedom;
    }
}

2、创建类别实体类

在net.gyh.shop.bean包里创建Category类

package net.gyh.shop.bean;

public class Category {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Category{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

 3、创建商品实体类

package net.gyh.shop.bean;

import java.util.Date;

public class Product {
    private int id;
    private String name ;//商品名称
    private double price;//商品价格
    private Date addTime;//商品上架时间
    private int categoryId;//类别标识符

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getPrice() {
        return price;
    }

    public void setPrice(double price) {
        this.price = price;
    }

    public Date getAddTime() {
        return addTime;
    }

    public void setAddTime(Date addTime) {
        this.addTime = addTime;
    }

    public int getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(int categoryId) {
        this.categoryId = categoryId;
    }

    @Override
    public String toString() {
        return "Product{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", price=" + price +
                ", addTime=" + addTime +
                ", categoryId=" + categoryId +
                '}';
    }
}

4、创建订单实体类

package net.gyh.shop.bean;

import java.util.Date;

public class Order {
    private int id;//订单标识符
    private String username;//用户名
    private String telephone;//电话
    private double totalPrice;//订单总金额
    private String deliveryAddress ;//送货地址
    private Date orderTime;//下单时间

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getTelephone() {
        return telephone;
    }

    public void setTelephone(String telephone) {
        this.telephone = telephone;
    }

    public double getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(double totalPrice) {
        this.totalPrice = totalPrice;
    }

    public String getDeliveryAddress() {
        return deliveryAddress;
    }

    public void setDeliveryAddress(String deliveryAddress) {
        this.deliveryAddress = deliveryAddress;
    }

    public Date getOrderTime() {
        return orderTime;
    }

    public void setOrderTime(Date orderTime) {
        this.orderTime = orderTime;
    }

    @Override
    public String toString() {
        return "Order{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", telephone='" + telephone + '\'' +
                ", totalPrice=" + totalPrice +
                ", deliveryAddress='" + deliveryAddress + '\'' +
                ", orderTime=" + orderTime +
                '}';
    }
}

(四)创建数据库工具类 

1、添加数据库驱动程序包

在Web-INF目录里创建lib子目录,添加MySQL驱动程序的包

 将数据库驱动程序包作为库添加到项目

2、创建数据库连接管理类

package net.gyh.shop.dbutil;


import javax.swing.*;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

/**
 * 功能:数据库连接管理类
 * 作者:gyh
 * 日期:2020年06月05日
 */
public class ConnectionManager {
    private static final String DRIVER = "com.mysql.jdbc.Driver"; // 数据库驱动程序
    private static final String URL = "jdbc:mysql://localhost:3306/text?useSSL=false"; // 数据库统一资源标识符
    private static final String USER = "root"; // 数据库用户
    private static final String PASSWORD = "gyh3478501033"; // 数据库密码

    /**
     * 私有化构造方法,拒绝实例化
     */
    private ConnectionManager() {
    }

    /**
     * 获取数据库连接静态方法
     *
     * @return 数据库连接对象
     */
    public static Connection getConnection() {
        // 定义数据库连接
        Connection conn = null;

        try {
            // 安装数据库驱动程序
            Class.forName(DRIVER);
            // 获取数据库连接
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
        }

        // 返回数据库连接
        return conn;
    }

    /**
     * 关闭数据连接静态方法
     *
     * @param conn
     */
    public static void closeConnection(Connection conn) {
        // 判断数据库连接是否非空
        if (conn != null) {
            try {
                // 判断连接是否未关闭
                if (!conn.isClosed()) {
                    // 关闭数据库连接
                    conn.close();
                }
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    /**
     * 主方法:测试两个静态方法
     *
     * @param args
     */
    public static void main(String[] args) {
        // 获取数据库连接
        Connection conn = getConnection();
        // 判断数据库连接是否成功
        if (conn != null) {
            JOptionPane.showMessageDialog(null, "恭喜,数据库连接成功!");
        } else {
            JOptionPane.showMessageDialog(null, "遗憾,数据库连接失败!");
        }
        // 关闭数据库连接
        closeConnection(conn);
    }
}

3、测试数据库连接是否成功

运行程序,查看结果

 (五)、数据访问接口

1、创建用户数据访问接口

在net.gyh.shop根包里创建Userdao类

package net.gyh.shop.dao;

import net.gyh.shop.bean.User;

import java.util.List;

public interface UserDao {
    int insert(User user);//查找用用户
    int deleteById(int id);//按照标识符删除用户
    int update(User user);//更新用户
    User findById(int id);//按照标识符查找用户
    List<User>findByUsername(String username);//按用户用查找用户
    List<User> findAll();//查询全部用户
    User login (String username,String password);//用户登录

}

2、创建类别数据访问接口CategoryDao

在net.gyh.shop.dao包里创建CategoryDao接口

package net.gyh.shop.dao;

import net.gyh.shop.bean.Category;

import java.util.List;

public interface CategoryDao {
    int insert(Category category);//插入类别
    int deleteById(int id);//按照标识符删除类别
    int update(Category category);//更新类别
    Category findById(int id);//按照标识符查询类别
    List<Category> findAll();//查询全部类别
}

3、创建商品数据访问接口ProductDao

在net.gyh.shop.dao包里创建ProductDao接口

package net.gyh.shop.dao;

import net.gyh.shop.bean.Product;

import java.util.List;

public interface ProductDao {
    int insert(ProductDao productDao);//插入商品
    int deleteById(int id);//按照标识符删除商品
    int update(ProductDao productDao);//更新商品
    ProductDao findById(int id);//按照标识符查询商品
    List<Product>findByIdgroyId(int cateGroyId);//按照类别标识符查询商品
    List<Product> findAll();//查询全部商品
}

4、创建订单数据访问接口OrderDao

在net.gyh.shop.dao包里创建OrderDao接口

package net.gyh.shop.dao;

import net.gyh.shop.bean.Order;

import java.util.List;

public interface OrderDao {
    int insert(Order order);//插入订单
    int deleteById(int id);//按照标识符删除订单
    int update(Order order);//更新订单
    Order findById(int id);//按照标识符查询订单
    Order findLast();//查询最后一个订单
    List<Order>findAll();//查询全部订单
}

(六)、创建数据访问接口实现类

1、创建用阿古数据访问接口实现类

在net.gyh.gyh.shop.dao里创建自包impl子包,在子包里面创建UserDaoImpl类

package net.gyh.shop.dao.impl;

import net.gyh.shop.bean.User;
import net.gyh.shop.dao.UserDao;

import java.util.List;

public class UserDaoImpl implements UserDao {

    @Override
    public int insert(User user) {
        return 0;
    }

    @Override
    public int deleteById(int id) {
        return 0;
    }

    @Override
    public int update(User user) {
        return 0;
    }

    @Override
    public User findById(int id) {
        return null;
    }

    @Override
    public List<User> findByUsername(String username) {
        return null;
    }

    @Override
    public List<User> findAll() {
        return null;
    }

    @Override
    public User login(String username, String password) {
        return null;
    }
}

(1)编写插入用户方法

@Override//插入用户
    public int insert(User user) {
        //定义插入记录数
        int count = 0;
        //获取数据库连接
        Connection conn = ConnectionManager.getConnection();
        //定义SQL字符串
        try {
            String strSQL = "INSERT INTO t_user(username, password, telephone, register_time, popedom) VALUES (?,?,?,?,?)";
            //创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //设置占位符
            pstmt.setString(1,user.getUsername());
            pstmt.setString(2,user.getUsername());
            pstmt.setString(3,user.getUsername());
            pstmt.setTimestamp(4,new Timestamp(user.getRegisterTime().getTime()));
            pstmt.setInt(5,user.getPopedom());
            //执行更新操作,插入记录
            count = pstmt.executeUpdate();
            //关闭预备语句对象
            pstmt.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            ConnectionManager.closeConnection(conn);//关闭数据库连接

        }

        //返回插入记录数
        return count;

<2>、删除用户记录

 @Override//按照标识符删除用户
    public int deleteById(int id) {
        //定义删除记录数
        int count = 0;
        //返回删除记录数
        Connection conn = ConnectionManager.getConnection();
        //定义SQL字符串
        try {
            String strSQL = "DELETE FROM t_user WHERE id = ?";
            //创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //设置占位符
            pstmt.setInt(1,id);
            //执行更新操作,插入记录
            count = pstmt.executeUpdate();
            //关闭预备语句对象
            pstmt.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            ConnectionManager.closeConnection(conn);//关闭数据库连接
        }
        return count;
    }

<3>、编写更新用户方法

@Override//更新用户
    public int update(User user) {
        //定义更新用户记录数
        int count = 0;
        //返回更新记录数
        Connection conn = ConnectionManager.getConnection();
        //定义SQL字符串
        try {
            String strSQL = "UPDATE t_user SET username =?, password = ?, telephone = ?, " +
                    "register_time= ?, popedom =? WHERE id = ?";
            //创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //设置占位符
            pstmt.setString(1,user.getUsername());
            pstmt.setString(2,user.getUsername());
            pstmt.setString(3,user.getUsername());
            pstmt.setTimestamp(4,new Timestamp(user.getRegisterTime().getTime()));
            pstmt.setInt(5,user.getPopedom());
            pstmt.setInt(6,user.getId());
            //执行更新操作,更新记录
            count = pstmt.executeUpdate();
            //关闭预备语句对象
            pstmt.close();
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            ConnectionManager.closeConnection(conn);//关闭数据库连接

        }
        return count;
    }

<4、>编写按照标识符查询用户方法

 @Override //按照标识符查询用户
    public User findById(int id) {
        
    //定义删除记录数
    User user =null;
    //返回删除记录数
    Connection conn = ConnectionManager.getConnection();
    
    //定义SQL字符串
        try {
            String strSQL = "SELECT * FROM t_user WHEREid = ?";
            //创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //设置占位符
            pstmt.setInt(1, id);
            //执行更新操作,返回记录

            ResultSet rs = pstmt.executeQuery();
            //判断结果是否为空
            if (rs.next()) {
                //创建用户对象
                user = new User();
                //设置用户对象属性
                user.setId((rs.getInt("id")));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setTelephone(rs.getString("telephone"));
                user.setRegisterTime(rs.getTimestamp("register_time"));
                user.setPopedom(rs.getInt("popedom"));
            }
            pstmt.close();
        }
            catch (SQLException throwables) {
                throwables.printStackTrace();
            } finally {
                ConnectionManager.closeConnection(conn);//关闭数据库连接

            }
        return user;
    }

<5、>编写按照用户名查询用户的方法

 @Override//使用用户名查询用户
    public List<User> findByUsername(String username) {
        //定义用户列表
        List<User> users = new ArrayList<>();
        Connection conn = ConnectionManager.getConnection();
        //定义SQL字符串
        try {
            String strSQL = "SELECT * FROM t_user WHERE username = ?";
            //创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //设置占位符
            pstmt.setString(1,username);
            //执行更新操作,返回记录

            ResultSet rs = pstmt.executeQuery();
            //判断结果是否为空
            while (rs.next()) {
                //创建用户对象
                User user = new User();
                //设置用户对象属性
                user.setId((rs.getInt("id")));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setTelephone(rs.getString("telephone"));
                user.setRegisterTime(rs.getTimestamp("register_time"));
                user.setPopedom(rs.getInt("popedom"));
                //将用户对象添加到用户列表
                users.add(user);
            }
            pstmt.close();
        }
        catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            ConnectionManager.closeConnection(conn);//关闭数据库连接
        }
        //返回用户列表
        return users;
    }

<6、>编写查询全部用户

@Override//查询全部用户
    public List<User> findAll() {
        //定义用户列表
        List<User> users = new ArrayList<>();
        Connection conn = ConnectionManager.getConnection();
        //定义SQL字符串
        try {
            String strSQL = "SELECT * FROM t_user ";
            //创建预备语句对象
            Statement stmt = conn.createStatement();
            //设置占位符
            ResultSet rs = stmt.executeQuery(strSQL);
            //执行更新操作,返回记录
            //判断结果是否为空
            if (rs.next()) {
                //创建用户对象
                User user = new User();
                //设置用户对象属性
                user.setId((rs.getInt("id")));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setTelephone(rs.getString("telephone"));
                user.setRegisterTime(rs.getTimestamp("register_time"));
                user.setPopedom(rs.getInt("popedom"));
                //将用户对象添加到用户列表
                users.add(user);
            }
            stmt.close();
        }
        catch (SQLException e) {
            System.err.println(e.getMessage());
        } finally {
            ConnectionManager.closeConnection(conn);//关闭数据库连接
        }
        return users;
    }

<7、>编写登录方法       

@Override//编写登录方法
    public User login(String username, String password) {
        //定义删除记录数
        User user =null;
        //返回删除记录数
        Connection conn = ConnectionManager.getConnection();

        //定义SQL字符串
        try {
            String strSQL = "SELECT * FROM t_user WHERE username = ? ANd password = ?";
            //创建预备语句对象
            PreparedStatement pstmt = conn.prepareStatement(strSQL);
            //设置占位符
            pstmt.setString(1, username);
            pstmt.setString(2, password);
            //执行更新操作,返回记录

            ResultSet rs = pstmt.executeQuery();
            //判断结果是否为空
            if (rs.next()) {
                //创建用户对象
                user = new User();
                //设置用户对象属性
                user.setId((rs.getInt("id")));
                user.setUsername(rs.getString("username"));
                user.setPassword(rs.getString("password"));
                user.setTelephone(rs.getString("telephone"));
                user.setRegisterTime(rs.getTimestamp("register_time"));
                user.setPopedom(rs.getInt("popedom"));
            }
            pstmt.close();
        }
        catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            ConnectionManager.closeConnection(conn);//关闭数据库连接

        }
        return user;

 2、对用户数据访问接口实现类做单元测试

在根目录下建立一个test 文件夹,并变成绿色文件

 在test文件夹里创建net.gyh.shop.dao.impl包里创建TestUserDaoImpl类

 (1)编写测试登录方法testLogin()

给测试方法添加@Test会报错

添加单元测试Junit4到项目,将光标移到@Test按Alt+Enter组合键

 选第一个选项

 单击【OK】按钮

就成功了, 然后正常编写代码。

package net.gyh.shop.dao.impl;

import net.gyh.shop.bean.User;
import net.gyh.shop.dao.UserDao;
import org.junit.Test;

public class TestUserDaoImpl {
    @Test
    public void testLogin() {
        String username = "admin";
        String password = "12345";

        //创建用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();//用户接口变量指向子类对象
        //调佣用户数据访问接口对象的登录方法
        User user = userDao.login(username,password);
        //判断用户是否登录成功
        if (user !=null) {//成功
            System.out.println("恭喜," + username +",登录成功~");

        }else {//失败
            System.out.println("遗憾," + username + ",登录失败~");

        }

    }
}

运行testLogin()登录方法,查看效果。

(2)编写按照标识符查找用户

@Test //测试标识符查询用户方法
    public  void  testFindById(){
        //定义标识符变量
        int id =3;
        //创建用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();
        //调佣用户数据访问接口对象的按照标识符查询用户方法
        User user = userDao.findById(id);
        //判断是否找到指定用户
        if (user !=null) {//找到
            System.out.println(user);
        }else {//未找到
            System.out.println("编号为 [" + id +"]未找到");
        }
    }

 运行代码,查看效果

(3)编写按照用户名查询方法

@Test //测试用户名查询用户
    public void testFindByUsername() {
        //定义用户名变量
        String username = "郑晓红";
        //差UN估计爱你用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();
        //调用用户数据访问接口对象的按照用户名查询用户
        List<User> users = userDao.findByUsername(username);
        //判断是否找到
        if (users.size() > 0) {//找到
            users.forEach(user -> System.out.println(user));
        }else {//未找到
           System.out.println("没有找到名为[" + username + "]的用户~"); 
        }
    }

运行代码,查看效果

 (4)编写查询全部用户

@Test//测试查询全部用户
    public void testFindAll(){
        //创建用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();
        //调佣用户数据访问接口对象的按照标识符查询用户方法
        List<User> users = userDao.findAll();
        //判断是否有用户
        if (users.size() > 0) {
            users.forEach(user -> System.out.println(user));
        }else {
            System.out.println("用户表里没有记录");
        }
    }

运行代码,查看效果。 

(5)编写插入用户方法

 @Test//测试插入用户
    public void testInsert() {
        //创建用户对象
        User user = new User();
        //设置用户对象属性
        user .setUsername("铁贾小哥");
        user.setPassword("444444");
        user.setTelephone("15667846895");
        user.setRegisterTime(new Date());
        user.setPopedom(1);
        //创建爱你用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();
        //调用用户数据访问接口对象的插入用户方法
        int count = userDao.insert(user);
        //判断是否成功插入用户
        if (count>0) {
            System.out.println("恭喜,用户插入成功");
        }else {
            System.out.println("遗憾,用户插入失败");
        }
    }

(6)编写测试更新用户方法 

 @Test//测试更新用户
    public void testUpdate() {
        //创建用户对象
        User user = new User();
        //设置用户对象属性
        user.setId(5);
        user .setUsername("贾四汀");
        user.setPassword("888888");
        user.setTelephone("1954219087");
        user.setRegisterTime(new Date());
        user.setPopedom(0);
        //创建爱你用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();
        //调用用户数据访问接口对象的更新用户方法
        int count = userDao.update(user);
        //判断是否成功更新用户
        if (count>0) {
            System.out.println("恭喜,更新用户记录成功~");
        }else  {
            System.out.println("遗憾,更新用户记录失败~");
        }
    }

 

 (7)编写测试删除用户方法

 @Test //测试按照标识符删除用户记录
    public void testDeleteById() {
        //定义标识符变量
        int id = 5;
        //创建用户数据访问接口对象
        UserDao userDao = new UserDaoImpl();
        //调佣用户数据访问接口对象的按照标识符删除用户方法
        int count = userDao.deleteById(id);
        //判断是否成功删除用户
        if (count > 0) {
            System.out.println("恭喜,删除用户成功");
        }else {
            System.out.println("遗憾,删除用户失败");
        }
    }

 3、对商品数据访问接口实现类做单元测试

<1>、一次编写测试方法

4、编写商品数据访问接口实现类

在net.gyh.shop.dao.impl包里创建ProductDaoImpl类

实现Product接口

<1>、编写插入商品方法 

<2>、编写按照标识符删除商品方法

<3>、编写更新商品方法

<4>、编写按照标识符查询方法

<5>、编写按照类别标识符查询方法

<6>、编写查询全部商品方法

<7>、编写删除商品方法

4、创建订单数据访问接口实现类

更新到此~

猜你喜欢

转载自blog.csdn.net/justin02191004/article/details/130929137
今日推荐