久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營的一線實戰(zhàn)洞察。

Java課設(shè)必備:健身房管理系統(tǒng)SSM+MySQL完整實現(xiàn)指南

Java課設(shè)必備:健身房管理系統(tǒng)SSM+MySQL完整實現(xiàn)指南 簡介面向Java開發(fā)學(xué)習(xí)者及畢業(yè)設(shè)計/課程設(shè)計人員這份基于SSM框架的健身房管理系統(tǒng)資源覆蓋了從會員卡辦理、課程與教練信息管理到私教課程報名、上課記錄維護(hù)、會員繳費(fèi)統(tǒng)計及意見反饋處理等完整業(yè)務(wù)鏈系統(tǒng)后臺按管理員和會員兩種角色劃分前者負(fù)責(zé)卡務(wù)、課程、教練、記錄與統(tǒng)計管理后者可查看個人會員卡、修改信息、報名私教并提交反饋。資料包以zip壓縮包形式提供整體大小約21.61MB壓縮包格式便于直接下載部署。目前已有75人參與學(xué)習(xí)。資源以Java為開發(fā)語言采用SSM框架進(jìn)行代碼分層管理配合MySQL數(shù)據(jù)庫設(shè)計能幫助讀者理解框架整合思路、數(shù)據(jù)庫表結(jié)構(gòu)設(shè)計以及角色權(quán)限下的核心交互流程可作為課程設(shè)計、畢業(yè)設(shè)計或項目初期原型的代碼基礎(chǔ)與業(yè)務(wù)參考適合需要快速掌握健身房管理系統(tǒng)核心模塊的開發(fā)者。1. 健身房管理系統(tǒng)為什么它成了Java課設(shè)里的常駐題目在Java課程設(shè)計和畢業(yè)設(shè)計選題里健身房管理系統(tǒng)是出現(xiàn)頻率極高的題目。它技術(shù)棧相對固定Java SSMSpring、SpringMVC、MyBatis MySQL卻把會員卡辦理、課程和教練管理、私教課報名、上課記錄、會員繳費(fèi)、意見反饋這些業(yè)務(wù)串成完整閉環(huán)還區(qū)分了管理員和會員兩套權(quán)限視角。它不是那種只有幾個登錄頁面的空殼demo。管理員要管會員卡與繳費(fèi)、維護(hù)課程和教練信息、添加私教課上課記錄、回復(fù)會員反饋會員能修改資料、報私教課、查繳費(fèi)記錄和上課記錄、提交反饋。業(yè)務(wù)面覆蓋了權(quán)限區(qū)分、一對多建模、統(tǒng)計查詢正好把SSM框架知識落到真實項目里。適合正在做課設(shè)、需要參考源碼的同學(xué)也適合剛學(xué)完Servlet想看看SpringMVCMyBatis怎么組織項目的新手。下文按拆表→搭框架→實現(xiàn)業(yè)務(wù)→排坑→驗收講解的順序把這套系統(tǒng)關(guān)鍵環(huán)節(jié)完整復(fù)現(xiàn)一遍。2. 數(shù)據(jù)庫設(shè)計先拆七張業(yè)務(wù)表再寫Mapper SQL2.1 先按角色把業(yè)務(wù)邊界劃出來在建表之前先把兩個模塊的邊界理清。管理員負(fù)責(zé)會員卡信息管理和會員繳費(fèi)完成課程和教練信息的添加與管理添加私教課程上課記錄查看和回復(fù)意見反饋還要能對繳費(fèi)記錄、上課記錄做查詢統(tǒng)計。會員負(fù)責(zé)查看會員卡信息、修改個人資料、報名私教課程、查看自己的繳費(fèi)和上課記錄、提交意見反饋。邊界定了表就出來了。會員得存教練和課程得存私教報名是“一個會員選一門課”的關(guān)聯(lián)關(guān)系上課記錄要反映“誰在什么時間上了誰的課”繳費(fèi)記錄要回答“會員為什么付了多少錢”反饋要記錄“會員說了什么、管理員有沒有回復(fù)”。按這些業(yè)務(wù)點我拆成七張表member、coach、course、signup、attend_record、payment、feedback。表名職責(zé)關(guān)鍵字段member會員與會員卡信息card_no、balance、expire_datecoach教練信息name、specialty、statuscourse課程信息coach_id、price、start_time、end_timesignup私教報名關(guān)系member_id、course_idattend_record實際上課記錄member_id、course_id、coach_idpayment繳費(fèi)記錄member_id、amount、pay_typefeedback意見反饋與回復(fù)content、reply、status這里有個取舍會員卡信息我沒有單獨(dú)建card表而是把卡號、卡類型、到期時間、余額直接放進(jìn)member表。一個會員對應(yīng)一張卡本來就是一對一關(guān)系課設(shè)這個規(guī)模下單獨(dú)建表只會增加聯(lián)表查詢沒什么收益。如果以后要支持實體卡掛失補(bǔ)辦、多卡種切換再把card拆出來也不遲。2.2 建表腳本與關(guān)鍵字段設(shè)計member表的建表腳本長這樣CREATE TABLE member ( id INT(11) NOT NULL AUTO_INCREMENT, card_no VARCHAR(32) NOT NULL COMMENT 會員卡號, card_type VARCHAR(20) DEFAULT 普通卡 COMMENT 卡類型普通卡/月卡/年卡, password VARCHAR(64) NOT NULL COMMENT 登錄密碼MD5 后存儲, name VARCHAR(30) NOT NULL, phone VARCHAR(20) DEFAULT NULL, balance DECIMAL(10,2) DEFAULT 0.00 COMMENT 卡內(nèi)余額, expire_date DATE DEFAULT NULL COMMENT 會員卡到期時間, status TINYINT(4) DEFAULT 1 COMMENT 1 正常0 停用, PRIMARY KEY (id), UNIQUE KEY uk_card_no (card_no) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT會員表;幾個字段值得單獨(dú)說明。金額一律用DECIMAL(10,2)不用float或double浮點數(shù)在結(jié)算類業(yè)務(wù)里會累積誤差這在課設(shè)答辯時經(jīng)常被問到。密碼字段存的是MD5后的值不是明文登錄時拿頁面輸入做同樣的MD5再比較不要在SQL里對數(shù)據(jù)庫字段做運(yùn)算。card_no加了唯一索引防止同一張卡被重復(fù)辦理。課程和教練是典型的“教練一對多課程”關(guān)系course表里存coach_idCREATE TABLE coach ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(30) NOT NULL, phone VARCHAR(20) DEFAULT NULL, specialty VARCHAR(50) DEFAULT NULL COMMENT 擅長方向增肌/減脂/康復(fù), status TINYINT(4) DEFAULT 1 COMMENT 1 在職0 離職, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT教練表; CREATE TABLE course ( id INT(11) NOT NULL AUTO_INCREMENT, name VARCHAR(50) NOT NULL, coach_id INT(11) DEFAULT NULL, type VARCHAR(20) DEFAULT 私教 COMMENT 私教/團(tuán)課, price DECIMAL(10,2) DEFAULT 0.00, start_time DATETIME DEFAULT NULL, end_time DATETIME DEFAULT NULL, max_count INT(11) DEFAULT 10 COMMENT 團(tuán)課人數(shù)上限, status TINYINT(4) DEFAULT 1, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT課程表;課程表里同時存start_time和end_time是為了后面排課沖突判斷和上課記錄查詢時可以直接用時間范圍去查不用在Java里手動解析拼接字符串。max_count對團(tuán)課有用私教課默認(rèn)填1頁面報名按鈕什么時候置灰就看當(dāng)前報名數(shù)是否等于max_count。剩余四張表signup、attend_record、payment、feedback結(jié)構(gòu)差異大合并放在一個腳本里CREATE TABLE signup ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, course_id INT(11) NOT NULL, signup_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id), UNIQUE KEY uk_member_course (member_id, course_id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT私教報名表; CREATE TABLE attend_record ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, course_id INT(11) NOT NULL, coach_id INT(11) NOT NULL, attend_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT上課記錄表; CREATE TABLE payment ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, amount DECIMAL(10,2) NOT NULL, pay_type VARCHAR(20) DEFAULT 現(xiàn)金 COMMENT 現(xiàn)金/微信/支付寶, pay_time DATETIME DEFAULT CURRENT_TIMESTAMP, remark VARCHAR(255) DEFAULT NULL, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT繳費(fèi)記錄表; CREATE TABLE feedback ( id INT(11) NOT NULL AUTO_INCREMENT, member_id INT(11) NOT NULL, content VARCHAR(500) NOT NULL, reply VARCHAR(500) DEFAULT NULL COMMENT 管理員回復(fù)內(nèi)容, status TINYINT(4) DEFAULT 0 COMMENT 0 未回復(fù)1 已回復(fù), create_time DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (id) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COMMENT意見反饋表;signup表上的唯一索引(member_id, course_id)是我最看重的一個細(xì)節(jié)防止同一會員反復(fù)報名同一節(jié)課產(chǎn)生臟數(shù)據(jù)。業(yè)務(wù)層可以做判斷但數(shù)據(jù)庫索引兜底更穩(wěn)。還要分清signup和attend_recordsignup是報名代表“他選了課”attend_record是實際上課記錄代表“他來了并上完了”。2.3 建表階段的四個禁忌第一主鍵不要用業(yè)務(wù)字段。比如有人覺得card_no唯一直接拿它當(dāng)主鍵結(jié)果會員卡掛失換號時所有關(guān)聯(lián)表都得跟著改這是給自己挖坑。主鍵永遠(yuǎn)用自增id業(yè)務(wù)字段用unique key約束。第二時間字段類型不要亂選。日期型用DATE日期時間型用DATETIME不要圖省事全用VARCHAR。用VARCHAR存時間排序是字典序區(qū)間查詢不走索引后面統(tǒng)計“本月繳費(fèi)總額”時特別痛苦。第三金額和數(shù)量用DECIMAL和INT。金額用DECIMAL(10,2)人數(shù)、次數(shù)用INT不要用字符串存數(shù)字。這個屬于“看一眼數(shù)據(jù)庫就知道作者有沒有經(jīng)驗”的檢查點。第四表名和字段名統(tǒng)一小寫下劃線風(fēng)格。Java實體類用駝峰屬性MyBatis里打開mapUnderscoreToCamelCase配置后select * 的列就能自動映射到實體省掉每張表寫resultMap的功夫。很多java課程設(shè)計案例源碼里表字段一會兒駝峰一會兒下劃線Mapper里就不得不寫一堆別名純屬自找麻煩。表結(jié)構(gòu)定稿后我建議先別急著寫Java代碼花十分鐘用Navicat的ER圖功能核對一遍表關(guān)系。member和signup是一對多course和signup是一對多feedback掛在member下面打開ER圖一眼就能看到哪條線連錯。代碼寫到一半發(fā)現(xiàn)查不到數(shù)據(jù)回來看往往是外鍵方向?qū)懛碋R圖能提前暴露這個問題。3. SSM三層架構(gòu)把請求從JSP送到數(shù)據(jù)庫再返回來3.1 依賴清單與版本選擇SSM項目第一步是Maven依賴。這套系統(tǒng)的技術(shù)棧是Spring SpringMVC MyBatis MySQL核心依賴如下dependencies dependency groupIdorg.springframework/groupId artifactIdspring-webmvc/artifactId version5.2.22.RELEASE/version /dependency dependency groupIdorg.springframework/groupId artifactIdspring-jdbc/artifactId version5.2.22.RELEASE/version /dependency dependency groupIdorg.mybatis/groupId artifactIdmybatis/artifactId version3.5.9/version /dependency dependency groupIdorg.mybatis/groupId artifactIdmybatis-spring/artifactId version2.0.7/version /dependency dependency groupIdmysql/groupId artifactIdmysql-connector-java/artifactId version8.0.28/version /dependency dependency groupIdcom.alibaba/groupId artifactIddruid/artifactId version1.2.8/version /dependency dependency groupIdjavax.servlet/groupId artifactIdjstl/artifactId version1.2/version /dependency /dependencies版本選擇上有幾個經(jīng)驗。Spring 5.2.x兼容JDK8也兼容大多數(shù)課設(shè)環(huán)境里的Tomcat 8.5/9MySQL驅(qū)動必須用8.x的com.mysql.cj.jdbc.Driver原因在避坑章節(jié)單獨(dú)講druid連接池比c3p0配置簡單自帶監(jiān)控頁面答辯時還能演示一下連接池狀態(tài)。如果拿到的源碼里是Spring 4.x配c3p0也能跑只是排查問題時參考資料少很多。項目結(jié)構(gòu)按Controller→Service→Mapper三層排布controller包放SpringMVC控制層service包放業(yè)務(wù)接口和實現(xiàn)類mapper包放MyBatis接口resources目錄下建mapper文件夾放XML文件。JSP頁面放WEB-INF/views下避免用戶繞過Controller直接訪問頁面。3.2 兩個核心配置文件的分工SSM的Spring配置通常拆成兩份applicationContext.xml負(fù)責(zé)業(yè)務(wù)層和持久層spring-mvc.xml負(fù)責(zé)控制層。前者在web.xml里通過ContextLoaderListener加載后者由DispatcherServlet加載。拆開的好處是以后要加定時任務(wù)、消息隊列它們只依賴業(yè)務(wù)層不必經(jīng)過MVC的Web環(huán)境。applicationContext.xml里最重要的是數(shù)據(jù)源、SqlSessionFactory、Mapper掃描和事務(wù)管理context:component-scan base-packagecom.gym.service/ bean iddataSource classcom.alibaba.druid.pool.DruidDataSource init-methodinit destroy-methodclose property namedriverClassName valuecom.mysql.cj.jdbc.Driver/ property nameurl valuejdbc:mysql://localhost:3306/gym?useUnicodetrueamp;characterEncodingutf8amp;serverTimezoneAsia/Shanghai/ property nameusername valueroot/ property namepassword value123456/ /bean bean idsqlSessionFactory classorg.mybatis.spring.SqlSessionFactoryBean property namedataSource refdataSource/ property namemapperLocations valueclasspath:mapper/*.xml/ property nameconfiguration bean classorg.apache.ibatis.session.Configuration property namemapUnderscoreToCamelCase valuetrue/ /bean /property /bean bean classorg.mybatis.spring.mapper.MapperScannerConfigurer property namebasePackage valuecom.gym.mapper/ /bean tx:annotation-driven transaction-managertransactionManager/ bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManager property namedataSource refdataSource/ /bean三處容易翻車的地方。第一url里的符號在XML里必須寫成字面量否則XML解析直接報錯第二mapperLocations指向classpath:mapper/*.xml如果Mapper接口和XML不在這個路徑下后面所有Mapper方法都會失效第三mapUnderscoreToCamelCase打開后member表的card_no列自動映射到Member實體的cardNo屬性所有SQL都不用寫resultMap。如果你改過實體類屬性名這里記得保持風(fēng)格一致否則屬性永遠(yuǎn)為null。spring-mvc.xml的職責(zé)是把請求分發(fā)給Controller并決定視圖跳轉(zhuǎn)context:component-scan base-packagecom.gym.controller/ bean classorg.springframework.web.servlet.view.InternalResourceViewResolver property nameprefix value/WEB-INF/views// property namesuffix value.jsp/ /bean mvc:annotation-driven/ mvc:default-servlet-handler/InternalResourceViewResolver的prefix和suffix組合起來很直白Controller里return course/list最終渲染的是/WEB-INF/views/course/list.jsp。default-servlet-handler這行解決靜態(tài)資源被攔截的問題少了它jsp里的css和js會全部404。3.3 一次請求的完整旅程Controller→Service→Mapper以查看課程列表為例。瀏覽器請求/course/listDispatcherServlet交給CourseControllerController RequestMapping(/course) public class CourseController { Autowired private CourseService courseService; RequestMapping(/list) public String list(Model model) { ListCourse courseList courseService.findAll(); model.addAttribute(courseList, courseList); return course/list; } }Controller注解讓SpringMVC掃描到這個類RequestMapping(/course)是類級URL前綴方法上的RequestMapping(/list)拼起來就是完整請求路徑。Model在這里往JSP頁面?zhèn)鲾?shù)據(jù)頁面用EL表達(dá)式${courseList}遍歷即可不需要手動把數(shù)據(jù)塞進(jìn)request。return返回的不是頁面內(nèi)容是邏輯視圖名最終由視圖解析器拼成真正的JSP路徑。Service接口只暴露業(yè)務(wù)方法實現(xiàn)類注入MapperService public class CourseServiceImpl implements CourseService { Autowired private CourseMapper courseMapper; Override public ListCourse findAll() { return courseMapper.selectAll(); } }這里的Autowired按類型注入要求CourseMapper是被Spring管理的Bean前面MapperScannerConfigurer掃描com.gym.mapper包就是為了讓這些接口生成代理對象。啟動時報CourseMapper注入失敗十有八九是component-scan的base-package和mapper掃描的basePackage沒對齊。這段鏈路其實把Spring兩個核心概念都落到了實處。IoC體現(xiàn)在Service和Autowired上對象由容器創(chuàng)建注入代碼里沒有一行new CourseServiceImpl()AOP體現(xiàn)在事務(wù)管理上Transactional注解的方法執(zhí)行時Spring AOP自動在方法前后加上開啟事務(wù)和提交回滾的邏輯業(yè)務(wù)代碼里看不到一個commit或rollback調(diào)用。這兩句話背下來面試講項目比單背八股文有說服力得多。3.4 Mapper接口與XMLSQL的正確位置CourseMapper接口只寫方法簽名SQL寫在同名XML里兩者通過namespace綁定public interface CourseMapper { ListCourse selectAll(); }?xml version1.0 encodingUTF-8 ? !DOCTYPE mapper PUBLIC -//mybatis.org//DTD Mapper 3.0//EN http://mybatis.org/dtd/mybatis-3-mapper.dtd mapper namespacecom.gym.mapper.CourseMapper select idselectAll resultTypecom.gym.entity.Course SELECT * FROM course WHERE status 1 /select /mappernamespace必須寫成接口的全限定名id必須與方法名完全一致。resultType寫com.gym.entity.Course因為駝峰映射已打開表里的start_time列能自動映射到實體的startTime屬性不需要寫resultMap。這里稍微注意一下如果查詢的列在實體里沒有對應(yīng)屬性MyBatis不會報錯只會忽略排查頁面表格空列時記得先查這個。4. 核心業(yè)務(wù)落地辦卡繳費(fèi)、報名判重與上課記錄一條線4.1 會員辦卡與繳費(fèi)事務(wù)和并發(fā)一起考慮前端頁面填好姓名、電話、卡類型后提交后臺。表面上只是insert一條member記錄但產(chǎn)品流程里辦卡往往伴隨首筆繳費(fèi)比如辦年卡收2000元。兩個操作必須在一個事務(wù)里卡建好了錢沒記上對不上賬錢記上了卡沒建成會員沒法入場。Service方法加TransactionalService public class MemberServiceImpl implements MemberService { Autowired private MemberMapper memberMapper; Autowired private PaymentMapper paymentMapper; Transactional(rollbackFor Exception.class) public void openAccount(String name, String phone, String cardType, BigDecimal firstPay) { Member member new Member(); member.setName(name); member.setPhone(phone); member.setCardNo(generateCardNo()); member.setCardType(cardType); member.setBalance(firstPay); member.setStatus(1); memberMapper.insert(member); Payment payment new Payment(); payment.setMemberId(member.getId()); payment.setAmount(firstPay); payment.setPayType(現(xiàn)金); payment.setRemark(辦卡首充); paymentMapper.insert(payment); } }注意Transactional的rollbackFor要顯式寫成Exception.class。Spring默認(rèn)只在運(yùn)行時異常時回滾如果你在service里catch了異常又往外拋檢查型異常默認(rèn)配置不會回滾這筆賬就悄悄記錯了。這是課設(shè)代碼評審里出現(xiàn)頻率最高的問題之一。繳費(fèi)的第二種場景是續(xù)費(fèi)充值這里有個并發(fā)細(xì)節(jié)。用Java代碼先select出balance加錢后再update回去兩個請求同時進(jìn)來會互相覆蓋。常見做法是直接在SQL里完成原子更新update idincreaseBalance UPDATE member SET balance balance #{amount} WHERE id #{memberId} /update用balance balance #{amount}而不是把計算后的值作為參數(shù)傳進(jìn)去數(shù)據(jù)庫行鎖能保證兩次并發(fā)更新不會丟失。這個問題在面試?yán)锝?jīng)常被問“怎么保證數(shù)據(jù)一致性”直接把這條SQL和事務(wù)注解講出來比背概念扎實。4.2 私教報名與判重唯一索引兜底業(yè)務(wù)層也擋一遍會員報名私教課本質(zhì)是往signup表插一條記錄。但流程上要先檢查三件事會員卡是否到期、課程是否存在、這個會員是否已經(jīng)報過這門課。Transactional(rollbackFor Exception.class) public boolean signUp(Integer memberId, Integer courseId) { Member member memberMapper.selectById(memberId); if (member.getExpireDate().before(new Date())) { throw new BusinessException(會員卡已過期請先續(xù)費(fèi)); } int count signupMapper.countByMemberAndCourse(memberId, courseId); if (count 0) { throw new BusinessException(您已報名該課程請勿重復(fù)操作); } Signup signup new Signup(); signup.setMemberId(memberId); signup.setCourseId(courseId); signupMapper.insert(signup); return true; }countByMemberAndCourse對應(yīng)的SQLselect idcountByMemberAndCourse resultTypeint SELECT COUNT(*) FROM signup WHERE member_id #{memberId} AND course_id #{courseId} /select業(yè)務(wù)層判重之后數(shù)據(jù)庫的uk_member_course唯一索引仍然保留這是雙重保險。為什么數(shù)據(jù)庫要兜底因為頁面上連點兩次報名按鈕兩個請求幾乎同時到達(dá)兩個count查詢可能都返回0兩個insert都能進(jìn)去。有唯一索引在第二個insert會直接報Duplicate entry異常事務(wù)回滾數(shù)據(jù)不會臟。報名頁面通常還要展示這門課已報多少人、還剩多少名額。不能把signup表全量數(shù)據(jù)拉出來讓頁面自己數(shù)用聚合查詢一次算出來SELECT c.id, c.name, c.max_count, COUNT(s.id) AS signed_count FROM course c LEFT JOIN signup s ON c.id s.course_id WHERE c.id #{id} GROUP BY c.idLEFT JOIN配合GROUP BY是這里的關(guān)鍵。用INNER JOIN的話沒被報過名的課程根本查不出來頁面上就看不到這門課。LEFT JOIN保證所有課程都出現(xiàn)signed_count為0的課程也能正常展示。4.3 上課記錄、繳費(fèi)統(tǒng)計與反饋閉環(huán)上課記錄和報名的區(qū)別在于會員來了管理員在后臺給這個會員添加一條attend_record相當(dāng)于簽到確認(rèn)。它關(guān)聯(lián)member、course、coach三張表前端要顯示成“張三 3月5日 上了一節(jié) 李教練的 增肌私教課”Mapper里最省事的寫法是三表聯(lián)查select idselectRecordsWithDetail resultTypemap SELECT m.name AS memberName, c.name AS courseName, co.name AS coachName, a.attend_time FROM attend_record a JOIN member m ON a.member_id m.id JOIN course c ON a.course_id c.id JOIN coach co ON a.coach_id co.id WHERE a.member_id #{memberId} ORDER BY a.attend_time DESC /select這里resultType用了map因為查詢結(jié)果跨了多張表不是任何一張表的實體。MapString,Object在MyBatis里自動把列名作為key數(shù)據(jù)量不大時這種寫法比新建VO類省事。頁面拿到List后直接通過memberName、courseName這些key取值。管理員首頁的統(tǒng)計模塊基本就是COUNT和SUM的組合。比如“本月繳費(fèi)總額”SELECT COALESCE(SUM(amount), 0) FROM payment WHERE pay_time #{monthStart} AND pay_time #{monthEnd}COALESCE很關(guān)鍵。本月還沒有繳費(fèi)記錄時SUM返回NULL頁面的金額一欄會顯示成空COALESCE把NULL轉(zhuǎn)成0前端EL表達(dá)式才不會因為null報錯。同理統(tǒng)計上課次數(shù)時最好也寫COALESCE(COUNT(*), 0)雖然COUNT本身不太會返回NULL但統(tǒng)一寫法能少踩一個坑。會員提交反饋后feedback表生成status0的記錄管理員回復(fù)后UPDATE reply字段并置status1。會員端查詢自己的反饋時用status區(qū)分“待回復(fù)”和“已回復(fù)”頁面用不同顏色展示。這個模塊邏輯最簡單但它是體現(xiàn)系統(tǒng)完整度的細(xì)節(jié)很多課設(shè)demo只有提交沒有回復(fù)流程斷了一截。5. 避坑與排查SSM項目從部署到交付的5個經(jīng)典問題SSM項目真正讓人頭疼的不是業(yè)務(wù)代碼而是配置和部署階段的環(huán)境問題。以下5條是我自己踩過、也幫別人排查過的經(jīng)典故障按現(xiàn)象→原因→解決的順序列出來遇到直接對號入座。5.1 頁面樣式全丟JS/CSS請求404現(xiàn)象項目能啟動主頁HTML能出來但所有靜態(tài)資源全部404頁面沒有樣式控制臺一堆Failed to load resource。原因web.xml里把DispatcherServlet的url-pattern配成了/*導(dǎo)致所有請求都進(jìn)了SpringMVC而SpringMVC默認(rèn)不處理靜態(tài)資源。有人把靜態(tài)資源放WEB-INF下規(guī)避那是繞路不是解決問題。解決在spring-mvc.xml里加一行mvc:default-servlet-handler/這行的含義是SpringMVC處理不了的請求交回容器默認(rèn)Servlet處理Tomcat的DefaultServlet會把css、js、圖片正常返回。如果有多個DispatcherServlet記得加在真正處理頁面請求的那個配置文件里。5.2 中文亂碼連接串、頁面、過濾器三處必須一致現(xiàn)象數(shù)據(jù)庫里中文正常頁面上顯示“???”或者表單提交后存進(jìn)數(shù)據(jù)庫變成亂碼。原因亂碼從來不是單一配置造成的。MySQL連接串沒指定characterEncodingJSP頁面沒聲明pageEncodingSpring的CharacterEncodingFilter沒配置三者任一處不一致都會亂。解決三處一起改。jdbc.url加上useUnicodetruecharacterEncodingutf8也就是第3章示例里那個寫法JSP頂部寫pageEncodingUTF-8web.xml里配置CharacterEncodingFilterfilter filter-nameencodingFilter/filter-name filter-classorg.springframework.web.filter.CharacterEncodingFilter/filter-class init-param param-nameencoding/param-name param-valueUTF-8/param-value /init-param init-param param-nameforceEncoding/param-name param-valuetrue/param-value /init-param /filter filter-mapping filter-nameencodingFilter/filter-name url-pattern/*/url-pattern /filter-mappingforceEncodingtrue保證請求和響應(yīng)都強(qiáng)制走UTF-8。三處改完重啟Tomcat亂碼基本消失。如果還亂查Tomcat的server.xml里Connector是否配置了URIEncodingUTF-8這一條經(jīng)常被漏掉。5.3 數(shù)據(jù)庫連接失敗驅(qū)動類名和時區(qū)是重災(zāi)區(qū)現(xiàn)象Tomcat啟動日志報Communications link failure或The server time zone value й?? is unrecognized項目起不來。原因MySQL 8.x對時區(qū)要求嚴(yán)格連接串沒指定serverTimezone就報錯。舊驅(qū)動com.mysql.jdbc.Driver雖然兼容模式還能用但很多老教材和舊源碼里都寫的是這個類名驅(qū)動類與MySQL版本不匹配連接自然失敗。解決驅(qū)動類換成com.mysql.cj.jdbc.Driverurl加serverTimezoneAsia/Shanghai。即使本機(jī)是MySQL 5.7也建議統(tǒng)一用8.0驅(qū)動配8.0的連接寫法這樣本地和服務(wù)器環(huán)境一致部署時少一個問題源。5.4 Mapper方法報Invalid bound statement現(xiàn)象項目正常啟動一調(diào)用某個Mapper方法就拋Invalid bound statement (not found)接口和XML明明都寫了。原因MyBatis在運(yùn)行時找不到XML文件。常見成因是namespace寫錯、方法id不一致、或mapperLocations路徑?jīng)]匹配到XML實際位置。解決按三步排查。第一步核對XML的namespace是否與Mapper接口全限定名一致第二步核對select標(biāo)簽的id是否與接口方法名一致第三步確認(rèn)resources目錄下的mapper文件夾被編譯到classes目錄直接看target目錄里有沒有對應(yīng)xml文件。如果XML放在java源碼目錄下Maven默認(rèn)不會把它當(dāng)資源打包需要在pom.xml的build節(jié)點里配置resources把**/*.xml也納入編譯路徑。5.5 導(dǎo)入項目后依賴缺失ClassNotFound與NoClassDefFound現(xiàn)象下載的源碼導(dǎo)入IDEA運(yùn)行時拋java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener或者NoClassDefFoundError。原因這類問題大多不是代碼問題而是項目結(jié)構(gòu)問題。Maven依賴沒刷新、Artifacts里沒把依賴打包到WEB-INF/lib、本地倉庫缺jar三種情況都會出現(xiàn)。解決第一次導(dǎo)入先執(zhí)行mvn clean install讓依賴完整下載然后在IDEA的Project Structure里打開Artifacts選中項目的war exploded在Available Elements里把library dependencies右鍵加入WEB-INF/lib。做完這步Tomcat啟動時才能看到全部依賴。另外pom里同時引入多個版本的spring-jdbc和spring-webmvc會出現(xiàn)重復(fù)類沖突把版本統(tǒng)一成一致即可。我一般習(xí)慣多版本沖突時先看Dependency Analyzer紅色沖突項直接右鍵排除比手動翻pom快得多。這5條排查完項目基本能穩(wěn)定跑起來。剩下的就是業(yè)務(wù)邏輯問題比如變量名寫錯、SQL條件寫反這些靠斷點調(diào)試就能解決不算框架層面的坑了。6. 從“能跑”到“能講”一頁紙驗收腳本與答辯視角6.1 一頁紙驗收腳本兩條主線各走一遍拿到源碼的第一件事不是改代碼而是按業(yè)務(wù)路徑完整走一遍。我會在紙上列出管理員和會員兩條主線每完成一步勾一下步驟操作預(yù)期結(jié)果1管理員登錄進(jìn)入后臺首頁無報錯2添加教練教練列表出現(xiàn)新紀(jì)錄3添加課程并關(guān)聯(lián)教練課程列表出現(xiàn)信息完整4新開會員卡并收費(fèi)member和payment表各新增一條記錄余額正確5會員登錄并修改資料修改后頁面立即生效6會員報名私教課signup表新增重復(fù)報名被攔截7管理員添加上課記錄會員端能看到上課記錄8會員提交反饋管理員能回復(fù)狀態(tài)從待回復(fù)變?yōu)橐鸦貜?fù)9管理員查詢繳費(fèi)統(tǒng)計金額與數(shù)據(jù)庫payment表SUM一致全程不報500、不跳404數(shù)據(jù)庫記錄和頁面顯示一致這套系統(tǒng)就算驗收通過。這一步值得每個拿到源碼的人先做很多課設(shè)源碼能登錄、能瀏覽但一走到寫操作就報錯問題往往在事務(wù)配置或表結(jié)構(gòu)差異上。先跑通再改能省掉大量無效排查。6.2 答辯視角三個問題講清這個項目驗收通過后再讀代碼我建議按拆表、搭框架、核心業(yè)務(wù)、查坑的順序來。面試或答辯講這套系統(tǒng)時準(zhǔn)備三個能展開的點第一Spring的IoC和AOP在項目里的具體體現(xiàn)對象由容器注入事務(wù)是聲明式切面第二MyBatis的#{}預(yù)編譯和${}字符串拼接的區(qū)別項目里所有用戶輸入都用#{}防止SQL注入第三signup表唯一索引解決并發(fā)重復(fù)報名。把這三句話結(jié)合代碼講透比背十道java八股文都有說服力。這套資源不是拿來直接交差就完事的。我見過太多人下載后連數(shù)據(jù)庫腳本都不看就開始改頁面最后表結(jié)構(gòu)改了對不上Mapper整晚陪SQL調(diào)錯。從那以后我每次拿到這類SSM源碼不管多急都強(qiáng)制自己先花半小時跑完這頁紙驗收腳本再決定動哪個文件、改哪一行這個習(xí)慣幫我少走了很多彎路。希望幫到你。本文還有配套的精品資源點擊獲取
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
91精品无码久久久久久久| 国产尤物AV尤物在线观看不卡| 日日干天天干夜夜爽| 日日夜夜干| 91久久国外网| 亚洲欧美自拍偷拍| 国产成自自拍在线观看| 人人操人人操人人人操| 好看的久久不射无码影视影院| 国产精品操| 99热日本| 免费人成毛片乱码| 午夜精品99久久久久传媒| 中文字幕二区| 免费看欧美美女黄色大片| 天天躁狠狠躁av| 97超碰国产亚洲精品| 激情五月天插| 97精品97| 欧美成人一级免费电影| 91久久久老司机| 国产家庭乱伦表演| 素颜老阿姨乱情色| 久久久爆乳翘臀一线天伦理视频| 国产丸一视频| 欧美亚洲激情小说| 欧美一区二区三区另类精品| 日韩精品-原创伙伴| 国产精品久久久久久久久AV大片| 青青久久久| 亚洲欧美国产成人综合不卡| 天天欧美| 日韩 人妻 精品| 97欧美精品| 亚洲五月婷婷| 亚洲另类小说卡通动漫| 欧美一级专区免费大片| 操逼网站视频漫画国产| 极品色综合| 九色PORNY9l原创自拍| 久草这里只有精品| 好看的久久不射无码影视影院| 再深点灬舒服灬太大了添视频| 一区麻豆 高清中文字幕| 中文字幕丰满人妻日本| 啊灬快c我灬啊灬用力灬啊灬-国产精品性做久久久久久-成人AV | 精品人妻一区春色| 啪啪性爱免费视频| 中文字幕天天操| 少妇一区二区三区精选| 在线情色电影 91大 | 天天看片天天爽| 中文字幕人妻资源在线| 国产女人9999| 男人天堂2019亚洲| 中文操逼字幕| 大乔未久88一区| 国产精品久久伊人| 人人摸人人添人人操| 大色网久久| 久久五月份| 97超碰磁| 久久久久久久久一区二区三区| 精品久久久无码| 日韩激情小说一区二区| 黑人在线91| 亚洲九九视频| 神马久久啊啊| 强奸乱伦日韩AV| 久久精品视| 亚洲情色电影网| 日日噜噜夜夜狠狠视频无| 清纯唯美综合亚洲| 欧洲乱码视频| 少妇毛片久久| 激情专区综合| 欧美性爱第一区| 91亚洲图片| 精品欧美乱码久| 20cm女自慰在线日韩欧美| 四虎在线观看网站| 伊人女女资源在线观看| 精品久久久av无码免费| 四方色播| 国产激情在线| 亚洲一区制服诱惑| 久久夜嗨| 色综合98| 久久午夜神马| 日本久久综合| 男人的天堂2018.| 午夜啪啪片| 97干在线| 亚洲黑人在线| 在线a亚洲视频播放在线| 无码操逼天堂| 欧亚日韩综合精品国产| 日韩99神马视频片| 人妻久热在线| 九九热九九热| 色色色综合网| 天天做日日爱夜夜爽| 欧美十八禁视频| 亚洲天天更新| 美日韩男女操屄视频| 一二三区视频在线观看| 91色欧美| 老熟女网站| 人妻久久| 亚洲色欧美| 久久视频,这里只有精品| 亚洲AV高潮| 亚洲天堂另类美腿| 丁香六月婷婷| 婷婷啪啪| 婷婷五月天福利| 亚洲欧美精品91| 大香蕉手机视频| 中国国国产一级特黄毛片| 日本一级性爱| 97青青操视频| 怡红院成人av| 好爽免费视频,| 亚洲无限观看| 骚鸭AV| 婷婷精品国产欧美精品亚洲人人爽| 五月开心久久AV官网| 色色综合97| 国产久久一区二区| 久草资源在线| 永久免费观看的毛片的网站| 免费αⅴ在线观看| 日亚韩精品视频二区三| 狠狠欧美| 欧美精品91| 久久香蕉超碰97国产精品| 老鸭窝黄色视频网站| 情侣操 逼视频99| 伊人久大| 国产真实子伦对白| 91视频伊人| 日韩有码 一区二区三区| 日本羞羞的视频在线播放| 国产精品嫩草影院午夜两性| 一级特级aaaa毛片免费观看| 亚洲成人免费电影| 久久综合乱子伦国产免费| 大香蕉天天看妹子| 五十路熟女在线不卡观看一区二区| 亚洲色图8| 超碰色图| 国产69精品久久久久99尤物| 久久ww| 91天天综合网,天天综合网| 久久久久久性爱免费视频| 色欧美在线| 国产女人视频三四五区| 性爱视频啪啪啪啪| 天天综合色电影| 中文字幕乱码人妻一区二区三区,99精品| 91啪9色| 青青草在线成人视频| 狠狠搞 亚洲91| 久久久天美| 欧美高清色| 伊人久久综合影院精品久久久| 国产成人欧美一区二区三区的国产| 五月天激情网图片| 韩国国产欧美情侣视频在线| 久久九色| 午夜丁香| 日韩天天本| 夜夜爽夜夜爽| 亚洲无码一区二区三区三州| 久久久久久久久久久久黄色| 青青草字幕AV| 91丨国产丨白浆秘 洗澡动漫| 日韩国产乱子伦App| 亚洲天天艹| 日本黄色天堂| 亚洲字幕一区二区| 91女网站| 乱伦一二三区| 亚洲综合另类欧美久久久| 国产精品色| 综合伊人激情| 大香蕉碰碰| 2017天天操天天日| 亚洲九月丁香| 欧美白嫩在线放| 超碰97护士| 久久精品国产96精品亚洲拳交| 人妻在线臀日韩| 久久久四区| 天天色播亚洲综合网站| 色九九九九九九| 人人插人人摸人人| 97超碰色屌| 五十路熟女人妻一区二区在线观看| 91丨熟女丨丰满熟女| 亚州色图欧美| 另类 日韩 熟女| 亚洲激情天堂网| 综合影院永久入口国产| 曰韩欧美国产传媒麻豆第一区| 亚州综| 欧美狠狠操| 日本2020一区二区| 亚洲天堂资源| 97资源视频| 夜夜爽33333| 伊人宅男大香蕉 | 综合激情婷婷| 亚洲欧美小说| 67914亚洲精品| 91天堂| 免费在线观看国内色片网站网址| 色婷婷一区二区三区久久午夜| 综合国产影视三级| 九九九国产精品| 激情五月天婷婷| 操逼操逼操| 天天天乱色综合全| 熟女突然公开看18禁影片| 色臀AV| 好爽,再快点啊哈嗯嗯嗯嗯| 尹人免费观看视频在线| 国产精品毛片| 999狠狠综合| 国产成人一级av88| 久久在肏| 久啪| 小少妇| 黑人精品一区二区在线播放| 91久热| 丰满人妻一区二区三区四| 亚欧免费观看视频| 激情婷婷丁香网| 免费看美国人人爽,人人操| 国产一进一出视频网站| 色悠久| 亚州高清av| 天美AV片| 亚洲成人美女无吗| 国产亚洲福利第一页丝袜| 蜜桃臀一区二区aV| av婷婷色网| 操逼日批| 屁股久久久久久| 青青操视频在线| 婷婷四五区| 亚洲九月丁香| 欧美激情久操网| 骚妻少妇精品性色无码四色A V| 超碰亚洲欧美日韩无| 可以免费观看的日韩av毛片| 久久久新亚洲AV| 大香蕉日亚洲日本亚大| 超碰中文字幕人妻草一区| 人人扣人人操| 久久性爱网站| 欧美亚洲素人制服精品| 97av在线观看| 青青草大香蕉视频| 9久9久| 欧美日韩婷婷中文| 夜夜高潮夜夜爽高清视频一| 99热这里是精品| 亚洲人妻中文高清| 欧美aaaaaaa| 久久久亚洲| 亚洲天堂电影网99999| 最新精品久久蜜桃 | 99精品成人免费看| 欧美人妻精品一区二区| 极品欧美一区二区三区| 26uuu久久| 国产乱子伦久久精品综合一区二区三| 91制服丝袜| 久久久久人| 天堂射| 国产熟妇一区二区| 九九九九日本 | AV 少妇 人妻 偷拍| 深夜激情无码| 日韩一级片在线看| 一级A啪啪啪啪| 色一色综合网| 日韩av乱伦| 成人性爱电影网| av一区二区三区 中文| 国产熟女免费观看久久| 欧美自拍偷拍免费观看| 激情五月婷婷综合| 爽爽淫人网| 天天影视网综合少妇| 开心激情站| 婷婷色色五月| 炮色五月| 欧美猛交黑寡妇中文字幕| 嫩草伊人久久精品| 夜夜免费视频| 天天天肏屄肏屄肏屄欧美欧美| 久久线上视频免费看| 亚洲丝袜在线观看| 激情小说亚洲色图| 亚洲国产av中文字幕久久| 欧美日韩不卡a片| 国产99精品一区二区三区免费| 涩涩这里只有精品视频| WWW黄片COM| 正在播放:深夜激情大战,自带黑丝袜全力输出骚穴 | 毛片17S| 国产极品久久久| 亚洲日韩久久精品一区| 中文字幕无码不卡啪啪| 久久香蕉国产线看观看亚洲女人 | 摸奶性爱视频网站在线免费播放| 日韩黄片视频试看| 亚洲操人| 久久九九综合| 狠狠久久四虎| 精品美女少妇一区二区三区| 最新9久久久9免费视频| 91日韩国产欧美亚洲另类精盘州至城都| 五月天九九日国产精品一区二区三区| 秋霞午夜成人福利片片| 国产91乱伦| 婷婷丁香五月激情啪啪| 色999偷自拍拍| 国产乱人妻精品入口| 男人天堂最新手机版在线青青草| 亚洲国产综合图区中文字幕| 国产高清成人mv在线观看| 激情久久久| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 日韩欧美一级特黄大片| 麻豆久久视频在线地址| 欧美手机在线综合| 亚洲欧美日韩制服另类| 日韩免费看黄片| 性爱动态120秒| 大香网伊人久久综合网eew| 欧美天天影院| 高清成年美女黄网站免费大全 | 操人人| 国产一区二区视频在线播放| 亚洲男人的天堂V| 熟女熟妇伦久久影院毛片一区二区| 男人的天堂免费| www.大香| 亚洲色图美腿丝袜| 国产精品 视频| 国精精品无码一二三区水多多| 欧美亚洲激情小说| 日本丝袜人妻内射| 久艹免费| 免费看A片毛毛片在线播| 99青草| 日韩亚洲97| 久久av无码| 最新欧洲欧美日本激情网站| 欧美综合色综合| 欧美精品23| 黄色乱论网站| 乱欲视频| 99亚洲精品| 亚洲激情深爱文学小说网站| 99国产在线 精品 视频| 99RE在线视频精品,这里只有精品| 亚洲色人阁| 亚洲女毛多水多21P| 日韩午夜国产| 91久久免费视频互動交流| 99精品在线| 日韩精品资源| 日日夜夜干| 天天性射网| 欧美人妻精品一区二区| 另类专区加勒比| 搡老女人老妇女AAA一VU麻豆| 狠肏骚人妻| 97超碰精品| 欧美成人9797| 91综合在线| 东京日日夜夜| 无码一区免费在线不卡| 欧美精品在线观看| 亚洲欧美国产va在线播放频| 91丝袜在线观看视频在线观看| 欧美在线天堂| 国产天天骚| V A在线| 淫色网综合| 国产精品一区二区a| 国产精品久久久久久夜夜夜| 国内偷拍精品一区二区| 丝袜无码a片| 亚洲精品无码久久AV| 成人精品欧洲亚洲| 日韩av在线免费网站| 国产精品久久久久久9999| blacked精品一区国产| 老鸭窝日丰县女人| 91日韩在线| 少妇一区二区三区| 久久精品老司| 在线国产一区二区av| 精品人妻视频一区二区在线播放| 国产一级片| 激情文学88| 97天天操天天干| 黄色AAAAAAAAAAA大片| 久久久久久久久久久久久女过产乱-少妇高潮一区二区三区喷水-成人AV | 亚洲女毛多水多21P| 密臀国产在线| 婷婷综合在线观看| 日人妻视频91| 色妇综合网| 美女的肌被草喷水视频| 留下AⅤ黄色片| 亚洲在线91| 美女91在线观看| 欧亚性爱视频免费看| 久久中文字幕在线观看| 91挑色欧美| www.色婷婷色综合| 自拍偷拍草一草| 91n.欧美| 日产中文字幕2020| 久99热| 欧美精品精品一区二区| 青久久| 欧美色图中文字幕| 久久女婷| 色久桃花影院在线观看| 日躁天天爽爽| 精品欧美日韩在线观看| 三级片大波波| 婷婷色在线| 思思热国产在线视频| 色嗨嗨在线| 99re9| 天堂av2019| 九色在线熟女国产黑人| 激情小说亚洲| 欧美亚洲色的图| 少妇被玩视频二三区| 国产成人无码高清| 男女做爰猛烈动高潮A片免费应用 少妇厨房愉情理伦片bd在线观看 不卡中文字幕aⅴ在线 | 国产又猛又粗又爽又黄| 天天综合~91| 久久夜夜夜夜| 久热69九色熟妇97| 人人操人人狠狠操| 色黄色美女大长腿午夜视频| 狠狠操使劲操| 亚洲欧美97| 亚州九九九精品视频| 大香蕉免| 99这里有精品| 亚洲精品丝袜-不卡成人免费……| 亚洲一区二区久久久久| 亚洲AV秘无码一区..| 91性情| 美女t无毒不卡不卡| 欧美天堂亚洲电影院一区在线播放 | 日本人妻伦在线中文字幕| 99热一区二区三区四区| 快播久久人人aV| 久久超碰av在线| 中 文字幕一区二区三四 五 区日 日 骚| 中文字幕五区| 激情深爱五月天| 一级性爱aaaa| 4399成人黄A片| 亚洲欧洲网站免费观看| 日日碰狠狠添天天爽超| 亚洲Av无码成人精品国产| 中文字幕女同在线| 九九综合| 啪啪综合网| 留下AⅤ黄色片| 丝袜熟女一区二区三区| 国产在线精品偷| 人妻乱仑一区二区三区| blacked精品一区国产| 无码丰满熟妇一区二区浪潮AV| 国产中出内射一区二区| 人人操 欧美| 情趣丝袜无码操逼视频| www亚洲免费| 一牛影视成人片免费| 中文字幕一区二区日韩网| 久久国产性爱| 日本熟妇人妻中出视频| 超碰人人在线| 日韩中字av一区| 婷婷干黄色| 超碰成人最新最好看| 久久精品日韩| 国产 无码 一区二区| 九月丁香综合网| 欧美黄片视频在线观看免费| 水野优香在线观看| 91黑丝少妇| a人欧美综合天堂麻豆| 97精品在线| 精品无人区麻豆乱码1区2区图片 | 992这里有精品| av在线人气 | 亚洲情色五月天| 91色图片| 97伦综合| 亚洲人妻中文在线视频| 91快色色色色色| a网站免费观看| 嗯嗯啊啊用力视频免费| 尤物视频网 刘玥| 青青操国产夫妻| 欧美高清无码免费视频高清版| 欧美成人四级在线播放| 四色永久成人网站| 97色诱| 天美久久久久| 亚洲一区二区三区春色| 人人摸人人叼| 欧美婷婷久久| 四虎影视精品| 99久久婷婷丁香| 天天日天天插| 999九九精品| 亚洲黑人在线| 探花熟女,姿勢到位,體驗感也到位| 911粉嫩人妻| 亚洲aw毛茸茸在线 | 色五月婷婷五月天| 国产精品久久久久久久免牛肉蒲团| 国产视频97| A片A5445444| 一区二区三区欧美激情| 妇女视频网站| 亚洲天天操| 国产精品久久久久无码AV会牛| 欧美天天拍| 一区二区三区四区五区久久久久久| 超碰97人妻| 秋霞视频一区二区| 97资源免费视频| 思思热一热婷婷热一热| 蜜臀AV一区二区三区| 久久久久久久久久va| 一本道综合色图| 99re在线视频国产| 成人小说视频在线精品欧美| 天天色悠悠激情| 久久精品无码熟妇一区二区三区视频导航 | 中国一级αV| 色色五月婷婷| 熟女少妇一区二区三区| 欧美午夜一区二区三区| 亚洲爱爱视频一区二区| 日韩在线欧美精品一区二区| 爽爽淫人网| 午夜啊啊| 大香蕉综合| 中文字幕日韩情色| 强奸乱伦大香蕉网| 超碰伊人在线| 性做久久久久久久| 精品久久艹| 黄片免费看的| 国产AV人人夜夜澡人人爽麻豆| 成人无遮挡毛片免费看| 亚洲限制级在线| 97免费在线视频| 亚洲色图激情小说| 青青色在线观看| 日韩人体偷拍| 国产精品久久久久无码Av网曝门 | 国产精品熟女丝袜一区二区| 91熟女少妇| 亚洲限制级| 超碰在线一区二区三区| 天天91~综合入口| 亚州综合色| 校园春色之综合网| 久久性爱视频免费看| 亚洲AV免费在线观看| 国产 日韩,欧美 自拍| 中文字幕一区 二 区 三 四 五 区日 日 骚 | 白嫩国模丰满一二三区| 精品少妇一区二区| 99无码| 啊啊啊啊网站| 国产久久日韩网站导航| 国产日韩在线播放av| 亚洲男人的天堂网| 操逼网站地址| 亚洲天天操| 嫩草伊人久久精品| 久操视频资源站公开| 福利五区| 热久久91婷婷| 久久东京伊人一本到鬼色| 超碰 国产熟女精品一区| 国产亚洲综合欧美一区| 国产老太乱伦一区| 亚洲大胆人体av| 黄片不用下载在线观看| 青草精品视频-日本久久久久网站| 激情四射婷婷四五月天| 观看视频图片一区二区三区| 日韩精品电影| 91操人| 91丰满| 96AV久久久| 一级aaaaa欧美中文字幕录像片| 国产精品69久久久久久久| 粉嫩国产精品久久粉嫩| 自拍偷拍亚洲熟女妇人精品| 久久久久久久久久久精| 五月久久HDAV| 亚洲图片欧洲图片aⅴ| 亚洲丝袜少妇在线| 久久超碰大香蕉| 综合色久| 国产欧美岛国精品一区| 97精品免费视频网站| 免费成人在线熟妇网| 95人妻爽爽人人做人人澡| 免费的黄片有限公司| 91操熟女视频| 偷拍色图| 少妇诱惑视频| 99色热| 美女国产一区二区久久| 小说区 图片区色 综合区| 四虎在线观看网站| 超碰碰97资源站| 欧美97爱| 伊人aaa| 久久久工口| 国产超碰| 日韩人妻 中文字幕| 免费试看60秒| 美女9118禁| 久久久久久裸体| 91丝袜激情在线| 看黑人AV不卡| 国内91熟女人妻丝袜天天精品视频在线 | 国产精品久久久久久久久久久久久久久久 | 天天看特黄的免费网站| 美国美女AV在线| 99热99色| 国产女性无套 免费观看| 久久成人国产精品| 91肉片| 青草成人免费视频一COm| 另类成人首页一区| 97这里有精品| 91 国产丝袜在线播放-百度| 裸模AV女优| 老色69| 九九av| 人妻av在线| 探花一区在线| 精品区国产区一区二区三区| 综合五月婷婷亚洲一区| 亚瑟国产精品久久无码| AV一起草在线| 四虎午夜影院| 婷婷在线视频在线观看| www.色吧5.com| 操b在线观看| 成人一二| 日韩一区二区精彩视频| 国产精品久久天天干| 74成人在线| 久久伊人亚洲AV无码网站| 午夜成人爽爽爽爽A片李冰冰| 久久久久九九九九| 国产精品久久久啊| 欧洲黄色网| 欧美探花网| 久久久久久亚洲中文| 免费超碰97在线观看| 国产精品一区二区校花| 高清无码 国产精品| 国产精品激情久久久久久久| 国产 日韩 另类 视频一区爱| 日本操BAV| 欧美做爰无码A片视频| 亚洲激情av| 亚洲天堂男人在线| 欧美成人精品一区二区三区| 日本精品国产视频| 天天激色| 超碰精品97| 97超碰色色| 国产无吗在线播放| 亚洲va有码在线天堂| 成人性爱电影网| 女优视频第10页| 亚射在线| 中出人妻中文字幕91在线| 免费视频观看60秒| 国产一区二区三区高清视频| 日本一区视频在线观看| 国模少妇一区二区三区| 偷拍 精品另类 凸凹了四区| 毛片17S| 色香伊人| 大香蕉中文| 素人播放一区| 好看的91视频| 97日韩欧美亚洲| 人妻天天爽天天爽三区| 永久免费发布性爱网| 五月丁香网站| 九九九九九九九九九五码| 女人18精品一区二区三区| 99无码| 久久av一级av少妇av高潮| 伊人99热| 欧美日韩一干二干| 亚洲男人天堂网站| 欧美国产精品| 国产伦精品一区二区三区视频女| 亚州久久9| 色香av| 国产一区二区精品久久99| 人人操av| 天天综合麻豆视频| 欧美18老人禁| 大香网伊人久久综合| 97视频7| 鸥美中出| 色乱二区| 中文字幕-区二区三区四区视频中国| 久久国产精品视频| 国产av强奸美女| 日夜啪电影| 国产av色网| 蜜乳Av成人片网站| 操一对老熟妇爽上天视频| 亚洲交性| 成人5码视频| 日日骚 av| 久久天堂| 五月婷丁香| 久久亚洲日韩国产欧| 国产强奸91| ′ !γ}丶。。久久精品欧美一区二区三区| 青青伊人加勒比海| 亚洲性爱乱操x| 欧美 中文字幕 一区| 东京热毛片调教| 美女一区二区国产精品| 屌妞视频久久久久久久久久久久| 综合97| 五月天伊人| 嗯嗯不要 视频| 成人性爱全视频观看| 亚洲色丰满少妇高潮| 国产午夜精品理论片一二三区区| 久久久蜜桃一区二区三区| 少妇熟女视频一二三区| 亚洲精品啪视频| 久久99999| 国产一区二区三区免费视频在性观看| 97网址www| 综合久久97| 欧美制服另类丝袜| 国产精品久久久久久久久久久久久久| 久久九色| 2017天天插| 亚洲丝袜色| 日躁天天爽爽| 麻豆精品久久久久久久| 2017大香蕉| www.97在线| 午夜成人爽爽爽爽A片李冰冰| 天美国产精品| 国产毛片片精品天天看视频| 九九玖玖精品| 欧美18 在线观看| 色狠人在线99| 国产一区二区在线播放量| AV丝袜少妇| 91丨豆花丨熟女| 亚洲老司机123专区| AV不卡在线| 亚洲伊人青青草| 九九在线精品| 久久男人的天堂| 桃色六月天| 欧美一级特黄淫片在线观看| 亚洲精品美女操逼| 精品人妻美妇91job| 风间由美日韩欧美久久| 婷婷五月天网| 国产兽交视频在线播放| 久神马| 国产男女无套视频免费观看| 99re6在线视频播放免费精品| av天天在线观看| 精品久久久久久无码| 亚洲欧美日韩国产丝袜自拍中文| 黄色毛片A片| 欧美第二页| 久久一区,青青青青草视频在线播放| 被男人吃奶很爽的毛片| 国产中文日韩欧美一区二区三区人妻丝袜美腿| 國產尤物AV尤物在線觀看| 亚洲色性| 久久精品老司| 蜜乳av首页| 大JI巴好深好爽又大又粗视频| 青青操在线亚洲视频观看欧美在线| 国产专区第一页| 国产熟女无套内射| 天天舔九色婷婷| av资源在线观看少妇| 17c嫩草51久久91嫩草| 国产福利一区二| 欧美综合 站| 免费看毛片操穴| 久久91精品国产9丨久久分亭 | 一区二区三区精品久久| 啊啊啊在线观看| 五月天欧美色图| 玖玖97综合 | 婷婷久久五月| 激情抓乳插进去啪啪啪日韩| 国产美女91| 99精品热| 亚洲激情网一二三四区| 操逼国产免费| 国产内射爽爽大片| 欧美色交| 免费成人在线熟妇网| 亚洲丝袜二区| 性爱乱伦网址| 人人 操人人 操人人| 96一区二区| 色五月AV在线| 求求你操操我| 九九九九88| 91操操| 操逼操逼逼操操逼91| 欧美精品不卡一二三四在线91| AV免费在线播放一区| 人人妻人人爱人人玩| 一区二区三区在线日韩影院观看| 99.色网| 操逼日韩无码 | 日韩人人精品| 久久色一区二区| 麻豆视频test| 91狠狠色丁香婷婷综合久久| 久久久久久国产手机AV| 自拍偷拍国产欧美日韩韩| 婷婷午夜清品久久久久久久性色视频观| 无码操逼天堂| 天天看高清麻豆| 色 婷97| 日韩国产品视频中文字| 亚洲第一综合| 色五月网址| 国产福利精品最新在线| 欧美日韩国产高清在线一二三区 | 婷婷丁香五月天综合东京热| 国产亚洲精品无码三区| 精品人妻免费观看| a级免费在线观看| 中文字幕99999| 亚洲不雅视频1区二区| 亚洲情色 自拍| 天天日天天干天天摸天天操| 九九热午夜欧亚国产视频| 久久综合av| 久久久专区| 天天操天天谢| 在线五区| K8久久久久| www男人天堂| 天天操妹子| 97在线免费看视频| 久久久久久97| 一级黄色性爱裸体视频| 性无码专区2020| 一个色导综合| 999亚洲国产视频| 亚洲高清无码在线桃色| 久久99午夜精品一区人妻| 国产精品一区二区 尿失禁| 国产超碰人人爽人人做| 国产一区二区三区影片| 去干网最新版| 七久久久| 青青草视频久久久久| 黄呦呦在线| 操老熟女AV| 久久线上视频免费看| 啊啊啊啊免费视频| 97精品国产| heyZO天然素人无码AⅤ专区| 久久riav中文精品| 人人爱人人操人人性| 久久精品99| 久久久久密| 高跟伊人julia ann| 91伊人久久在线| 中文字幕AV中出| 黑人娇小av在线播放| 久综合国内精品自在自线| 亚州操逼图| 久久五月综合| 五月天色图| 精品一区二区三区四区外站| 91欧美www| 亚洲一区日韩精品中文字幕| 不卡一区二区日本视频| 天天躁狠狠躁av| 大香蕉性欧美| 国产在线能看的你懂的| 成人免费在线网站| 超碰人人乐97| 青青草玖玖爱| 亚洲综合91| 欧美日韩在线国产在线| AV中文在线| 黄呦呦在线| 91国产丝袜白虎| 国产成人亚洲精品无码最新在线| 亚洲欧洲精品视频发布| 96AV精品| 亚洲AV在线资源| 日本人妻最新在线中| 精品亚洲国产成人av网站| 狠狠操狠狠插| 91N综合在线| 夜色91| 日本www操操操| 富二代亚洲精品99 | 4141514逼喷水三级片| 另类专区加勒比| 欧美视频一| 久久婷婷五月综合| 99re这里| 国产老太乱伦一区| 国产超碰人人操| 91久久堂| 人妻天天爽天天爽三区| 九色婷婷| 欧美大色交| 亚洲性爱成人| 综合五月天| 伊人视频| 激情五月天插| 亚洲一二三精品久久网| 欧美人妖内射| 岛国AB视频| 中文字幕97色| 国产午夜精品在线观看| 综合色图区| 亚州九九九精品视频| 人人干人人操人人爱| 超碰人人妻| 亚洲中字慕不卡| 中日韩熟女| 嗯嗯啊啊好疼| 100啪啪视频大全| 91N欧美| 97中文热色| 欧美在线播放aaaa| 国产自产22区| 99热99在线播放激情| 夜夜国产一区| 久久av无码| 91暧暧| 日韩无码极品| 丰满欧美少妇| 999999精品| 亚洲五月丁香花狠狠干一区二区三区 | 国产乱码精品久久久久久| 最新无码国产| 日韩紧密久久| 亚洲av无码成电影在线播放| 亚洲精品色| 亚洲一区二区三区在线激情| 色噜噜人妻av 中文字幕| 中文字幕乱码在线| 日本韩国一本产品小视频日本韩国一本产品久久久产品小视频日本韩国一本产品久 | 蜜臀AV一区二区三区激情综合| 国产精品夜夜| 色香色香欲天天天影视综合网| 日韩精品一区二区人人人| 婷婷色婷婷| 欧洲综合色| 日本91白丝| 狠狠操,使劲操| 婷婷激情一区二区三区俺也去| 国产欧美在线观看免费观看| 性色高清在线| 丰满人妻一区二区三区性色| 黄色不卡视频| 国产精品com| 大伊香蕉在线视频免费| 精品女同一区| 黄色av一区二区在线| 韩日欧亚a级| 天天添天天干电影| 亚洲乱码精品一区二区| 无码人妻丰满熟妇奶水区毛片| 亚洲欧美色图小说| 小骚逼被操的爽不爽| 天天视频黄网站| 久久精品操| 九九热九九热| 国产多人在线观看视频| 国产乱子伦一区二区三区免看| 激情啪啪拍91| 日韩9区| a男人的天堂| 国内毛片婷婷六月色| 亚洲影视第一页| 视频二区美腿丝袜制服人妻欧美| 免费一二区| 好屌色综合| 97一区二压| 黄色免费网页无码| 日韩精品人妻一区二区| 78p欧美| 网页导航五月天免费一二三区| 亚洲丝袜少妇在线| 啊啊啊啊二区好大| 国产精点久久久成人| 丝袜美腿av女优在线| 欧美性爱一区二区三区四区| 天天精品| 国产色图乱伦| 天天日熟妇| 天美av在线观看| 91快色色色色色| 97精品一区二区三区免费| 久久久99999久网站| 久久久爆乳翘臀一线天伦理视频| 一级人妻性爱视频| 天美传媒精品久久视频| 德国一二三不卡| 国内毛片免费h片在线| 国产在线能看的你懂的| 四虎免费视频| 伊人青青一区成人视频在线观看区| 日本性爱网址| 亚洲精品自拍| 国产在线激情| 97这里只精品| 殴美性色a级欧美| 熟妇操花| 精品人妻1区| 中文字幕在线免费观看| 欧美人妻另类在线| 97大色网| 亚州色图第三区| 亚洲精品中文字幕一区在线视频 | 色老汉色| 五月丁香成人网| 成人三一级一片aaa| 亚洲自拍偷拍视频在线| 大色网久久| 亚洲欧美日韩国产丝袜自拍中文| 日韩精品.久久精品.AV女优.天美传媒| 免费在线观看国内色片网站网址| 91精品无码久久久久久久| 天天干1区2区在线| 一起草av| 无码精品久久久天天影视| 午夜成人爽爽爽爽A片李冰冰| 九九九网页| 亚洲九九夜夜| 色欲日韩欧美在线一区| 国产精品久久久久无码Av网曝门| 97伊人| 久久精品中文字幕女同| 五月婷婷hd| 偷窥自拍亚洲色图| 首页亚洲国产高跟丝袜诱惑视频| 欧亚性爱啪啪| av在线一区二区三区| 国产传媒午夜理伦精品| 翔田千里A片一区二区| 欧美性暴力| 91熟女丨91老女人| 91性网| 欧美色91| 67914在线兔费成人视频| 日本性一区| 日韩中文9| 亚洲日韩XXX| 亚洲超碰综合网| 亚洲色图综合网| 日本黄页视频在线观看| 色亚州人久干视频在线观看免费版| 久久久熟妇熟女国产| 蜜臀AV成人精品蜜臀AV久久| 热天堂一区二区| 嗯嗯嗯啊啊啊操的我好爽 | 色婷婷基地| 精品国产片亚洲一区| 国产伦精品一区二区三区在线观| 小情侣高清国产在线视频| 国产激情在线| 中文字幕一区二区三区视频播放| 欧美一级A片在线看视频性色| 日本高清有码网址视频| 国产精品久久伊人| 日本岛国黄色网址| 亚洲日韩一区电影| 热久久精品| 日韩超碰精品综合| 色老牛| 爱丝福利| 超碰色97| 人妻少妇久久中文字幕一区二区 麻豆| 精品九九九| 一个色导综合| 福利视频一区二区微拍| 偷看洗澡一二三区美女| 99精品久久| 精品91摸| 粉嫩AV输入| rivers-china.com| 97天堂| 天天色天天干天天爱| 一本一道vs波多野结衣| 国产伦精品一区二区三区在线观| www.婷婷六月天| 人人操天天爽| 欧美精品久久| 啊啊啊好大好深| www久久国产精品| 国语国产操逼伊人AV网| 激情综合久久| 久久av网| 中文字幕av一区二区三区人妻少妇| 日本不卡在线二区三区| 人人操 欧美| 日韩丝袜二区| 91啪9色| 玖玖草久草99蜜月一区二区三区| 亚洲无码一区成人免费午夜 | 九九热在线精品视频| 亚欧操逼片在线观看| 探花精品 一区二区| 午夜爽爽爽在线观看永久入口姬片| 国产亚洲99久久精品| 蜜臀人妻少妇久久在线观看|