
3個數據層(pojo,dto,vo)
POJO(也叫Entiy、model):每一個字段,與數據庫中表字段相對應,表字段"_"對應java對象的"駝峰"
package com.xiaolong.pojo;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
public class OmsOrder implements Serializable {
@ApiModelProperty(value = "訂單id")
private Long id;
private Long memberId;
private Long couponId;
@ApiModelProperty(value = "訂單編號")
private String orderSn;
@ApiModelProperty(value = "提交時間")
private Date createTime;
@ApiModelProperty(value = "用戶帳號")
private String memberUsername;
@ApiModelProperty(value = "訂單總金額")
private BigDecimal totalAmount;
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public Long getMemberId() {
return memberId;
}
public void setMemberId(Long memberId) {
this.memberId = memberId;
}
public Long getCouponId() {
return couponId;
}
public void setCouponId(Long couponId) {
this.couponId = couponId;
}
public String getOrderSn() {
return orderSn;
}
public void setOrderSn(String orderSn) {
this.orderSn = orderSn;
}
public Date getCreateTime() {
return createTime;
}
public void setCreateTime(Date createTime) {
this.createTime = createTime;
}
public String getMemberUsername() {
return memberUsername;
}
public void setMemberUsername(String memberUsername) {
this.memberUsername = memberUsername;
}
public BigDecimal getTotalAmount() {
return totalAmount;
}
public void setTotalAmount(BigDecimal totalAmount) {
this.totalAmount = totalAmount;
}
public BigDecimal getPayAmount() {
return payAmount;
}
public void setPayAmount(BigDecimal payAmount) {
this.payAmount = payAmount;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append(getClass().getSimpleName());
sb.append(" [");
sb.append("Hash = ").append(hashCode());
sb.append(", id=").append(id);
sb.append(", memberId=").append(memberId);
sb.append(", couponId=").append(couponId);
sb.append(", orderSn=").append(orderSn);
sb.append(", createTime=").append(createTime);
sb.append(", memberUsername=").append(memberUsername);
sb.append(", totalAmount=").append(totalAmount);
sb.append("]");
return sb.toString();
}
}
DTO(也叫param,表單用):數據傳輸對象
package com.xiaolong.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import javax.validation.constraints.Email;
import javax.validation.constraints.NotEmpty;
@Getter
@Setter
public class UmsAdminParam {
@NotEmpty
@ApiModelProperty(value = "用戶名", required = true)
private String username;
@NotEmpty
@ApiModelProperty(value = "密碼", required = true)
private String password;
@ApiModelProperty(value = "用戶頭像")
private String icon;
@Email
@ApiModelProperty(value = "郵箱")
private String email;
@ApiModelProperty(value = "用戶昵稱")
private String nickName;
@ApiModelProperty(value = "備注")
private String note;
}
VO(前端調用后端接口或者請求后端,后端返回給前端的響應數據用,如json字符串,有的項目VO和DTO是不區分,中大型項目都是區分開的)
package com.xiaolong.vo;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
public class OssCallbackVo {
@ApiModelProperty("文件名稱")
private String filename;
@ApiModelProperty("文件大小")
private String size;
@ApiModelProperty("文件的mimeType")
private String mimeType;
@ApiModelProperty("圖片文件的寬")
private String width;
@ApiModelProperty("圖片文件的高")
private String height;
}
Dao層(dao也叫做mapper,mapper.xml實現Dao)
dao或者mapper接口,不需要你實現,mybatis替你實現了接口,你只需要定義xml之后mybatis就幫你實現了dao方法,當然你也可以用注解的方式,就相當於你只是定義了一個抽象的方法,有下面工人自動幫你做具體的事情了
public interface OmsOrderDao {
/**
* 條件查詢訂單
*/
List<OmsOrder> getList(@Param("queryParam") OmsOrderQueryParam queryParam);
/**
* 批量發貨
*/
int delivery(@Param("list") List<OmsOrderDeliveryParam> deliveryParamList);
/**
* 獲取訂單詳情
*/
OmsOrderDetail getDetail(@Param("id") Long id);
}
<?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.xiaolong.dao.OmsOrderDao">
<resultMap id="orderDetailResultMap" type="com.xiaolong.dto.OmsOrderDetail" extends="com.xiaolong.mapper.OmsOrderMapper.BaseResultMap">
<collection property="orderItemList" resultMap="com.xiaolong.mapper.OmsOrderItemMapper.BaseResultMap" columnPrefix="item_"/>
<collection property="historyList" resultMap="com.xiaolong.mapper.OmsOrderOperateHistoryMapper.BaseResultMap" columnPrefix="history_"/>
</resultMap>
<select id="getList" resultMap="com.xiaolong.mapper.OmsOrderMapper.BaseResultMap">
SELECT *
FROM
oms_order
WHERE
delete_status = 0
<if test="queryParam.orderSn!=null and queryParam.orderSn!=''">
AND order_sn = #{queryParam.orderSn}
</if>
<if test="queryParam.status!=null">
AND `status` = #{queryParam.status}
</if>
<if test="queryParam.sourceType!=null">
AND source_type = #{queryParam.sourceType}
</if>
<if test="queryParam.orderType!=null">
AND order_type = #{queryParam.orderType}
</if>
<if test="queryParam.createTime!=null and queryParam.createTime!=''">
AND create_time LIKE concat(#{queryParam.createTime},"%")
</if>
<if test="queryParam.receiverKeyword!=null and queryParam.receiverKeyword!=''">
AND (
receiver_name LIKE concat("%",#{queryParam.receiverKeyword},"%")
OR receiver_phone LIKE concat("%",#{queryParam.receiverKeyword},"%")
)
</if>
</select>
<update id="delivery">
UPDATE oms_order
SET
delivery_sn = CASE id
<foreach collection="list" item="item">
WHEN #{item.orderId} THEN #{item.deliverySn}
</foreach>
END,
delivery_company = CASE id
<foreach collection="list" item="item">
WHEN #{item.orderId} THEN #{item.deliveryCompany}
</foreach>
END,
delivery_time = CASE id
<foreach collection="list" item="item">
WHEN #{item.orderId} THEN now()
</foreach>
END,
`status` = CASE id
<foreach collection="list" item="item">
WHEN #{item.orderId} THEN 2
</foreach>
END
WHERE
id IN
<foreach collection="list" item="item" separator="," open="(" close=")">
#{item.orderId}
</foreach>
AND `status` = 1
</update>
<select id="getDetail" resultMap="orderDetailResultMap">
SELECT o.*,
oi.id item_id,
oi.product_id item_product_id,
oi.product_sn item_product_sn,
oi.product_pic item_product_pic,
oi.product_name item_product_name,
oi.product_brand item_product_brand,
oi.product_price item_product_price,
oi.product_quantity item_product_quantity,
oi.product_attr item_product_attr,
oh.id history_id,
oh.operate_man history_operate_man,
oh.create_time history_create_time,
oh.order_status history_order_status,
oh.note history_note
FROM
oms_order o
LEFT JOIN oms_order_item oi ON o.id = oi.order_id
LEFT JOIN oms_order_operate_history oh ON o.id = oh.order_id
WHERE
o.id = #{id}
ORDER BY oi.id ASC,oh.create_time DESC
</select>
</mapper>
Service層
接口service層,實現方法serviceImpl,調用dao方法實現功能,最后以便Conttroller調用
Controller層

一鍵三連,感謝!
