mybatis实现商品添加购物车操作

用户在浏览商品的过程中,如果遇到心仪的商品往往会将其添加到购物车中,以下是一个示例展示了在获取前端传过来的商品信息之后后端如何执行添加购物车操作

1.新建数据库购物车表并关联对应的外键

我们知道,每一个用户只对应一个购物车,而每个购物车里可以有多个商品,这时候就需要对购物车表cart_list添加两个外键,使其与商品表good_list和用户表login_user1表关联起来,以便执行相应操作

在这里我们关联了good_list表里的good_list_id字段作为商品的唯一标识符,关联login_user1表里的user_account字段作为用户的唯一标识符

good_list表和login_user1表如下

这里我们手动添加了数据以便后续的测试

2.创建相关实体类

@Data
@Entity
public class CartList {
    @Id
    public Integer cartListId;
    public Integer goodListId;
    public Integer goodListCount;
    public Integer userAccount;
    public String addTime;

}
@Data
@Entity
public class GoodList {
    @Id
    private int goodListId;				//商品编号
    private String goodListName;	//商品名称
    private double goodListPrice;		//商品单价
    private String goodListPicture;
    private String goodListBriefIntroduction;
    private Integer categoryId;

}

3.创建CartMapper.xml

在resources目录下新建mappers包,在mappers包下新建CartMapper.xml,将数据库表字段与实体类字段对应

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.software.PetShop.mapper.CartMapper">
    <resultMap id="cartResult" type="com.software.PetShop.entity.CartList">
        <id column="cart_list_id" property="cartListId"/>
        <id property="goodListId" column="good_list_id"/>
        <id property="goodListCount" column="good_list_count"/>
        <id property="addTime" column="add_time"/>
        <!-- 添加userAccount属性的外键关联映射 -->
        <id property="userAccount" column="user_account" />
    </resultMap>
</mapper>

4.配置mybatis-config.xml

<mappers>
    <mapper resource="mappers/CartMapper.xml"></mapper>
</mappers>

5.新建CartController,创建addCart()方法

在这里首先接收前端传过来的用户,商品以及商品数量信息,根据用户id和商品id来判断购物车的数据库中是否已经存在这样一个商品,如果商品之前就已经存在,就执行更新操作更新原商品的数量,如果商品不存在,那就添加购物车操作,向数据库表中插入相关的数据,最后返回执行状态

    /**
     * 添加购物车
      **/
    @PostMapping("/addCart")
    public String addCart(@RequestBody String json){

        //使用mybatis作为数据库连接池
        SqlSession sqlSession = getSqlSession();
        try {
                     JSONObject jsonObject = new JSONObject(json);
                    //获取前端传递的参数类型,获取用户,商品种类,数量
                    int goodListId = (int) jsonObject.get("goodId");
                    int  goodListCount = (int) jsonObject.get("goodCount");
                    int userAccount = (int) jsonObject.get("userAccount");
                    System.out.println(goodListId);

                    JSONObject result = new JSONObject();
                    CartMapper cartMapper = sqlSession.getMapper(CartMapper.class);
                    //根据用户id和商品的id查询数据库中是否已经存在了这样一个商品
                    CartList answer =         
                       cartMapper.findByGoodListIdAndUserAccount(goodListId,userAccount);
                    Random random = new Random();
                    int randomId = random.nextInt(); // 生成一个随机整数
                    //如果有就更新购物车里商品的数量
                    if (answer!=null){
                       cartMapper.updateCartList(goodListCount,goodListId,userAccount);
                       sqlSession.commit();
                    }else {
                        //没有就新增新的商品到购物车列表
                        answer = new CartList();
                        int cartListId = randomId;
                        String addTime = new SimpleDateFormat("yyyy-MM-dd 
                              HH:mm:ss").format(new Date());
                        cartMapper.addNewCartList(cartListId, 
                               userAccount,goodListId,goodListCount,addTime);
                        sqlSession.commit();
                    }
                    if (answer!=null){

                        result.put("status","ok");
                    }else{
                        result.put("status","no");
                    }
                    System.out.println(result);
                    return result.toString();

        } finally {
            sqlSession.close();
        }
    }

6.在CartMapper接口中实现对应方法

public interface CartMapper extends BaseMapper<CartList> {
    //根据商品id和用户账号获取购物车列表
    CartList findByGoodListIdAndUserAccount(int goodListId,int userAccount);
    
    //添加新的购物车,插入新的数据
     int addNewCartList(int cartListId, int userAccount, int goodListId,int 
          goodListCount,String addTime);

}

7.在CartMapper.xml中实现sql语句

这里是根据获取到的商品id和用户账号来判断这一商品之前是否已经存在于购物车表中,因此需要多表联查

<!--通过good_id和userAccount查询列表-->
    <select id="findByGoodListIdAndUserAccount"  resultMap="cartResult">

            select c.*
            from cart_list c
                     inner join good_list g on c.good_list_id = g.good_list_id
                     inner join login_user1 u on c.user_account = u.user_account
            where c.good_list_id = #{goodListId} and c.user_account = #{userAccount}
    </select>

    <!--之前存在就更新数量-->
    <update id="updateCartList" parameterType="com.software.PetShop.entity.CartList">
        update cart_list set good_list_count = #{goodListCount} where good_list_id = #            
            {goodListId} and user_account = #{userAccount}
    </update>

    <!--购物车里没有添加过该商品,则添加该商品-->
    <insert id="addNewCartList" parameterType="com.software.PetShop.entity.CartList" >
        insert into 
           cart_list(cart_list_id,user_account,good_list_id,good_list_count,add_time)
        values(#{cartListId},#{userAccount},#{goodListId},#{goodListCount},#{addTime})
    </insert>

8.测试

这里我们手动设置一个新的数据测试数据执行添加购物车操作,可以看出数据库中成功插入了商品数据

再改变原有测试数据的商品数量,可以看出数据库表成功执行了更新操作

  • 19
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 在 SSM (Spring + Spring MVC + MyBatis) 框架中,将一个商品添加购物车的流程如下: 1. 前端页面提供一个按钮或链接,点击后发送一个 HTTP 请求给后端服务器。请求中应包含商品的 ID 以及要添加购物车中的数量。 2. 后端服务器收到请求后,使用 MyBatis 框架从数据库中查询商品的信息。 3. 接着,可以使用 Spring MVC 中的控制器 (Controller) 来处理这个请求。控制器可以接收请求参数,并使用 Spring 中的依赖注入 (DI) 功能将商品信息注入到业务逻辑层 (Service) 中。 4. 业务逻辑层负责将商品添加购物车中。这可以通过使用 Spring 中的事务管理功能来保证数据库操作的原子性。 5. 当业务逻辑处理完成后,控制器可以将处理结果返回给前端页面。 这是一种可行的方法,但并不是唯一的方法。具体的实现方式可能会有所不同,取决于你的应用程序的具体需求和设计。 ### 回答2: 在SSM框架中,我们可以使用以下步骤将一个商品添加购物车: 1. 创建一个购物车实体类,包含商品的信息,如商品ID、商品名称、商品数量等。 ```java public class ShoppingCartItem { private int itemId; private String itemName; private int quantity; //getters and setters } ``` 2. 在购物车控制器中,创建一个空的购物车列表。 ```java List<ShoppingCartItem> shoppingCart = new ArrayList<>(); ``` 3. 创建一个方法,用于处理添加商品购物车的请求。这个方法接收商品ID和数量作为参数。 ```java @RequestMapping(value = "/addToCart", method = RequestMethod.POST) public String addToCart(@RequestParam("itemId") int itemId, @RequestParam("quantity") int quantity) { // 创建一个购物车项 ShoppingCartItem item = new ShoppingCartItem(); item.setItemId(itemId); item.setQuantity(quantity); // 添加购物车项到购物车列表 shoppingCart.add(item); // 返回购物车页面 return "shoppingCart"; } ``` 4. 在商品页面或其他需要添加购物车的地方,通过表单或AJAX将商品ID和数量发送到`/addToCart`的URL。 ```html <form action="/addToCart" method="post"> <input type="hidden" name="itemId" value="1"> <label for="quantity">数量:</label> <input type="number" name="quantity" min="1" value="1"> <input type="submit" value="添加购物车"> </form> ``` 5. 在购物车页面中,遍历购物车列表,显示购物车中的商品信息。 ```html <table> <tr> <th>商品ID</th> <th>商品名称</th> <th>数量</th> </tr> <c:forEach var="item" items="${shoppingCart}"> <tr> <td>${item.itemId}</td> <td>${item.itemName}</td> <td>${item.quantity}</td> </tr> </c:forEach> </table> ``` ### 回答3: 在SSM框架中,将一个商品添加购物车需要以下步骤: 1. 创建购物车实体类:首先,需要创建一个购物车实体类,可以包含商品的信息,如id、名称、价格等,以及购物车的其他信息。 2. 创建商品实体类:同样地,还需要创建商品实体类,可以包含商品的各种属性,比如id、名称、价格等。 3. 编写Controller层:在Controller层中,编写一个方法,用于处理添加商品购物车的请求。该方法可以接收商品id作为参数,并根据id查询商品的详细信息。 4. 编写Service层:在Service层中,编写一个方法,该方法根据商品id查询商品信息,并将商品信息保存到购物车实体类中。 5. 编写Dao层:在Dao层中,编写一个方法,该方法通过商品id查询商品的详细信息,并返回给Service层。 6. 编写前端页面:在前端页面上,通过用户的操作触发添加商品购物车的请求,并将商品id传递给Controller层的方法。 7. 进行数据的封装与展示:在前端页面上,通过ajax等方式将商品信息发送给后台,并将商品信息保存到购物车实体类中。 8. 返回结果:最后,返回一个成功或失败的结果给前端页面,用于提示用户商品是否成功添加购物车。 以上就是在SSM框架中将一个商品添加购物车的基本步骤。实际开发中,还可以根据需求进行适当的扩展和完善。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值