日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

整合IDEA Maven SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

 Frank_Chia 2018-01-30

這是一個(gè)整合IDEA+Maven+SSM框架的高并發(fā)的商品秒殺項(xiàng)目。我們將分為以下幾篇文章來(lái)進(jìn)行詳細(xì)的講解:

  • 01 Java高并發(fā)秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

  • 02 Java高并發(fā)秒殺項(xiàng)目之Service層

  • 03 Java高并發(fā)秒殺項(xiàng)目之web層

  • 04 Java高并發(fā)秒殺項(xiàng)目之高并發(fā)優(yōu)化

項(xiàng)目的效果圖

秒殺商品列表

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

開(kāi)始秒殺提示界面

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

秒殺結(jié)束提示界面

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

新建一個(gè)Maven項(xiàng)目

以IntelliJ IDEA為例,點(diǎn)擊File > New > Project > Maven

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

然后點(diǎn)擊Next繼續(xù);

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

填寫(xiě)相關(guān)信息,點(diǎn)擊Next;

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

最后點(diǎn)擊Finish,完成創(chuàng)建。

如果右下角彈出下面這個(gè)提示,點(diǎn)擊Enable Auto-Import

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

創(chuàng)建webapp目錄

點(diǎn)擊File > Project Structure

步驟1

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟2

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟3

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟4

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟5

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟6

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟7

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

步驟8

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

構(gòu)建pom文件

Maven項(xiàng)目創(chuàng)建好了,接下來(lái)我們要添加一些jar包的依賴,也就是在pom.xml中添加各種開(kāi)源組件的坐標(biāo)。

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

完整的代碼,請(qǐng)查看項(xiàng)目里的pom.xml文件

到此,我們項(xiàng)目的初始化工作完成。

秒殺系統(tǒng)業(yè)務(wù)分析

秒殺系統(tǒng)業(yè)務(wù)流程如下:

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

由圖可以發(fā)現(xiàn),整個(gè)系統(tǒng)其實(shí)是針對(duì)庫(kù)存做的系統(tǒng)。用戶成功秒殺商品,對(duì)于我們系統(tǒng)的操作就是:

  1. 減庫(kù)存

  2. 記錄用戶的購(gòu)買明細(xì)。下面看看我們用戶對(duì)庫(kù)存的業(yè)務(wù)分析:

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

記錄用戶的秒殺成功信息,我們需要記錄:1、誰(shuí)購(gòu)買成功了。2、購(gòu)買成功的時(shí)間/有效期。3、付款/發(fā)貨信息。這些數(shù)據(jù)組成了用戶的秒殺成功信息,也就是用戶的購(gòu)買行為。

為什么我們的系統(tǒng)需要事務(wù)?看如下這些故障:1、若是用戶成功秒殺商品我們記錄了其購(gòu)買明細(xì)卻沒(méi)有減庫(kù)存。導(dǎo)致商品的超賣。2、減了庫(kù)存卻沒(méi)有記錄用戶的購(gòu)買明細(xì)。導(dǎo)致商品的少賣。對(duì)于上述兩個(gè)故障,若是沒(méi)有事務(wù)的支持,損失最大的無(wú)疑是我們的用戶和商家。在MySQL中,它內(nèi)置的事務(wù)機(jī)制,可以準(zhǔn)確的幫我們完成減庫(kù)存和記錄用戶購(gòu)買明細(xì)的過(guò)程。

MySQL實(shí)現(xiàn)秒殺的難點(diǎn)分析:當(dāng)用戶A秒殺id為10的商品時(shí),此時(shí)MySQL需要進(jìn)行的操作是:1、開(kāi)啟事務(wù)。2、更新商品的庫(kù)存信息。3、添加用戶的購(gòu)買明細(xì),包括用戶秒殺的商品id以及唯一標(biāo)識(shí)用戶身份的信息如電話號(hào)碼等。4、提交事務(wù)。若此時(shí)有另一個(gè)用戶B也在秒殺這件id為10的商品,他就需要等待,等待到用戶A成功秒殺到這件商品然后MySQL成功的提交了事務(wù)他才能拿到這個(gè)id為10的商品的鎖從而進(jìn)行秒殺,而同一時(shí)間是不可能只有用戶B在等待,肯定是有很多很多的用戶都在等待拿到這個(gè)行級(jí)鎖。秒殺的難點(diǎn)就在這里,如何高效的處理這些競(jìng)爭(zhēng)?如何高效的完成事務(wù)?在后面第4個(gè)模塊如何進(jìn)行高并發(fā)的優(yōu)化為大家講解。

我們這個(gè)系統(tǒng)需要完成秒殺的哪些功能?先來(lái)看看天貓的一個(gè)秒殺庫(kù)存系統(tǒng):

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

大家看了是不是覺(jué)得很復(fù)雜?當(dāng)然不用擔(dān)心,我們只是實(shí)現(xiàn)秒殺的一些功能:1、秒殺接口的暴露。2、執(zhí)行秒殺的操作。3、相關(guān)查詢,比如說(shuō)列表查詢,詳情頁(yè)查詢。我們實(shí)現(xiàn)這三個(gè)功能即可。接下來(lái)進(jìn)行具體的編碼工作,首先是建立數(shù)據(jù)庫(kù)以及Dao層的編碼。

建立數(shù)據(jù)庫(kù)

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

完整的數(shù)據(jù)庫(kù)sql代碼,在項(xiàng)目的sql文件夾里的ngu_seckill.sql

創(chuàng)建實(shí)體類

先創(chuàng)建秒殺商品類com/nnngu/entity/Seckill.java

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

創(chuàng)建秒殺狀態(tài)類com/nnngu/entity/SuccessKilled.java

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

為實(shí)體類創(chuàng)建對(duì)應(yīng)的mapper接口,也就是dao接口

com/nnngu/dao/SeckillMapper.java

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

com/nnngu/dao/SuccessKilledMapper.java

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

創(chuàng)建對(duì)應(yīng)的mapper.xmlresources目錄下創(chuàng)建com.nnngu.dao包,然后創(chuàng)建SeckillMapper.xmlSuccessKilledMapper.xml,如下圖:

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

創(chuàng)建Mybatis的配置文件mybatis-config.xml

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

mybatis-config.xml配置文件的內(nèi)容參照項(xiàng)目的源代碼

建立連接數(shù)據(jù)庫(kù)的配置文件jdbc.properties

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

注意:

jdbc.properties
里面的屬性要根據(jù)自己的情況進(jìn)行修改。

建立Spring的dao的配置文件

創(chuàng)建applicationContext-dao.xml如下圖:

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

applicationContext-dao.xml

文件的具體代碼請(qǐng)參照項(xiàng)目的源代碼。

測(cè)試

創(chuàng)建測(cè)試類com/nnngu/dao/SeckillMapperTest.java
如下圖:

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

該文件的具體代碼請(qǐng)參照項(xiàng)目的源代碼。

測(cè)試結(jié)果

測(cè)試查詢所有商品的方法queryAll()

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

測(cè)試結(jié)果如下:

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

到此,我們成功完成了Dao層開(kāi)發(fā)及測(cè)試。

源代碼請(qǐng)復(fù)制下鏈接:

data:text/html;charset=UTF-8;base64,

5p625p6E5biI5a2m5Lmg5Lqk5rWB576k5Y+35pivNTc1NzUxODU0Cg==

復(fù)制粘貼在網(wǎng)站即可!

整合IDEA+Maven+SSM框架高并發(fā)的商品秒殺項(xiàng)目之業(yè)務(wù)分析與DAO層

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多