本文介绍买家订单( order_master 表和 order_detail 表)部分的 dao 层开发。
其中一个买家下了一个订单(order_master表),一个订单中可能会有多个商品(order_detail表),这个两个表是通过 order_id 这个字段来关联的。
...其他的继承上一节
1、数据库结构
order_master 表结构
order_master 表最终的测试数据
order_detail 表结构
order_detail 表最终的测试数据
2、最终文件结构
1、OrderMaster.java
注意:第 44 行和第 47 行使用的两个枚举类型,第三步会介绍。
同时,订单状态和支付状态设置默认值,所以后面的 Dao 里就不需要给其赋值。
2、OrderDetail.java
1、OrderStatusEnum.java
2、PayStauts.java
这两个枚举类型是和上面第二步呼应的,使用枚举避免我们出错,也方便管理。
1、OrderMasterDao.java
这里自定义的一个方法:根据买家的openid(相当于账号的意思)来查询订单列表,并使用分页。
2、OrderDetailDao.java
这里自定义的一个方法,根据订单id来查找订单详情列表,不分页
1、OrderMasterDaoTest.java
2、OrderDetailDaoTest.java
对于第二个测试,我们在第45行打个断点,然后Debug,可以看到该订单查到了两条详情
本文地址:https://liuyanzhao.com/6685.html
其中一个买家下了一个订单(order_master表),一个订单中可能会有多个商品(order_detail表),这个两个表是通过 order_id 这个字段来关联的。
本文新关键词
...其他的继承上一节
一、开发准备
1、数据库结构
order_master 表结构
order_master 表最终的测试数据
order_detail 表结构
order_detail 表最终的测试数据
2、最终文件结构
二、新建实体类
1、OrderMaster.java
- package com.liuyanzhao.sell.entity;
- import com.liuyanzhao.sell.enums.OrderStatusEnum;
- import com.liuyanzhao.sell.enums.PayStatusEnum;
- import lombok.Data;
- import org.hibernate.annotations.DynamicUpdate;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import java.math.BigDecimal;
- import java.util.Date;
- /**
- * @Author: 言曌
- * @Date: 2017/11/12
- * @Time: 下午9:06
- */
- @Entity
- @Data
- @DynamicUpdate
- public class OrderMaster {
- //订单编号
- @Id
- private String orderId;
- //买家名字
- private String buyerName;
- //买家电话
- private String buyerPhone;
- //买家地址
- private String buyerAddress;
- //买家微信Openid
- private String buyerOpenid;
- //订单总金额
- private BigDecimal orderAmount;
- //订单状态,默认为0新订单
- private Integer orderStatus = OrderStatusEnum.NEW.getCode();
- //支付状态,默认为0未支付
- private Integer payStatus = PayStatusEnum.WAIT.getCode();
- //订单创建时间
- private Date createTime;
- //订单更新时间
- private Date updateTime;
- }
注意:第 44 行和第 47 行使用的两个枚举类型,第三步会介绍。
同时,订单状态和支付状态设置默认值,所以后面的 Dao 里就不需要给其赋值。
2、OrderDetail.java
- package com.liuyanzhao.sell.entity;
- import lombok.Data;
- import javax.persistence.Entity;
- import javax.persistence.Id;
- import java.math.BigDecimal;
- /**
- * @Author: 言曌
- * @Date: 2017/11/13
- * @Time: 上午9:33
- */
- @Entity
- @Data
- public class OrderDetail {
- //订单详情id
- @Id
- private String detailId;
- //订单id
- private String orderId;
- //商品id
- private String productId;
- //商品名称
- private String productName;
- //单价
- private BigDecimal productPrice;
- //商品数量
- private Integer productQuantity;
- //商品小图
- private String productIcon;
- }
三、新建枚举
1、OrderStatusEnum.java
- package com.liuyanzhao.sell.enums;
- import lombok.Getter;
- /**
- * @Author: 言曌
- * @Date: 2017/11/12
- * @Time: 下午9:35
- */
- @Getter
- public enum OrderStatusEnum {
- NEW(0,"新订单"),
- FINISHED(1,"完结"),
- CANCEL(2,"已取消")
- ;
- private Integer code;
- private String message;
- OrderStatusEnum(Integer code,String message) {
- this.code = code;
- this.message = message;
- }
- }
2、PayStauts.java
- package com.liuyanzhao.sell.enums;
- import lombok.Getter;
- /**
- * @Author: 言曌
- * @Date: 2017/11/12
- * @Time: 下午9:40
- */
- @Getter
- public enum PayStatusEnum {
- WAIT(0,"未支付"),
- SUCCESS(1,"支持成功")
- ;
- private Integer code;
- private String message;
- PayStatusEnum(Integer code,String message) {
- this.code = code;
- this.message = message;
- }
- }
这两个枚举类型是和上面第二步呼应的,使用枚举避免我们出错,也方便管理。
四、Dao 层的创建
1、OrderMasterDao.java
- package com.liuyanzhao.sell.dao;
- import com.liuyanzhao.sell.entity.OrderMaster;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.jpa.repository.JpaRepository;
- /**
- * @Author: 言曌
- * @Date: 2017/11/13
- * @Time: 上午9:38
- */
- public interface OrderMasterDao extends JpaRepository<OrderMaster,String>{
- Page<OrderMaster> findByBuyerOpenid(String buyerOpenid, Pageable pageable);
- }
这里自定义的一个方法:根据买家的openid(相当于账号的意思)来查询订单列表,并使用分页。
2、OrderDetailDao.java
- package com.liuyanzhao.sell.dao;
- import com.liuyanzhao.sell.entity.OrderDetail;
- import org.springframework.data.jpa.repository.JpaRepository;
- import java.util.List;
- /**
- * @Author: 言曌
- * @Date: 2017/11/13
- * @Time: 上午9:42
- */
- public interface OrderDetailDao extends JpaRepository<OrderDetail,String> {
- List<OrderDetail> findByOrderId(String orderId);
- }
这里自定义的一个方法,根据订单id来查找订单详情列表,不分页
五、Dao 层的测试
1、OrderMasterDaoTest.java
- package com.liuyanzhao.sell.dao;
- import com.liuyanzhao.sell.entity.OrderMaster;
- import org.junit.Assert;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.data.domain.Page;
- import org.springframework.data.domain.PageRequest;
- import org.springframework.test.context.junit4.SpringRunner;
- import java.math.BigDecimal;
- /**
- * @Author: 言曌
- * @Date: 2017/11/13
- * @Time: 上午9:44
- */
- @RunWith(SpringRunner.class)
- @SpringBootTest
- public class OrderMasterDaoTest {
- @Autowired
- private OrderMasterDao dao;
- private final String OPENID = "110100";
- @Test
- public void saveTest() {
- OrderMaster orderMaster = new OrderMaster();
- orderMaster.setOrderId("2");
- orderMaster.setBuyerName("Jack");
- orderMaster.setBuyerPhone("13114515512");
- orderMaster.setBuyerAddress("黄土高原");
- orderMaster.setBuyerOpenid(OPENID);
- orderMaster.setOrderAmount(new BigDecimal(12.5));
- System.out.println(orderMaster);
- OrderMaster result = dao.save(orderMaster);
- Assert.assertNotNull(result);
- }
- @Test
- public void findByBuyerOpenid() throws Exception {
- PageRequest request = new PageRequest(0,2);
- Page<OrderMaster> result = dao.findByBuyerOpenid(OPENID,request);
- Assert.assertNotEquals(0,result.getTotalElements());
- }
- }
2、OrderDetailDaoTest.java
- package com.liuyanzhao.sell.dao;
- import com.liuyanzhao.sell.entity.OrderDetail;
- import org.junit.Assert;
- import org.junit.Test;
- import org.junit.runner.RunWith;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.boot.test.context.SpringBootTest;
- import org.springframework.test.context.junit4.SpringRunner;
- import java.math.BigDecimal;
- import java.util.List;
- /**
- * @Author: 言曌
- * @Date: 2017/11/13
- * @Time: 上午10:29
- */
- @RunWith(SpringRunner.class)
- @SpringBootTest
- public class OrderDetailDaoTest {
- @Autowired
- private OrderDetailDao dao;
- @Test
- public void saveTest() {
- OrderDetail orderDetail = new OrderDetail();
- orderDetail.setDetailId("2");
- orderDetail.setOrderId("332");
- orderDetail.setProductIcon("11111.jpg");
- orderDetail.setProductId("22");
- orderDetail.setProductPrice(new BigDecimal("7.0"));
- orderDetail.setProductQuantity(2);
- orderDetail.setProductName("小鸡腿");
- dao.save(orderDetail);
- Assert.assertNotNull(orderDetail);
- }
- @Test
- public void findByOrderId() throws Exception {
- List<OrderDetail> orderDetailList = dao.findByOrderId("1");
- Assert.assertNotEquals(0,orderDetailList.size());
- }
- }
对于第二个测试,我们在第45行打个断点,然后Debug,可以看到该订单查到了两条详情
本文地址:https://liuyanzhao.com/6685.html
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏