添加购物车前提条件:你的商品的页面有已经设计成功,有全选,全不选,反选这些操作的实现
- 通过checkbox复选框的id进行添加商品,从而获取商品的名字和其他的信息
- 增加成功后通过Ajax请求进行相关的页面的加载
- 创建一个Cart实体类进行购物车的设计。
- 有一个加入购物车的button进行点击时发生点击事件,从而进行添加商品。
- 添加成功进行购物车的显示的功能。
商品分页功能的实现
-
创建一个实现类,里面封装了分页的常用属性, private int currentPageNum;//当前大峡谷页
private int pageSize=3;//每页显示条数,
private int totalRecords;//总记录条数,数据库查出来的
private int totalPageNum;//总页数,计算出来的
private List list;//已经分好页的结果集 -
需要在dao的实现类中进行相关的说记录数的查询,和分页查询
sql语句,select count(*) from table_name;select *from table_name limit ?,?; -
里面的两个参数?,? 的设置 (currentNum-1)/pageSize,和pageSize
-
然后通过封装好的PageBean进行相关的显示
-
设置页面的默认的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();
}
}