スプリングを使用した受注リストの作成
スプリングを利用してショッピングモールを作っています.今日は注文書の作成過程についてお話ししたいと思います.まずは完成した映像を公开!(フロントはあまり気になりませんでした:)
現在の受注リストでは、完了した受注のリストしか表示できません.
1.オーダー番号(order code)
2.オーダー日(order date)
3.出荷ステータス(Delivery status)
4.画像サムネイルurl(thumbnail url)
5.商品名(product name)
6.注文数量(product quantity)
「中華人民共和国憲法」の確認性を体現している.
テーブルには注文(Order)、配送(Delivery)、商品(Product)、注文詳細(Order Detail)テーブルが使用されています.
1.注文書、出荷表に署名し、注文番号、注文日、注文状態、出荷状態を照会する.
2.注文番号、商品番号、注文数量、商品名、商品サムネイルurlを商品、注文詳細表で検索しました.
△上のERD写真は、私が理解を助けるために行った項目のうち、一部のERDを導入した写真です.
各注文コードには複数の商品を含めることができます.そこで,上記の2つのクエリ文で得られた2つの結果を統合し,次のようなJSON形式のサービス関数を記述した.
上のJSONデータ構造にクライアントコードを渡す関数を作成しました.△まだ初心者なので、コードがごちゃごちゃしているように見えます.丁寧に書かれたコードですので、ごフィードバックください.
私のコメントを読んでいる人の中でもっと良い方法があれば、ぜひメッセージやメールを送ってください:)
現在の受注リストでは、完了した受注のリストしか表示できません.
1.オーダー番号(order code)
2.オーダー日(order date)
3.出荷ステータス(Delivery status)
4.画像サムネイルurl(thumbnail url)
5.商品名(product name)
6.注文数量(product quantity)
「中華人民共和国憲法」の確認性を体現している.
テーブルには注文(Order)、配送(Delivery)、商品(Product)、注文詳細(Order Detail)テーブルが使用されています.
1.注文書、出荷表に署名し、注文番号、注文日、注文状態、出荷状態を照会する.
2.注文番号、商品番号、注文数量、商品名、商品サムネイルurlを商品、注文詳細表で検索しました.
△上のERD写真は、私が理解を助けるために行った項目のうち、一部のERDを導入した写真です.
DB(MySQL)
<select id="getOrderDone" resultType="HashMap" parameterType="Integer">
SELECT o.order_code, o.order_date, o.order_status, d.delivery_status
FROM `order` as o INNER JOIN delivery as d
ON o.order_code=d.order_code
WHERE o.customer_code=#{customerCode} and o.order_status="done";
</select>
getOrderDoneは、受注テーブルと出荷テーブルを結合し、顧客の受注完了の受注コード、受注日、受注ステータス、および出荷ステータスを検索するクエリー文です.<select id="getDoneProOdInfo" resultType="HashMap" parameterType="int">
SELECT o.order_code, o.product_code, o.product_quantity, p.product_name, p.thumbnail_url
FROM product as p INNER JOIN order_detail as o
ON p.product_code=o.product_code
WHERE o.order_code=#{orderCode}
</select>
getDoneProOdInfoは、商品テーブルと注文詳細テーブルに対応する商品コード、注文数、商品名、サムネイルurlを取得するクエリー文です.最終目標
各注文コードには複数の商品を含めることができます.そこで,上記の2つのクエリ文で得られた2つの結果を統合し,次のようなJSON形式のサービス関数を記述した.
[{"order_code": ,
"order_date": ,
"order_status": ,
"odProInfo":[
{"order_code": ,
"product_code": ,
"thumbnail_url": ,
"product_name": ,
"product_quantity":
},
{"order_code": ,
"product_code": ,
"thumbnail_url": ,
"product_name": ,
"product_quantity":
}, ...
],
"delivery_status":
},
{"order_code": ,
"order_date": ,
"order_status": ,
"odProInfo":[
{"order_code": ,
"product_code": ,
"thumbnail_url": ,
"product_name": ,
"product_quantity":
},
{"order_code": ,
"product_code": ,
"thumbnail_url": ,
"product_name": ,
"product_quantity":
}, ...
],
"delivery_status":
},...
]
1つの注文コードに関連するデータはgetOrderDoneクエリで取得でき、各注文コードの商品に関連するデータはgetDoneProdInfoクエリで取得できます.サービス関数
上のJSONデータ構造にクライアントコードを渡す関数を作成しました.△まだ初心者なので、コードがごちゃごちゃしているように見えます.丁寧に書かれたコードですので、ごフィードバックください.
public List<HashMap<String, Object>> getOrderDone(Integer customerCode) {
//마지막으로 리턴할 List 객체(위의 JSON 형태의 데이터)
List<HashMap<String, Object>> orDoneInfoLi = new ArrayList<HashMap<String, Object>>();
//고객코드를 통해 해당 고객의 주문완료된 리스트를 얻어옵니다.(JSON 데이터에서 odProInfo를 제외한 모든 데이터를 검색합니다.)
List<HashMap<String, Object>> ordeliInfoes = orderMapper.getOrderDone(customerCode);
for (HashMap<String, Object> ordeliInfo:ordeliInfoes) {
//하나의 주문코드에 대한 정보를 담고 있는 해시맵 객체입니다.
HashMap<String, Object> orDoneInfoHm = new HashMap<String, Object>();
//하나의 주문코드에 담기는 정보들 중 상품과 관련된(odProInfo) 데이터를 제외한 모든 데이터를 해당 해시맵 객체에 저장합니다.
orDoneInfoHm.put("order_code", ordeliInfo.get("order_code"));
orDoneInfoHm.put("order_date", ordeliInfo.get("order_date"));
orDoneInfoHm.put("order_status", ordeliInfo.get("order_status"));
orDoneInfoHm.put("delivery_status", ordeliInfo.get("delivery_status"));
log.info(orDoneInfoHm.toString()); //출력 결과 1번
//하나의 주문코드에 담기는 모든 상품들에 대한 데이터를 가지는 List 객체를 생성합니다.
List<HashMap<String, Object>> odProInfoLi =
odMapper.getDoneProOdInfo(Integer.parseInt(ordeliInfo.get("order_code").toString()));
log.info(odProInfoLi.toString()); //출력 결과 2번
//주문코드에 담기는 정보들 중 아까 담지 못했던 상품에 관한 정보를 저장합니다.
orDoneInfoHm.put("odProInfo", odProInfoLi);
log.info(orDoneInfoHm.toString()); //출력 결과 3번
//최종 리턴되는 List 객체에 하나의 주문정보를 저장합니다.
orDoneInfoLi.add(orDoneInfoHm);
}
log.info(orDoneInfoLi.toString()); //최종 리턴되는 결과
return orDoneInfoLi;
}
出力結果1例
{order_code=208,
order_date=2021-02-21 10:01:10.0,
order_status=done,
delivery_status=preparing}
注文コードに含まれている商品に関する情報(ODProInfo)以外は、すべて注文コードに格納されていることが確認できます.出力結果2例
[
{order_code=208,
product_code=6,
thumbnail_url=none.png,
product_name=나이키 볼캡,
product_quantity=5},
{order_code=208,
product_code=17,
thumbnail_url=none.png,
product_name=카파 롱패딩,
product_quantity=1},
{order_code=208,
product_code=16,
thumbnail_url=none.png,
product_name=아디다스 비니,
product_quantity=1}
]
注文番号208番の商品の情報が保存されていることを確認できます.出力結果3例
{order_code=208,
order_date=2021-02-21 10:01:10.0,
order_status=done,
odProInfo=[
{order_code=208,
product_code=6,
thumbnail_url=none.png,
product_name=나이키 볼캡,
product_quantity=5},
{order_code=208,
product_code=17,
thumbnail_url=none.png,
product_name=카파 롱패딩,
product_quantity=1},
{order_code=208,
product_code=16,
thumbnail_url=none.png,
product_name=아디다스 비니,
product_quantity=1}
],
delivery_status=preparing}
注文番号208のすべてのデータが保存されていることを確認できます.最終的に返された結果
[{order_code=208,
order_date=2021-02-21 10:01:10.0,
order_status=done,
odProInfo=[
{order_code=208,
product_code=6,
thumbnail_url=none.png,
product_name=나이키 볼캡,
product_quantity=5},
{order_code=208,
product_code=17,
thumbnail_url=none.png,
product_name=카파 롱패딩,
product_quantity=1},
{order_code=208,
product_code=16,
thumbnail_url=none.png,
product_name=아디다스 비니,
product_quantity=1}],
delivery_status=preparing},
{order_code=211,
order_date=2021-02-21 11:23:30.0,
order_status=done,
odProInfo=[
{order_code=211,
product_code=18,
thumbnail_url=none.png,
product_name=컨버스 신발,
product_quantity=1}],
delivery_status=preparing},
{order_code=214,
order_date=2021-02-22 08:12:46.0,
order_status=done,
odProInfo=[
{order_code=214,
product_code=3,
thumbnail_url=none.png,
product_name=FILA 운동화,
product_quantity=2}],
delivery_status=preparing}
]
こうしてオーダーリストページの実装が完了...!私のコメントを読んでいる人の中でもっと良い方法があれば、ぜひメッセージやメールを送ってください:)
Reference
この問題について(スプリングを使用した受注リストの作成), 我々は、より多くの情報をここで見つけました https://velog.io/@galaxy/스프링으로-주문목록-만들기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol