一、
二、線程同步問題:
扣除商品庫存與訂單狀態保存:
- synchronized 不推薦使用,集羣下無用,性能低下。
- 鎖數據庫:不推薦,導致數據庫性能低下。
- 分佈式鎖:zookeeper Redis
三、如何調用另外一個系統,在我們的java代碼裏發起restful請求?
- 使用http的方式。
- 使用spring提供的restemplate的方式。
四、內網穿透
把本地項目發佈到互聯網,任何一個服務器,任何一個第三方系統,都可以訪問到本地項目。(把自己本地IP,映射到外網)
【https://natapp.cn/】
暴露了本地IP,進行了映射,根據映射的地址,訪問本地的接口。
五、在線Cron 表達式生成器:
【http://cron.qqe2.com/】
六、實現單體電商-個人中心
- 用戶個人信息維護
- 用戶頭像上傳
- 用戶收穫地址維護
- 用戶訂單管理
- 用戶評價模塊
七、前端文件倉庫
(比如jquery.js等引用文件地址,都可找到)
https://www.bootcdn.cn/
八、使用分頁插件進行查詢,需要注意:
有2種解決方案:
- 前端:先查詢出所有訂單,根據查詢出來的訂單編號,利用懶加載的方式,進行請求查詢出所有的關聯商品信息,再次在網頁上渲染。
- 後端:mabatis方式,先查詢訂單信息,再根據orderId查詢出來對應的商品信息。
方案2:正確代碼:
<?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.imooc.mapper.OrdersMapperCustom" >
<resultMap id="myOrdersVo" type="com.imooc.pojo.vo.MyOrdersVo">
<id column="orderId" property="orderId"/>
<result column="createdTime" property="createdTime"/>
<result column="payMethod" property="payMethod"/>
<result column="realPayAmount" property="realPayAmount"/>
<result column="postAmount" property="postAmount"/>
<result column="orderStatus" property="orderStatus"/>
<result column="isComment" property="isComment"/>
<collection property="subOrderItemList"
select="getSubItems"
column="orderId"
ofType="com.imooc.pojo.vo.MySubOrderItemVo">
<result column="itemId" property="itemId"/>
<result column="itemName" property="itemName"/>
<result column="itemImg" property="itemImg"/>
<result column="itemSpecId" property="itemSpecId"/>
<result column="itemSpecName" property="itemSpecName"/>
<result column="buyCounts" property="buyCounts"/>
<result column="price" property="price"/>
</collection>
</resultMap>
<select id="queryMyOrders" resultMap="myOrdersVo" parameterType="Map">
SELECT
od.id as orderId,
od.created_time as createdTime,
od.pay_method as payMethod,
od.real_pay_amount as realPayAmount,
od.post_amount as postAmount,
os.order_status as orderStatus,
od.is_comment as isComment
FROM
orders od
LEFT JOIN
order_status os
on od.id = os.order_id
WHERE
od.user_id = #{paramsMap.userId}
AND
od.is_delete = 0
<if test="paramsMap.orderStatus != null">
and os.order_status = #{paramsMap.orderStatus}
</if>
ORDER BY
od.updated_time ASC
</select>
</mapper>
備註:collection 標籤中,屬性column對應的值,是上方獲得的訂單編號orderId。