商品管理系统商品分页,增删改查的实现增加购物车的功能Cart

添加购物车前提条件:你的商品的页面有已经设计成功,有全选,全不选,反选这些操作的实现

  1. 通过checkbox复选框的id进行添加商品,从而获取商品的名字和其他的信息
  2. 增加成功后通过Ajax请求进行相关的页面的加载
  3. 创建一个Cart实体类进行购物车的设计。
  4. 有一个加入购物车的button进行点击时发生点击事件,从而进行添加商品。
  5. 添加成功进行购物车的显示的功能。
商品分页功能的实现
  1. 创建一个实现类,里面封装了分页的常用属性, private int currentPageNum;//当前大峡谷页
    private int pageSize=3;//每页显示条数,
    private int totalRecords;//总记录条数,数据库查出来的
    private int totalPageNum;//总页数,计算出来的
    private List list;//已经分好页的结果集

  2. 需要在dao的实现类中进行相关的说记录数的查询,和分页查询
    sql语句,select count(*) from table_name;select *from table_name limit ?,?;

  3. 里面的两个参数?,? 的设置 (currentNum-1)/pageSize,和pageSize

  4. 然后通过封装好的PageBean进行相关的显示

  5. 设置页面的默认的pageSize的大小
    5.首页,尾页,前一页,后一页都可以通过Js进行实现
    LoginServlet:

package com.nt.servlet;

import com.alibaba.fastjson.JSONObject;
import com.nt.pojo.Menu;
import com.nt.pojo.User;
import com.nt.service.UserService;
import com.nt.service.impl.UserServiceimpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;


@WebServlet(urlPatterns = "/login")
public class Loginservlet extends javax.servlet.http.HttpServlet {

    private UserService userService=new UserServiceimpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        resp.setContentType("text/html;charset=utf-8");

        String username = req.getParameter("username");
        String password = req.getParameter("password");

        User user=new User(username,password);
        userService.queryUserByUsernameAndPassword(user);
/*
//        Ajax不可以重定向和转发

        List<Menu> list = userService.queryMenuByRoleId(user.getRole().getRoleId());

        //将Object类型转换成json字符串
        String json = JSONObject.toJSONString(list);*/
        PrintWriter writer = resp.getWriter();
        HttpSession session = req.getSession();

        session.setAttribute("user",user);
//        session.setAttribute("menus",list);

        if(user!=null){
//            登录成功根据RoleId 查询权限信息查询


//            登录成功输出1
            writer.println(1);
        }else {
            writer.println(0);
        }

        writer.flush();
        writer.close();





    }
}

ListCartServlet:

package com.nt.servlet;

import com.nt.pojo.Cart;
import com.nt.service.CartService;
import com.nt.service.impl.CartServiceimpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;

@WebServlet(name = "ListCartServlet",urlPatterns = "/listcart")
public class ListCartServlet extends HttpServlet {
    private CartService cartService=new CartServiceimpl();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        List<Cart> list = cartService.listAllCart();


        req.setAttribute("list",list);

        req.getRequestDispatcher("listcart.jsp").forward(req,resp);


    }
}

ListGoodServlet:

package com.nt.servlet;

import com.nt.pojo.Goods;
import com.nt.pojo.PageBean;
import com.nt.service.GoodsService;
import com.nt.service.impl.GoodsServiceimpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "ListGoodsServlet",urlPatterns = "/listpage")
public class ListGoodsServlet extends HttpServlet {
    private GoodsService goodsService=new GoodsServiceimpl();

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String type = req.getParameter("type");

//        type==null type.equals(" ")不相等
        if (type==null){

            listpage(req,resp);
        }
        if(type.equals("del")){
            delGoods(req,resp);


        }
        if(type.equals("plsc")){

            plsc(req,resp);

        }

//        不可以用== 用equals比较内容是否相等
        if (type.equals("load")){

            listone(req,resp);


        }
        if (type.equals("update")){

            updateGoods(req,resp);
        }if(type.equals("add")){

            addGoods(req,resp);


        }



    }

    private void delGoods(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        int id = Integer.parseInt(req.getParameter("id"));
        int i = goodsService.deleteByGoodsId(id);
        if(i>0){

            PrintWriter writer = resp.getWriter();
            writer.println("<script>alert('删除成功') </script>");

            resp.sendRedirect("listpage");




        }


    }

    private void addGoods(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        String goodsname = req.getParameter("goodsname");
        String category = req.getParameter("category");
        String priceStr = req.getParameter("price");
        double price = Double.parseDouble(priceStr);

        Integer stock = Integer.parseInt(req.getParameter("stock") );
        Goods goods=new Goods(goodsname,category,price,stock);

        goodsService.addGoods(goods);

        resp.sendRedirect("listpage");


    }

    private void updateGoods(HttpServletRequest req, HttpServletResponse resp) throws IOException {

        int id = Integer.parseInt(req.getParameter("id"));

        String goodsname = req.getParameter("goodsname");
        String category = req.getParameter("category");
        String priceStr = req.getParameter("price");
        double price = Double.parseDouble(priceStr);

        Integer stock = Integer.parseInt(req.getParameter("stock") );
        Goods goods=new Goods(goodsname,category,price,stock);

        goodsService.updateGoodsById(goods,id);

        resp.sendRedirect("listpage");




    }

    private void listpage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //    从前端获取currentNum数据
        String currentNumStr  = req.getParameter("currentNum");

        String pageSizeStr = req.getParameter("pageSize");

        if(pageSizeStr==null){

            pageSizeStr="2";
        }

        int pageSize = Integer.parseInt(pageSizeStr);
        if(currentNumStr==null){

            currentNumStr="1";
        }

//
        int currentNum = Integer.parseInt(currentNumStr);

        PageBean<Goods> pageBean = goodsService.queryGoodsByPage(currentNum, pageSize);

//        把page设置到request作用域
        req.setAttribute("page",pageBean);

//        进行请求转发
        req.getRequestDispatcher("listpage.jsp").forward(req,resp);
    }

    private void listone(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        int id = Integer.parseInt(req.getParameter("id"));

        Goods goods = goodsService.queryByGoodsId(id);
        req.setAttribute("goods",goods);

        req.getRequestDispatcher("update.jsp").forward(req,resp);



    }

    protected void plsc(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //ids 23,24,25
        String ids = req.getParameter("ids");
        String[] idArr = ids.split(",");
        for(String idStr:idArr){
            int id = Integer.parseInt(idStr);
            goodsService.deleteByGoodsId(id);
        }
        PrintWriter writer = resp.getWriter();
        writer.println(1);
        writer.flush();
        writer.close();

    }
}

addServlet:

package com.nt.servlet;

import com.nt.pojo.Cart;
import com.nt.pojo.Goods;
import com.nt.pojo.User;
import com.nt.service.CartService;
import com.nt.service.impl.CartServiceimpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(name = "AddCartServlet",urlPatterns = "/addCart")
public class AddCartServlet extends HttpServlet {

    private CartService cartService=new CartServiceimpl();
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        String ids = req.getParameter("ids");
        String[] idsArr = ids.split(",");
        boolean flag=false;

        for (String idStr : idsArr) {
//商品id
            int goodsId = Integer.parseInt(idStr);
            Goods goods=new Goods();
            goods.setId(goodsId);

//            取到用户名
            User user = (User)req.getSession().getAttribute("user");

//            购买数量
            Cart cart=new Cart(goods,1,user.getUsername());

            flag = cartService.addCart(cart);

        }

        PrintWriter writer = resp.getWriter();
        if(flag){

            writer.println(1);//添加成功
        }else {
            writer.println(2);//添加失败
        }


        writer.flush();
        writer.close();

    }
}

listpage.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: CourageAndLove
  Date: 2021/7/24
  Time: 9:40
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>商品管理页面</title>
</head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>

    $(
        function () {
            //全选
            var i=0;
            var j=0;
            $("#qx").on("click",function(){
                if(i==0){
                    //把所有复选框选中
                    $(".one").prop("checked", true);
                    i=1;
                }else{
                    $(".one").prop("checked", false);
                    i=0;
                }

            });

            //全不选
            $("#qbx").on("click",function(){
                if(j==0){
                    //把所有复选框选不选
                    $(".one").prop("checked", false);
                    j=1;
                }else{
                    $(".one").prop("checked", true);
                    j=0;
                }

            });
            //反选
            $("#fx").on("click",function(){

                $(".one").each(function(){
                    //遍历所有复选框,然后取值进行 !非操作
                    $(this).prop("checked", !$(this).prop("checked"));
                })
            });



            //    加入购物车

            $("#btn").click(
                function () {
                    //1,2,3
                    var ids="";
                    $(".one:checked").each(
                        function () {

                            var id=$(this).val();

                            ids+=","+id;

                        }


                    )
                    //字符串截取第二个
                    ids=ids.substring(1);
                    // alert(ids);

                    $.post(
                        "addCart",
                        {
                            ids:ids
                        },
                        //进行后台数据的验证
                        function (data) {//回调函数
                            if(data==1){

                                alert('添加成功');
                                location.href="listcart";//查询所有的购物车信息需要连表查询
                            }else {
                                alert("添加失败");
                            }


                        }


                    )

                }
            )
        }



    )
    function plsc() {
        var ids="";
        $(".one:checked").each(
            function () {
                var id=$(this).val();
                ids+=","+id;
            }

        )
        ids=ids.substring(1);
        alert(ids);
        $.post(
            "listpage",
            {
                type:"plsc",
                ids:ids
            },
            function (data) {
                if(data==1){
                    alert("删除成功");
                    location.href="listpage";//重新查询所有
                }else{
                    alert("删除失败");
                }
            }
        )


    }

</script>


<body>

<center>


    <%--${requestScope.page}--%>
    <h2>商品管理页面</h2>




    <table width="50%" height="40%">
        <input type="checkbox" id="qx">全选
        <input type="checkbox" id="qbx">全不选
        <input type="checkbox" id="fx">反选
        <tr>

            <td>编号</td>
            <td>商品名字</td>
            <td>商品类别</td>
            <td>商品价格</td>
            <td>商品库存</td>


            <td>
                <a href="add.jsp">添加学生</a>
                <input type="button" value="批量删除" onclick="plsc()">
            </td>


        </tr>

        <c:forEach var="p" items="${requestScope.page.list}">
            <tr><td>


                <input type="checkbox" class="one" value="${p.id}">

            </td>

                <td>${p.id}</td>
                <td>${p.goodsname}</td>
                <td>${p.category}</td>
                <td>${p.price}</td>
                <td>${p.stock}</td>

                <td>
                        <%--                注意一下 id是现有的值用&获取即可 ,不可以用?进行参数的传值获取--%>
                    <a href="listpage?type=load&id=${p.id}">修改商品</a>
                    <a href="listpage?type=del&id=${p.id}">删除商品</a>

                </td>
            </tr>




        </c:forEach>


        <tr>
            <td colspan="6">
                <input type="button" value="加入购物车" id="btn">
            </td>

        </tr>



    </table>


        <input type="button" onclick="toFirstpage()" value="首页">
        <input type="button" onclick="toPrepage()" value="上一页">

        当前页|${requestScope.page.currentPageNum}总页数|${requestScope.page.totalPageNum}

        每页显示条数| <input type="text" name="pageSize" value="${requestScope.page.pageSize}" size="1">
        <input type="button" onclick="toNextpage()" value="下一页">
        <input type="button" onclick="toLastpage()" value="尾页">






</center>




<script>
<%--    当前页--%>

    var currentNum=${requestScope.page.currentPageNum};
<%--    总页数--%>
    var totalPages=${requestScope.page.totalPageNum};

    <%--var pageSize=${requestScope.page.pageSize};--%>



    function toFirstpage() {


            window.location="listpage?currentNum=1";



    }
    
    function toPrepage() {
        if(currentNum==1){
            window.location="listpage?currentNum=1";
        }else {



            window.location="listpage?currentNum="+(currentNum-1);


        }







    }

    function toNextpage() {
        if(currentNum==totalPages){

            window.location="listpage?currentNum="+totalPages;

        }else {


            window.location="listpage?currentNum="+(currentNum+1);



        }



    }

    function toLastpage() {


            window.location="listpage?currentNum="+totalPages;






    }


    
    
    
</script>

</body>
</html>

login.jsp:

<%--
  Created by IntelliJ IDEA.
  User: CourageAndLove
  Date: 2021/7/23
  Time: 17:03
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<script src="https://apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script>
    $(function () {

        //文档就绪函数
        $("#btn").click(function () {

            $.post(//post请求
                "login",//url路径
                $("form").serialize(),//传输的数据
                function (data) {//回调函数就是后台执行完毕再执行的逻辑
                    if(data==1){
                        alert("登录成功");
                        location.href="listpage";//登录成功跳转
                    }else{
                        alert("登录失败");
                    }
                }
            )
        })

    })
</script>
<link href="css/body.css" type="text/css" rel="stylesheet"></link>
<body>

<h1>登录页面</h1>
<!--前端访问后台资源 不加/-->
<form>

    用户名: <input type="text" name="username"><br/>
    密码: <input type="password" name="password"><br/>

    <input type="button" value="登录" id="btn">
    <a href="register.jsp"> 注册</a>
</form>

</body>
</html>

listcart.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%--
  Created by IntelliJ IDEA.
  User: CourageAndLove
  Date: 2021/7/25
  Time: 22:55
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<html>
<head>
    <title>购物车页面</title>
</head>
<!-- 引入Sementic的UI -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.css">
<body>


<center>
<h2 class="ui teal header">购物车管理页面</h2>


    <div class="ui container">
        <table width="50%" height="35%" class="ui celled table">

            <thead>
                <td>购物车编号</td>

                <td>商品数量</td>
                <td>用户名</td>
                <td>商品名字</td>
                <td>商品分类</td>
                <td>商品价格</td>
                <td>商品库存</td>
            </thead>
            <tbody>

            <c:forEach var="c" items="${requestScope.list}">

                <tr>
                    <td>${c.itemId}</td>

                    <td>${c.nums}</td>
                    <td>${c.username}</td>
                    <td>${c.goods.goodsname}</td>
                    <td>${c.goods.category}</td>
                    <td>${c.goods.price}</td>
                    <td>${c.goods.stock}</td>

                </tr>


            </c:forEach>

            </tbody>


            <tfoot>




            </tfoot>



        </table>

    </div>




</center>




<script src="https://cdn.jsdelivr.net/npm/jquery@3.2/dist/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/semantic-ui@2.4.2/dist/semantic.min.js"></script>
</body>
</html>

Cart:

package com.nt.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Cart {
    private int itemId;
    private Goods goods;

    private int nums;//购买数量
    private String username;

    public Cart(Goods goods, int nums, String username) {
        this.goods = goods;
        this.nums = nums;
        this.username = username;
    }
}

Goods:

package com.nt.pojo;


import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Goods {
    private Integer id;
    private String goodsname;
    private String category;
    private Double price;
    private Integer stock;

    public Goods(String goodsname, String category, Double price, Integer stock) {
        this.goodsname = goodsname;
        this.category = category;
        this.price = price;
        this.stock = stock;
    }
}

PageBean:

package com.nt.pojo;

import java.util.List;
//T代表任意的类型
public class PageBean <T>{
    private int currentPageNum;//当前大峡谷页
    private int pageSize=3;//每页显示条数,
    private int totalRecords;//总记录条数,数据库查出来的
    private  int totalPageNum;//总页数,计算出来的
    private List<T> list;//已经分好页的结果集



//   总记录数  每页显示条数  总页数
 /*  10         5         2
      11        5         3
                               */
    public PageBean() {
    }

    public int getCurrentPageNum() {
        return currentPageNum;
    }

    public void setCurrentPageNum(int currentPageNum) {
        this.currentPageNum = currentPageNum;
    }

    public int getPageSize() {
        return pageSize;
    }

    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }

    public int getTotalRecords() {
        return totalRecords;
    }

    public void setTotalRecords(int totalRecords) {
        this.totalRecords = totalRecords;

        if(this.totalRecords%this.pageSize==0){
            this.totalPageNum=this.totalRecords/pageSize;
        }else {
            this.totalPageNum=this.totalRecords/pageSize+1;

        }

    }

    public int getTotalPageNum() {
        return totalPageNum;
    }

    public void setTotalPageNum(int totalPageNum) {
        this.totalPageNum = totalPageNum;
    }

    public List<T> getList() {
        return list;
    }

    public void setList(List<T> list) {
        this.list = list;
    }

    @Override
    public String toString() {
        return "PageBean{" +
                "currentPageNum=" + currentPageNum +
                ", pageSize=" + pageSize +
                ", totalRecords=" + totalRecords +
                ", totalPageNum=" + totalPageNum +
                ", list=" + list +
                '}';
    }
}

User:

package com.nt.pojo;


public class User {
    private Integer id;

    private String username;
    private String password;

    //    一对一的权限
    private com.nt.pojo.Role role;

    public User() {
    }



    public User(int id, String username, String password, com.nt.pojo.Role role) {
        this.id = id;
        this.username = username;
        this.password = password;
        this.role = role;

    }

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }


    public Integer getId() {
        return id;
    }

    public void setId(Integer 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 Role getRole() {
        return role;
    }

    public void setRole(Role role) {
        this.role = role;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", password='" + password + '\'' +
                ", role=" + role +
                '}';
    }
}

GoodsDao:

package com.nt.dao;

import com.nt.pojo.Goods;

import java.util.List;

public interface GoodsDao {
//    查询数据总量
    public int getTotal();

//    分页查询

    public List<Goods> queryGoodsByPage(int currentNum,int pageSize);

    int addGoods(Goods goods);

    int deleteByGoodsId(Integer id);

    Goods queryByGoodsId(Integer id);

    int updateGoodsById(Goods goods,Integer id);

}

GoodsDaoimpl:

package com.nt.dao.impl;

import com.nt.dao.GoodsDao;
import com.nt.pojo.Goods;
import com.nt.util.DButils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class GoodsDaoimpl implements GoodsDao{
    Connection conn= DButils.getConnection();
    PreparedStatement pre=null;
    ResultSet rs=null;
    @Override
    public int getTotal() {
      String sql="select count(*) from goods";

     conn= DButils.getConnection();
      PreparedStatement pre=null;
      ResultSet rs=null;
      int count=0;

      try{
            pre=conn.prepareStatement(sql);
            rs = pre.executeQuery();
            if(rs.next()){

                count = rs.getInt(1);

            }

        }catch (Exception e){


            e.printStackTrace();
        }finally {
            DButils.closeAll();




        }



        return count;
    }

    @Override
    public List<Goods> queryGoodsByPage(int currentNum, int pageSize) {
        String sql="select *from goods limit ?,?";

        Connection conn= DButils.getConnection();
        PreparedStatement pre=null;
        ResultSet rs=null;
        int count=0;
        Goods goods=null;

        List<Goods> list=new ArrayList<>();

        try{
            pre=conn.prepareStatement(sql);

//            第一个参数和当前页面和页面大小的关系
/*            select *from goods limit 0,2;#1
            select *from goods limit 2,2;#2
            select *from goods limit 3,2;#3


第一个参数为(2-1)*2=2 (1-1)*2 也就是(currentNum-1)*pageSize*/
            pre.setInt(1,(currentNum-1)*pageSize);
            pre.setInt(2,pageSize);

            rs = pre.executeQuery();
            while(rs.next()){
                int goodsId=rs.getInt(1);
                String goodsName = rs.getString(2);
                String category = rs.getString(3);
                double price = rs.getDouble(4);
                int stock = rs.getInt(5);
                goods=new Goods(goodsId,goodsName,category,price,stock);

                list.add(goods);


            }

        }catch (Exception e){


            e.printStackTrace();
        }finally {
            DButils.closeAll();




        }



        return list;
    }

    @Override
    public int addGoods(Goods goods) {
        String sql="insert into goods(goodsName,category,price,stock) values (?,?,?,?)";

        Connection conn= DButils.getConnection();
        PreparedStatement pre=null;

        int i=0;



        try{
            pre=conn.prepareStatement(sql);





            pre.setString(1,goods.getGoodsname());
                pre.setString(2,goods.getCategory());

                pre.setDouble(3,goods.getPrice());
                pre.setInt(4,goods.getStock());


                i = pre.executeUpdate();




        }catch (Exception e){
            e.printStackTrace();
        }finally {
            DButils.closeAll();

        }

        return i ;
    }
    @Override
    public int deleteByGoodsId(Integer id) {
        String sql="delete from goods where id=?";
        int i=0;

        try {
            i = DButils.executeUpdate(sql, id);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return i;
    }

    @Override
    public Goods queryByGoodsId(Integer id) {
       String sql="select *from goods where id=?";
       Goods goods=null;
        try {
            rs = DButils.executeSelect(sql, id);

            if (rs.next()){
                int goodsId=rs.getInt(1);
                String goodsName = rs.getString(2);
                String category = rs.getString(3);
                double price = rs.getDouble(4);
                int stock = rs.getInt(5);
                goods=new Goods(goodsId,goodsName,category,price,stock);



            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        System.out.println(goods);
        return goods;
    }

    @Override
    public int updateGoodsById(Goods goods,Integer id) {
        int i=0;
        String sql="update goods set  goodsname=?,category=?,price=?,stock=? where id=?";
        try {
             i = DButils.executeUpdate(sql,
                    goods.getGoodsname(), goods.getCategory(), goods.getPrice(), goods.getStock(),
                    id);
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        }

        return  i;
    }


    public static void main(String[] args) {
        GoodsDaoimpl goodsDaoimpl=new GoodsDaoimpl();
      /*  goodsDaoimpl.queryByGoodsId(1);
        goodsDaoimpl.deleteByGoodsId(1);

        Goods goods=new Goods("冰箱","家具",3999.57,999);


        goodsDaoimpl.addGoods(goods); */
        Goods goods1=new Goods("冰箱","家具",3999.57,999);

        goodsDaoimpl.updateGoodsById(goods1,2);
    }

}

UserDao:

package com.nt.dao;

import com.nt.pojo.Menu;
import com.nt.pojo.User;

import java.util.List;

public interface UserDao {
    User queryUserByUsernameAndPassword(User user);//登录

    public List<Menu> queryMenuByRoleId(int roleid);//根据Roleid查询权限信息

}

UserDaoimpl:

package com.nt.dao.impl;

import com.nt.dao.UserDao;
import com.nt.pojo.Menu;
import com.nt.pojo.Role;
import com.nt.pojo.User;
import com.nt.util.DButils;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class UserDaoimpl implements UserDao {
    @Override
    public User queryUserByUsernameAndPassword(User user) {

       String sql="select *from user u,user_role ur where u.id=ur.uid and username=? and password=?";

        Connection conn = DButils.getConnection();
        PreparedStatement pre=null;
        ResultSet rs=null;
        User login=null;
      try{
          pre = conn.prepareStatement(sql);
          pre.setString(1,user.getUsername());
          pre.setString(2,user.getPassword());

         rs = pre.executeQuery();

          if(rs.next()){

              int id = rs.getInt(1);
              String username = rs.getString(2);
              String password = rs.getString(3);

//            获取角色id

              int roleId = rs.getInt(4);
              Role role=new Role();
              role.setRoleId(roleId);

              login=new User(id,username,password,role);



          }


      }catch (Exception e){

          e.printStackTrace();
      }finally {
          DButils.closeAll();
      }


        return login;
    }

    @Override
    public List<Menu> queryMenuByRoleId(int roleid) {

        String sql="select m.* from role_menu rm,menu m where rm.mid=m.id and rm.rid=?";

        Connection conn = DButils.getConnection();
        PreparedStatement pre=null;
        ResultSet rs=null;
      List<Menu> list=new ArrayList<Menu>();
        try{
            pre = conn.prepareStatement(sql);

            rs = pre.executeQuery();

            while(rs.next()){

                int id = rs.getInt(1);
                String name = rs.getString(2);
                String url = rs.getString(3);
                String target = rs.getString(4);
                int pId = rs.getInt(5);

                Menu menu=new Menu(id,name,url,target,pId);
                list.add(menu);


            }


        }catch (Exception e){

            e.printStackTrace();
        }finally {
            DButils.closeAll();
        }


        return list;
    }
}

CartDao:

package com.nt.dao;

import com.nt.pojo.Cart;

import java.util.List;

public interface CartDao {
    public boolean addCart(Cart cart);

    List<Cart> listAllCart();
}

CartDaoimpl:

package com.nt.dao;

import com.nt.pojo.Cart;

import java.util.List;

public interface CartDao {
    public boolean addCart(Cart cart);

    List<Cart> listAllCart();
}

util包下面的DButils

package com.nt.util;


import java.sql.*;

//这个是用来进行你的数据库的链接以及对数据库的操作:

public class DButils {



	//	定义你的数据连接的属性:
	private static final String  driver="com.mysql.jdbc.Driver";
	private static final String  url="jdbc:mysql://localhost:3306/oneclass?characterEncoding=utf-8";
	private static final String user="root";
	private static final String password="roothouzhicong";


	private static Connection conn=null;
	private  static PreparedStatement pre=null;
	private static ResultSet rs=null;

	//1.加载你的驱动程序

	static {
		try {
			Class.forName(driver);
			System.out.println("驱动加载成功!!!");
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			System.out.println("驱动加载失败!!!!!");
			e.printStackTrace();
		}
	}


	//2.获取连接
	public static Connection getConnection() {
		try {
			conn=DriverManager.getConnection(url, user, password);
			System.out.println("已经获取了连接!!");
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			System.out.println("获取连接失败!!!!");
			e.printStackTrace();
		}
		return conn;

	}

	// 关闭资源

	public static  void closeAll(){// 关闭资源的时候
		try {
			if(rs !=null)rs.close();
		} catch (Exception e) {

		}

		try {
			if(pre !=null)pre.close();
		} catch (Exception e) {

		}

		try {
			if(conn !=null)conn.close();
		} catch (Exception e) {

		}
	}


	//3.我们把我们的这个数据库的操作进行封装两个方法:(他可以完成的是你的,数据库层面  增,删,改)
	public static int executeUpdate(String sql, Object...objects) throws SQLException {
		int count=0;
		getConnection();
		pre=conn.prepareStatement(sql);
		if (objects!=null) {
			for (int i = 0; i < objects.length; i++) {
				pre.setObject(i+1, objects[i]);
			}
		}
		count=pre.executeUpdate();
		closeAll();
		return count;
	}

//	4. 我们把我们的查询封装一个方法中:所有的查询,单个查询;

	public static ResultSet executeSelect(String sql,Object...objects) throws SQLException {
		getConnection();
		pre=conn.prepareStatement(sql);
		if (objects!=null) {
			for (int i = 0; i < objects.length; i++) {
				pre.setObject(i+1, objects[i]);
			}
		}
		rs=pre.executeQuery();
		return rs;


	}


	public static void main(String[] args) {
		DButils.getConnection();
	}





}

基本实现了商品增删改查,添加购物车,和一对一表的查询,以及手写分页功能,代码比较的繁琐

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时间指导毕业设计

觉得写的好的话可以给我打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值