日韩精品一区二区三区在线视频放-无码中文字幕V?一区二区-成年片免费观看视频-国内少妇人妻丰满av-国产精品中文字幕免费观看-亚洲成人久久一区二区三区-国内少妇偷人精品视频无缓冲-一区二区国产精品日本一区二区三区在线网

ARTICLE DETAIL

資訊詳情

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

【金倉(cāng)數(shù)據(jù)庫(kù)征文】M4 Mac上把Spring Boot + MyBatis接到KingbaseES:一次帶事務(wù)和并發(fā)扣庫(kù)存的實(shí)測(cè)

【金倉(cāng)數(shù)據(jù)庫(kù)征文】M4 Mac上把Spring Boot + MyBatis接到KingbaseES:一次帶事務(wù)和并發(fā)扣庫(kù)存的實(shí)測(cè) 承淵政道個(gè)人主頁(yè)??個(gè)人專(zhuān)欄:《C語(yǔ)言基礎(chǔ)語(yǔ)法知識(shí)》 《數(shù)據(jù)結(jié)構(gòu)與算法》 《C知識(shí)內(nèi)容》 《Linux系統(tǒng)知識(shí)》 《算法刷題指南》 《測(cè)評(píng)文章活動(dòng)推廣》 《大模型語(yǔ)言路線學(xué)習(xí)》 《MySQL數(shù)據(jù)庫(kù)學(xué)習(xí)》 《Python知識(shí)內(nèi)容》?逆境不吐心中苦,順境不忘來(lái)時(shí)路!? 博主簡(jiǎn)介:過(guò)去做數(shù)據(jù)庫(kù)適配時(shí),我最常見(jiàn)的做法是修改 JDBC 驅(qū)動(dòng)和連接地址,應(yīng)用能夠啟動(dòng)、SELECT 1可以執(zhí)行,就先把數(shù)據(jù)庫(kù)已適配打上勾.但真正把業(yè)務(wù)代碼跑起來(lái)后才會(huì)發(fā)現(xiàn),連接成功只是第一關(guān):主鍵生成方式、分頁(yè)語(yǔ)法、保留字、標(biāo)識(shí)符大小寫(xiě)、事務(wù)回滾以及并發(fā)更新,都可能在后面埋坑.這次我選擇了一個(gè)更貼近實(shí)際開(kāi)發(fā)的場(chǎng)景:在M4 Mac上運(yùn)行 KingbaseES,用Spring Boot 3.5 MyBatis 3.0實(shí)現(xiàn)商品庫(kù)存和訂單接口.除了完成基本CRUD,我還特意制造了庫(kù)存不足和并發(fā)搶購(gòu)兩個(gè)失敗場(chǎng)景,檢查訂單能否正確回滾,以及庫(kù)存會(huì)不會(huì)被扣成負(fù)數(shù).整個(gè)過(guò)程并非一路順利.我原以為M4需要通過(guò)AMD64模擬運(yùn)行數(shù)據(jù)庫(kù),實(shí)際卻在官網(wǎng)下載到了原生 aarch64 鏡像;按照平時(shí)的習(xí)慣啟動(dòng)容器,又在日志中碰到了權(quán)限告警;把MySQL DDL 直接搬過(guò)來(lái)時(shí),AUTO_INCREMENT、保留字和大小寫(xiě)問(wèn)題也接連出現(xiàn).本文記錄的就是這些真實(shí)操作、排查過(guò)程和解決辦法,希望能給正在進(jìn)行國(guó)產(chǎn)數(shù)據(jù)庫(kù)適配的Java開(kāi)發(fā)者提供一份可以直接參考的實(shí)測(cè)記錄.目錄一、我想驗(yàn)證的,不只是能不能連上二、環(huán)境準(zhǔn)備:M4可以直接跑ARM64版本三、第一次啟動(dòng)的小坑:容器能跑,不代表啟動(dòng)參數(shù)規(guī)范四、表結(jié)構(gòu)先適配:別把MySQL DDL原封不動(dòng)搬過(guò)來(lái)五、接入JDBC:我踩到的不是代碼坑,而是依賴(lài)來(lái)源坑六、數(shù)據(jù)源配置:驅(qū)動(dòng)類(lèi)和URL都要換,密碼不要落盤(pán)七、CRUD核心:主鍵回填、分頁(yè)和安全更新都走一遍八、事務(wù)實(shí)測(cè):先寫(xiě)訂單、后扣庫(kù)存,失敗時(shí)能否一起撤銷(xiāo)九、并發(fā)實(shí)測(cè):10個(gè)庫(kù)存,同時(shí)來(lái)兩個(gè)買(mǎi)7個(gè)十、三個(gè)遷移時(shí)很容易撞上的SQL坑1. AUTO_INCREMENT不能照搬2. order是保留字3. 未加引號(hào)的標(biāo)識(shí)符會(huì)折疊為小寫(xiě)十一、我是怎樣判斷這次適配真的完成了十二、回頭看:框架改動(dòng)不大,驗(yàn)證方式才是重點(diǎn)參考資料一、我想驗(yàn)證的,不只是能不能連上接觸一個(gè)不熟悉的數(shù)據(jù)庫(kù)時(shí),最容易寫(xiě)出的文章是建一個(gè) Spring Boot 項(xiàng)目,改四行數(shù)據(jù)源配置,執(zhí)行一條SELECT 1,然后宣布適配完成.但做過(guò)業(yè)務(wù)系統(tǒng)遷移的人都知道,連接成功只是起點(diǎn).真正容易出問(wèn)題的地方,往往藏在建表語(yǔ)法、主鍵回填、分頁(yè)、保留字、事務(wù)邊界和并發(fā)更新里.所以這次我沒(méi)有做Hello World,而是給自己定了一個(gè)更接近真實(shí)需求的小題目:用Spring Boot MyBatis寫(xiě)一套商品庫(kù)存和訂單接口,覆蓋商品的增刪改查,再驗(yàn)證兩個(gè)關(guān)鍵場(chǎng)景:訂單寫(xiě)入后扣庫(kù)存失敗,訂單能否跟著回滾;兩個(gè)請(qǐng)求同時(shí)搶庫(kù)存時(shí),會(huì)不會(huì)扣成負(fù)數(shù).我原先還有一個(gè)判斷:M4是ARM架構(gòu),可能只能拉 x86 鏡像后用模擬運(yùn)行.實(shí)際下載時(shí)這個(gè)判斷就被推翻了——金倉(cāng)官網(wǎng)已經(jīng)提供 aarch64 Docker 包.這個(gè)小插曲也提醒我,數(shù)據(jù)庫(kù)適配不要憑過(guò)去的印象寫(xiě)方案,先以當(dāng)前版本的官方介質(zhì)為準(zhǔn).二、環(huán)境準(zhǔn)備:M4可以直接跑ARM64版本我的本機(jī)環(huán)境如下.JDK選擇17,是因?yàn)楸疚氖褂肧pring Boot 3.5.x;Docker 服務(wù)端本身也是 arm64.Hardware: Apple M4 / arm64 macOS: 26.6 Docker Engine: 29.6.2 / linux-arm64 Java: OpenJDK 17.0.20 Maven: 3.9.16我從金倉(cāng)數(shù)據(jù)庫(kù)官網(wǎng)下載中心取得兩個(gè)文件KingbaseES_V009R001C010B0004_aarch64_Docker.tarKingbaseES_V009R001C010B0004_JDBC.zip這里要留意,Docker 數(shù)據(jù)庫(kù)鏡像和 JDBC 驅(qū)動(dòng)是兩個(gè)獨(dú)立下載項(xiàng),不能假設(shè)鏡像包里一定帶著應(yīng)用側(cè)要用的 jar.下載后我先校驗(yàn)了官網(wǎng)給出的 MD5,再加載鏡像md5 KingbaseES_V009R001C010B0004_aarch64_Docker.tar md5 KingbaseES_V009R001C010B0004_JDBC.zipdockerload-iKingbaseES_V009R001C010B0004_aarch64_Docker.tardockerimage inspect kingbase_v009r001c010b0004_single_arm:v1\--format{{.Os}}/{{.Architecture}}最后一條返回linux/arm64,不是通過(guò) Rosetta 或 QEMU 跑起來(lái)的 AMD64 鏡像.對(duì)M系列Mac 來(lái)說(shuō),少一層模擬,啟動(dòng)速度和資源占用都更踏實(shí).三、第一次啟動(dòng)的小坑:容器能跑,不代表啟動(dòng)參數(shù)規(guī)范我第一次照著常見(jiàn)數(shù)據(jù)庫(kù)容器的方式啟動(dòng),沒(méi)有加--privileged.數(shù)據(jù)庫(kù)最終雖然起來(lái)了,日志中卻出現(xiàn)sudo: pam_open_session: Permission denied這類(lèi)告警很容易被數(shù)據(jù)庫(kù)已經(jīng)能連接掩蓋.我回看官方 Docker 安裝手冊(cè),重新按容器運(yùn)行要求創(chuàng)建,并把宿主機(jī) 54321 映射到容器 54321dockerrun-d\--namekes-v9-dev\--privileged\-p54321:54321\-eDB_MODEpg\-eDB_USERsystem\-eDB_PASSWORD初始化強(qiáng)密碼\-eNEED_STARTyes\-v本機(jī)數(shù)據(jù)目錄:/home/kingbase/userdata\kingbase_v009r001c010b0004_single_arm:v1DB_MODEpg表示這次按 PG 兼容模式驗(yàn)證.掛載目錄不要隨便指向臨時(shí)路徑,否則刪容器后測(cè)試數(shù)據(jù)也一起沒(méi)了.口令也不要寫(xiě)進(jìn) Git、文章附件或鏡像層,本文后面的應(yīng)用配置統(tǒng)一從環(huán)境變量讀取.重新啟動(dòng)后,日志出現(xiàn)server started.我又進(jìn)入容器核對(duì)架構(gòu)和客戶(hù)端版本,結(jié)果分別是aarch64與ksql (KingbaseES) V009R001C010.接著創(chuàng)建獨(dú)立業(yè)務(wù)用戶(hù)和數(shù)據(jù)庫(kù).開(kāi)發(fā)項(xiàng)目不要長(zhǎng)期拿初始化管理員賬號(hào)直連,哪怕只是本機(jī)演示也應(yīng)把這個(gè)習(xí)慣保留下來(lái).CREATEUSERorder_appWITHPASSWORD業(yè)務(wù)賬號(hào)強(qiáng)密碼;CREATEDATABASEorder_demo OWNER order_app;四、表結(jié)構(gòu)先適配:別把MySQL DDL原封不動(dòng)搬過(guò)來(lái)示例只有兩張表product_stock保存可用庫(kù)存,purchase_order保存訂單.主鍵使用標(biāo)準(zhǔn)的 identity 寫(xiě)法,庫(kù)存和數(shù)量則用CHECK保住數(shù)據(jù)底線.CREATETABLEproduct_stock(idBIGINTGENERATEDBYDEFAULTASIDENTITYPRIMARYKEY,skuVARCHAR(64)NOTNULLUNIQUE,product_nameVARCHAR(128)NOTNULL,available_stockINTEGERNOTNULLCHECK(available_stock0),versionINTEGERNOTNULLDEFAULT0,updated_atTIMESTAMPNOTNULLDEFAULTCURRENT_TIMESTAMP);CREATETABLEpurchase_order(idBIGINTGENERATEDBYDEFAULTASIDENTITYPRIMARYKEY,order_noVARCHAR(64)NOTNULLUNIQUE,skuVARCHAR(64)NOTNULL,quantityINTEGERNOTNULLCHECK(quantity0),statusVARCHAR(32)NOTNULL,created_atTIMESTAMPNOTNULLDEFAULTCURRENT_TIMESTAMP);CREATEINDEXidx_purchase_order_skuONpurchase_order(sku);這里我沒(méi)有給兩表加外鍵.不是說(shuō)外鍵不能用,而是訂單記錄往往要保留業(yè)務(wù)發(fā)生時(shí)的 SKU,即使商品后來(lái)下架也不能讓歷史訂單消失.是否加外鍵應(yīng)該服從業(yè)務(wù)生命周期,不能為了讓演示看起來(lái)規(guī)范硬綁關(guān)系.version字段也要解釋清楚本文只是讓它隨庫(kù)存變化遞增,方便觀察更新次數(shù);真正防止超賣(mài)的是后面那條帶庫(kù)存條件的原子UPDATE,不能把這個(gè)字段包裝成已經(jīng)實(shí)現(xiàn)了完整的樂(lè)觀鎖.五、接入JDBC:我踩到的不是代碼坑,而是依賴(lài)來(lái)源坑按慣性在 Maven Central 中寫(xiě)一個(gè)驅(qū)動(dòng)坐標(biāo),很可能得到依賴(lài)不存在的錯(cuò)誤.我實(shí)際檢查時(shí),com.kingbase8:kingbase8:9.0.0并不能從 Maven Central 直接取得.解決方法是使用官網(wǎng)下載的 JDBC 包,并把 jar 安裝到本機(jī) Maven 倉(cāng)庫(kù);團(tuán)隊(duì)環(huán)境則更適合上傳到公司 Nexus/Artifactory,統(tǒng)一管理版本.mvn install:install-file\-Dfilekingbase8-9.0.0.jar\-DgroupIdcom.kingbase8\-DartifactIdkingbase8\-Dversion9.0.0\-Dpackagingjarpom.xml的核心依賴(lài)如下parentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion3.5.16/version/parentpropertiesjava.version17/java.versionmybatis-spring-boot.version3.0.5/mybatis-spring-boot.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion${mybatis-spring-boot.version}/version/dependencydependencygroupIdcom.kingbase8/groupIdartifactIdkingbase8/artifactIdversion9.0.0/version/dependency/dependenciesSpring Boot 與 MyBatis 的版本并不是隨手拼的.Spring Boot 3.5.x 要求至少 Java 17;MyBatis Spring Boot Starter 3.0 系列覆蓋 Boot 3.23.5 和 Java 17 及以上.跨數(shù)據(jù)庫(kù)適配時(shí),先把框架版本關(guān)系固定住,能避免把框架兼容問(wèn)題誤診成數(shù)據(jù)庫(kù)問(wèn)題.六、數(shù)據(jù)源配置:驅(qū)動(dòng)類(lèi)和URL都要換,密碼不要落盤(pán)我的application.yml如下spring:datasource:url:jdbc:kingbase8://localhost:54321/order_demousername:${KES_USERNAME:order_app}password:${KES_PASSWORD}driver-class-name:com.kingbase8.Driverhikari:maximum-pool-size:5minimum-idle:1connection-timeout:3000connection-test-query:SELECT 1mybatis:mapper-locations:classpath:/mapper/*.xmlconfiguration:map-underscore-to-camel-case:truelog-impl:org.apache.ibatis.logging.stdout.StdOutImpl啟動(dòng)前用環(huán)境變量傳入口令exportKES_USERNAMEorder_appexportKES_PASSWORD業(yè)務(wù)賬號(hào)強(qiáng)密碼mvn spring-boot:run一開(kāi)始我只看見(jiàn) Spring Boot 正常啟動(dòng),還不敢把它算作驗(yàn)證通過(guò),于是專(zhuān)門(mén)寫(xiě)了一個(gè)/api/database/info接口,從當(dāng)前連接查詢(xún)數(shù)據(jù)庫(kù)版本、數(shù)據(jù)庫(kù)名和用戶(hù).實(shí)際返回的是KingbaseES V009R001C010、order_demo、order_app.這一步能排除“應(yīng)用其實(shí)連到了本機(jī)另一個(gè) PostgreSQL 實(shí)例”之類(lèi)的低級(jí)誤判.七、CRUD核心:主鍵回填、分頁(yè)和安全更新都走一遍MyBatis 接口沒(méi)有特殊注解技巧,真正決定適配性的仍然是SQL.新增商品使用 identity 主鍵,并讓驅(qū)動(dòng)把生成的 id 回填到 Java 對(duì)象insertidinsertuseGeneratedKeystruekeyPropertyidINSERT INTO product_stock (sku, product_name, available_stock) VALUES (#{sku}, #{productName}, #{availableStock})/insertselectidselectPageresultTypecom.example.kingbase.domain.ProductStockSELECT id, sku, product_name, available_stock, version, updated_at FROM product_stock ORDER BY id LIMIT #{limit} OFFSET #{offset}/selectupdateidadjustStockUPDATE product_stock SET available_stock available_stock #{delta}, version version 1, updated_at CURRENT_TIMESTAMP WHERE sku #{sku} AND available_stock #{delta} 0/updatedeleteiddeleteBySkuDELETE FROM product_stock WHERE sku #{sku}/delete我給 REST 層準(zhǔn)備了五組動(dòng)作新增商品、按 SKU 查詢(xún)、分頁(yè)查詢(xún)、調(diào)整庫(kù)存、刪除商品.page和size沒(méi)有直接原樣傳給 SQL頁(yè)碼最小為1,每頁(yè)限制在 1100 之間,再計(jì)算OFFSET.這不是金倉(cāng)獨(dú)有的要求,而是換庫(kù)時(shí)很容易順手遺漏的輸入邊界.# 新增curl-XPOST http://localhost:8080/api/products\-HContent-Type: application/json\-d{sku:KB-DEMO-001,productName:金倉(cāng)數(shù)據(jù)庫(kù)實(shí)戰(zhàn)課,initialStock:10}# 加 5 個(gè)庫(kù)存curl-XPATCH http://localhost:8080/api/products/KB-DEMO-001/stock\-HContent-Type: application/json\-d{delta:5}# 分頁(yè)、刪除curlhttp://localhost:8080/api/products?page1size20curl-XDELETE http://localhost:8080/api/products/KB-TEMP-001實(shí)測(cè)中,首條商品返回id1,說(shuō)明生成主鍵成功回填;庫(kù)存從10調(diào)到15,version從0變?yōu)?;臨時(shí)商品刪除返回 204,再查詢(xún)返回 404;重復(fù)SKU被統(tǒng)一映射為409,沒(méi)有把長(zhǎng)串?dāng)?shù)據(jù)庫(kù)異常直接甩給前端.到這里可以確認(rèn)普通 CRUD 沒(méi)問(wèn)題,但這仍然只完成了基本可用.對(duì)訂單系統(tǒng)來(lái)說(shuō),下面兩項(xiàng)才是我最關(guān)心的.八、事務(wù)實(shí)測(cè):先寫(xiě)訂單、后扣庫(kù)存,失敗時(shí)能否一起撤銷(xiāo)訂單創(chuàng)建故意采用先插入訂單,再扣庫(kù)存的順序.這樣只要扣減失敗,最容易暴露事務(wù)是否真的生效.核心服務(wù)代碼如下ServicepublicclassOrderService{privatefinalPurchaseOrderMapperpurchaseOrderMapper;privatefinalProductStockMapperproductStockMapper;publicOrderService(PurchaseOrderMapperpurchaseOrderMapper,ProductStockMapperproductStockMapper){this.purchaseOrderMapperpurchaseOrderMapper;this.productStockMapperproductStockMapper;}TransactionalpublicPurchaseOrdercreate(CreateOrderRequestrequest){PurchaseOrderordernewPurchaseOrder();order.setOrderNo(request.orderNo());order.setSku(request.sku());order.setQuantity(request.quantity());order.setStatus(CREATED);purchaseOrderMapper.insert(order);intaffectedproductStockMapper.deductStock(request.sku(),request.quantity());if(affected!1){thrownewAppException(HttpStatus.CONFLICT,庫(kù)存不足或商品不存在);}returnrequireByOrderNo(request.orderNo());}}扣庫(kù)存不是先查余額,再在Java里判斷,再更新.那種寫(xiě)法在并發(fā)下有時(shí)間窗口.我把條件放進(jìn)同一條 SQLupdateiddeductStockUPDATE product_stock SET available_stock available_stock - #{quantity}, version version 1, updated_at CURRENT_TIMESTAMP WHERE sku #{sku} AND available_stock #{quantity}/update先用數(shù)量 3 創(chuàng)建訂單,HTTP 返回 201,庫(kù)存由15變?yōu)?2.隨后用數(shù)量99創(chuàng)建ORD-ROLLBACK-001,接口返回 409.關(guān)鍵不是報(bào)錯(cuò)本身,而是我再進(jìn)數(shù)據(jù)庫(kù)查該訂單數(shù)量為 0,庫(kù)存仍是 12.說(shuō)明前面已經(jīng)執(zhí)行的INSERT確實(shí)隨運(yùn)行時(shí)異?;貪L了,Spring 事務(wù)管理器、JDBC 驅(qū)動(dòng)和 KingbaseES 的事務(wù)協(xié)作符合預(yù)期.這里還有一個(gè)常見(jiàn)誤區(qū)把Transactional加在同類(lèi)內(nèi)部調(diào)用的方法上,然后從另一個(gè)普通方法用this.create()調(diào)它.此時(shí)可能繞過(guò) Spring 代理,注解看著在,事務(wù)卻沒(méi)進(jìn)去.我的事務(wù)方法放在獨(dú)立Service的 public 方法上,由 Controller 經(jīng) Spring Bean 調(diào)用,避免了自調(diào)用失效.九、并發(fā)實(shí)測(cè):10個(gè)庫(kù)存,同時(shí)來(lái)兩個(gè)買(mǎi)7個(gè)事務(wù)回滾通過(guò)后,我把庫(kù)存重置為10,同時(shí)發(fā)出兩筆各買(mǎi)7個(gè)的請(qǐng)求.理論上最多只能成功一筆;如果代碼存在先查后改的競(jìng)態(tài),兩筆都可能讀到10,最終產(chǎn)生超賣(mài).curl-s-o/tmp/order-a.json-w%{http_code}\-XPOST http://localhost:8080/api/orders\-HContent-Type: application/json\-d{orderNo:ORD-CONCURRENT-A,sku:KB-DEMO-001,quantity:7}curl-s-o/tmp/order-b.json-w%{http_code}\-XPOST http://localhost:8080/api/orders\-HContent-Type: application/json\-d{orderNo:ORD-CONCURRENT-B,sku:KB-DEMO-001,quantity:7}wait實(shí)測(cè)結(jié)果是一筆 201、一筆 409;數(shù)據(jù)庫(kù)里只留下成功訂單,最終庫(kù)存為3,沒(méi)有負(fù)數(shù),也沒(méi)有失敗訂單殘留.具體是哪一筆成功并不重要,調(diào)度順序本來(lái)就不應(yīng)成為業(yè)務(wù)假設(shè).這個(gè)方案依賴(lài)數(shù)據(jù)庫(kù)對(duì)單條條件更新的原子性,簡(jiǎn)單而有效.如果業(yè)務(wù)還要處理多 SKU 鎖定、限時(shí)釋放、跨服務(wù)消息等場(chǎng)景,就需要繼續(xù)設(shè)計(jì)鎖順序、冪等鍵和補(bǔ)償機(jī)制;不能因?yàn)檫@個(gè)小測(cè)試通過(guò),就推導(dǎo)出所有并發(fā)問(wèn)題都解決了.十、三個(gè)遷移時(shí)很容易撞上的SQL坑為了確認(rèn)兼容邊界,我沒(méi)有只跑正確 SQL,還把幾段常見(jiàn)的遷移語(yǔ)句故意送進(jìn)數(shù)據(jù)庫(kù).1. AUTO_INCREMENT不能照搬在本次 PG 兼容模式下執(zhí)行CREATETABLEmysql_style(idBIGINTAUTO_INCREMENTPRIMARYKEY);數(shù)據(jù)庫(kù)在AUTO_INCREMENT附近報(bào)語(yǔ)法錯(cuò)誤.我的處理是改成GENERATED BY DEFAULT AS IDENTITY.如果從MySQL遷移,除了 DDL,還要全量檢查ON DUPLICATE KEY UPDATE、反引號(hào)、無(wú)符號(hào)類(lèi)型、時(shí)間函數(shù)等方言,不要等應(yīng)用上線后逐條踩雷.2. order是保留字CREATE TABLE order (...)直接報(bào)錯(cuò).可以寫(xiě)成帶雙引號(hào)的order,但之后每條 SQL 都得正確引用,維護(hù)成本很高.我最終把表名改成purchase_order.數(shù)據(jù)庫(kù)遷移里,改一個(gè)不沖突的業(yè)務(wù)名通常比到處加引號(hào)穩(wěn)妥.3. 未加引號(hào)的標(biāo)識(shí)符會(huì)折疊為小寫(xiě)我創(chuàng)建了CaseDemo,再執(zhí)行不帶引號(hào)的SELECT * FROM CaseDemo,實(shí)際查找的是casedemo,于是報(bào)關(guān)系不存在;寫(xiě)成SELECT * FROM CaseDemo才成功.解決辦法不是要求團(tuán)隊(duì)記住每一個(gè)大小寫(xiě),而是從建表開(kāi)始統(tǒng)一使用小寫(xiě)蛇形命名,MyBatis 再通過(guò)map-underscore-to-camel-case映射為 Java 駝峰字段.這三項(xiàng)都不是數(shù)據(jù)庫(kù)不好用,而是源庫(kù)方言和目標(biāo)庫(kù)規(guī)則不同.有效的遷移流程應(yīng)該先掃描對(duì)象和 SQL,再做兼容改寫(xiě),最后用回歸測(cè)試驗(yàn)證,而不是把連接串換完就上線.十一、我是怎樣判斷這次適配真的完成了最終我給自己列了一張比應(yīng)用啟動(dòng)成功更嚴(yán)格的驗(yàn)收表檢查項(xiàng)實(shí)測(cè)結(jié)果關(guān)注點(diǎn)原生架構(gòu)通過(guò)鏡像與容器均為 aarch64JDBC 連接通過(guò)返回 KingbaseES 版本、業(yè)務(wù)庫(kù)和業(yè)務(wù)用戶(hù)新增與主鍵回填通過(guò)identity 主鍵回填id1查詢(xún)與分頁(yè)通過(guò)LIMIT/OFFSET正常參數(shù)有限界更新與刪除通過(guò)庫(kù)存不降為負(fù)數(shù)刪除后返回 404唯一鍵異常通過(guò)重復(fù) SKU 轉(zhuǎn)為 409未暴露內(nèi)部異常本地事務(wù)通過(guò)扣庫(kù)存失敗后訂單行回滾并發(fā)扣減通過(guò)10 個(gè)庫(kù)存下兩筆 7 個(gè)僅一筆成功構(gòu)建與上下文測(cè)試通過(guò)1 個(gè)測(cè)試0 失敗、0 錯(cuò)誤項(xiàng)目最后執(zhí)行mvn test,Spring 上下文能夠用 JDK 17 啟動(dòng),測(cè)試結(jié)果為T(mén)ests run: 1, Failures: 0, Errors: 0,構(gòu)建成功.如果要把這個(gè)示例推進(jìn)到生產(chǎn),我還會(huì)補(bǔ)四件事第一,用 Flyway 或 Liquibase 管理版本化 DDL,而不是人工執(zhí)行腳本;第二,在測(cè)試環(huán)境用Testcontainers 或?qū)S?KingbaseES 實(shí)例跑集成測(cè)試;第三,根據(jù)壓測(cè)結(jié)果設(shè)置連接池、慢 SQL 與超時(shí),不照抄本文的5個(gè)連接;第四,梳理原系統(tǒng)的數(shù)據(jù)庫(kù)特有語(yǔ)法、存儲(chǔ)過(guò)程和類(lèi)型映射,建立可重復(fù)執(zhí)行的兼容清單.十二、回頭看:框架改動(dòng)不大,驗(yàn)證方式才是重點(diǎn)這次實(shí)測(cè)給我的結(jié)論很樸素對(duì)于采用常規(guī) SQL 的 Spring Boot MyBatis 項(xiàng)目,接入 KingbaseES 的 Java 代碼改動(dòng)并不大,主要變化集中在官方 JDBC 驅(qū)動(dòng)、連接 URL 和目標(biāo)庫(kù)方言.真正花時(shí)間的地方,不是把數(shù)據(jù)源配上,而是確認(rèn)那些以前默認(rèn)成立的事情在新數(shù)據(jù)庫(kù)上仍然成立.比如,M4 是否只能模擬 x86,要用鏡像架構(gòu)回答;主鍵能不能回填,要看新增接口返回;事務(wù)有沒(méi)有生效,要制造一次中途失敗再查庫(kù);并發(fā)會(huì)不會(huì)超賣(mài),要讓兩個(gè)請(qǐng)求真的撞在一起.把這些問(wèn)題變成可觀察、可復(fù)現(xiàn)的小實(shí)驗(yàn),數(shù)據(jù)庫(kù)適配才從我覺(jué)得可以變成我驗(yàn)證過(guò)可以.這也是我認(rèn)為國(guó)產(chǎn)數(shù)據(jù)庫(kù)適配最值得保留的方法少一點(diǎn)根據(jù)相似性做推斷,多一點(diǎn)以官方介質(zhì)、真實(shí) SQL 和失敗場(chǎng)景為證據(jù).連接成功值得高興,但敢于主動(dòng)制造失敗,才更接近生產(chǎn)可用.參考資料KingbaseES 官網(wǎng)下載中心KingbaseES Docker 安裝手冊(cè)KingbaseES JDBC 使用文檔Spring Boot 3.5 系統(tǒng)要求MyBatis Spring Boot Starter 官方說(shuō)明真正的勇者不是流淚的人,而是含淚奔跑的人!敬請(qǐng)期待下一篇文章內(nèi)容每日心靈雞湯: 當(dāng)你開(kāi)始害怕別人不開(kāi)心,其實(shí)是在保護(hù)過(guò)去的自己!當(dāng)你因?yàn)樗苏Z(yǔ)氣不好、態(tài)度不耐煩而下意識(shí)緊張、自我懷疑時(shí),這往往不是當(dāng)下的問(wèn)題,而是過(guò)去經(jīng)驗(yàn)留下的自動(dòng)反應(yīng).你曾經(jīng)為了在不穩(wěn)定的環(huán)境中保護(hù)自己,學(xué)會(huì)把別人的情緒當(dāng)作一種危險(xiǎn)信號(hào),于是通過(guò)討好、壓抑來(lái)?yè)Q取安全感.但這種機(jī)制只是童年時(shí)期的生存策略,并不適用于現(xiàn)在的你.真正重要的是意識(shí)到:當(dāng)下的你已經(jīng)有能力區(qū)分現(xiàn)實(shí)與過(guò)去,不需要再用過(guò)度敏感來(lái)保護(hù)自己.別人的情緒屬于他們自己,你不需要為此負(fù)責(zé);你只需要穩(wěn)住自己,專(zhuān)注于自己的感受與選擇.
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
欧美岛国精品在线观看| 久久久啊啊| 97在线公开视频| 人妻天堂综合网| 91美女视频电影| 丁香五月偷拍| 久久国产成人精品国产成人亚洲 | 吖在线不卡一区二区国产剧情 | 人妻81p| 蜜臀99久久精品久久久久久| m欧洲一级午老| 国产精品久久久久久久久AV大片| 91精品久久久久五月天精品 | 国产久久久久久久久一区二区 | 91亚洲人| 精品对白久久不卡| 超碰 国产熟女精品一区| 簧片免费看视频| 精品九九淫乱男| 五月丁香久久| 狠狠狠狠狠| 91人人| 超碰天天久久79| 日韩免费人妻色情网站| 一区二区三区黄片免费观看| 亚洲精品国产专区在线观看| 精品欧美老熟女一二区| 亚洲欧美第一页| 日日干日日摸| 夜夜免费视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 99rre在线精品99re8| 狠狠2050在线观看| 国产精品 午夜福利| 超碰成人免费| 日本一区二区不卡精品| 99亚洲国产精品色一区二区三区| www.久久超碰| 大香蕉手机在线| 91 国产丝袜在线播放-百度| 五月天AV资源| 日逼97| 久久綜合很很很| 高清不卡视频| 欧美性,色九九| 伊人天堂在线| 日韩丝袜人妻AV| 国产一区96在线| 手机不卡视频不卡在线一二三区 | 日本狠狠干| 色婷婷色99国产综合精品| 久久男女激情视频网站 | 久久久久久久少妇| 久久国模av| 九九热免费国产视频婷婷伊人| 自怕偷自怕亚洲精品| 电家庭影院午夜69久久夜色精品国产69乱| 加勒比色99999| 九九av| 久久 久久国内精品亚洲| 日韩啪啪啪视频| 日韩78m视频| 噜噜噜亚洲精品| 国产精品免费视频不卡| 久久久久久久久久8888| 91久久青青草原精品| 91天堂视频| 亚洲h片在线免费观看| 综合色好色| 男人的天堂com| 九t超碰| 香蕉综合网| 亚洲中文字幕在线视频一区二区| 先锋激情∨在线视频播放| 三级网色| 久久久无码国精品无码三区三区| 麻豆国产原创AV色哟哟| 91超碰碰在线| 欧美综合网在线| 99久久精品无码一区二区毛片免费| 国产探花精品在线| 青青草吊丝| 大香蕉一人在线| 大香蕉92| 天天夜躁日日躁狠狠2002| 一级黄色视频网| 一区二区三区 日韩欧美| 免费综合亚洲中文| 久久精品老司| 激情综合网亚洲| 97精品熟女少妇一区 | 天堂中文资源在线bt| 97色色婷婷| 无码人妻丰满熟妇奶水区毛片| 天天欧美色| 最新9久久久9免费视频| 自拍偷拍 日韩欧美| 日亚韩精品视频二区三| 日日骚 av| 欧美,日韩,中文,另类| 20cm女自慰在线日韩欧美| 丰满人妻无码一区二区三区| 国产一区二区三区中文字幕| 丝袜美腿av女优在线| 伊人久久大香大香线蕉中文 | 丁香六月啪| 久久亚洲人妻| 亚洲欧美日韩制服另类| 六月丁香婷| 加勒比人妻综合| 日韩精品亚洲一二三| ..日韩av毛片精品久久久| 色一射色一射| 国产精品网址| 蜜臀av一区二区三区免费观看| 日本99久久| 330dv亚洲成年视频网| 嗯,啊。舔我逼| 亚洲色欲天天天堂色欲网女| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 97视频在线免费播放| 无码78| 久久婷婷五月天| 精品一区二区三区四区外站| 久久日韩精品一区二区| 高清不卡一二三区视频......| 91热色| 日韩国产欧美伦理在线| 求求你操操我| 日韩精品人妻一| av影院十区| 殴美性色a级欧美| 日少妇亚洲版| 免费看片黄| 大香蕉乱级| 亚洲另类久操网| 青青草好吊色| 六九九九| 国产色综合亚洲色综合吹潮| 日本蜜桃| 伊人久久大香线蕉无码| 欧美大香蕉卡久久| 97ai亚洲| 骚逼高潮久久精品| 9I1性色影院| 欧美巨大性舒爽顶到了| 天堂涩涩| 荡小穴在线观看| 家庭乱伦国产| 亚洲极品| 一起草AV| 乱伦日本色图AⅤ| 精品久| 啊啊啊com| 国产精品亚洲天堂网址| 97资源站国产精品| 日本色色色视频| 久99在线免费观看视频| 九九拍拍精品视频在线播放| 亚洲一卡2卡3卡4卡乱码网站| 超碰精品97| 欧美性爱97超碰| 成年人网站在线免费观看| 欧美日韩精品久久| 麻豆天美电影一区二区| 333kkkk·亚洲com久久| 日本成人免费一区二区三区| 色999偷自拍拍| 国产精品一二三免费网站| 操一操摸一摸| 美女尤物福利视频| 久久黄色性爱视频| 97亚洲精品| 亚洲精品人伦一区二区| 十八禁视频网站| 极品色www影院| 日本午夜操逼| 国产精品小视频一区二区三区| 日日噜噜夜夜久久亚洲一区二区 | 香蕉一区二区三区在线视频| 99热在线播放| 97免费在线视频在线观看| 色婷婷狠狠18禁| 91Chinese在线| 伊人在线大香蕉视频久久| 九九九久久久久| 97色色视频| 亚洲免费精品一区| 欧美色乱| 老司机福利青青草| 精品人妻15区| 乱操乱伦AV| 高清孕妇孕交 交| 1769精品一区二区三区| 嗯啊不要啊在线 | 一牛一区二区三区久久| 逼逼逼逼操操操操操操操操操午夜剧场 | 欧美偷拍区| 久久久久国色αv免费观看| 91成人在线| 久久久免费一级黄片| 免费视频在线一区二区不卡| 日韩欧视频| 亚洲日韩东京热一区| 91在线页| 99re这里只有精品中心播放| www.色婷婷| 成人七区| 粉嫩不卡一区二区性爱| 三级AV入口| 日本精品一级二级三级| 操东北女人| 好爽视频在线观看| 一区二区三| 97超碰大| 亚洲精品99999| 性综合网| 亚洲AV无码乱码| 日韩性爱小视频| 亚洲全色网| 亚洲人妻日日日| 精品在线78| 蜜汁欧美| 国产馆| 青草一区二区| 日韩av在线精品观看| 日韩啪啪视频| 免费一级性爱久久| 亚洲无码AV九九九| 粉嫩av在线一区二区| 先锋激情∨在线视频播放| av亚欧| 高清有码一区二区| 色操逼网| 亚洲精品一区二区三区在线播放| 久久婷婷综合国际产色怕| 国产免费久久久久| 91天天综合网,天天综合网| 久久熟妇五十路一区| 国产熟妇一区二区| 丝袜美腿91| 97精品国产| 久久久精品中文字幕爱豆| 九九综合色| 亚洲乱色视频一区、二区在线| 国产在线激情| 成年人黄色视频免费| 黄色乱论网站| 欧美一级久久久丰满| 久久九九一区二区三区成人| 久草大| 六月婷婷综合| 男人精品天堂一区| 亚洲综合有码| 精品玖九九久| 永久免费av无码网站国产app| 亚洲熟女精品| www欧美性爱| 六九九九| 91碰碰| 丰满少妇一区二区三区免费看| 色网站导航大全| 欧美很很操视频| 欧美最婬乱婬爆婬性视频 | 欧美顶级黄色大片免费| 久久久久13| 人人妻人人色| 国产精品视频内谢女人| 日韩欧美午夜视频在线| 国模限制级电影| 大香蕉啪啪啪啪在线| 国产搭汕a级片| 丰满美女一级毛片在线播放| 亚洲国产日韩欧美熟妇在线| 欧美日韩一干二干| 欧美日韩另类激情图片| 国产区91柔拿会所技师| 精品.99999| 国产日韩美女小穴视频网站不卡| 日本影视久久免费| 99热自拍| 中文一区二区| 精品欧美А∨无码黑人大荫蒂| www.色综合| 九九九九九九九九九九九免费国产| 日韩精品系列| 中文字幕乱码人妻二区三区| 九九毛片这里只有精品| 亚洲交性| 大香蕉九九| 亚洲AV在线资源| 日本国产欧美一区三区二区 | 亚洲αv一区二区三区| 精品无码一区二区| 亚洲另类天堂| 色爽爽文学| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场 | 99热婷婷| 亚洲黄色电影| 超碰精品在线| 性猛交| 五月婷婷无码| 校园春色美腿丝袜| 免费一级视频特黄色大片| 97网址97| 午夜福利视频在线一区| www.acm成人黄色毛片| 无码国产Av| 亚洲在高跟鞋自慰久久在色线| 中英熟女操女| 东北女人被操| 国产亚洲精品av一区| 激情欧美日韩女同久久| 少妇高潮特黄A片| 欧洲精品久久| 日韩丝袜二区| 亚洲男人天堂2| 中文字幕av亚洲在线| 伊人大香蕉在线| se吧提供国产乱老熟视频胖女人| 欧美综合加勒比在线| 国产中出内射一区二区| 亚州宗合另类| 中文字幕中文字幕一区二区| 99最新日韩偷拍视频| 国语av最新自产拍在线观看| 九九久精品| 色婷婷激情| 另类图片综合| 久久一二三四不卡| 熟女被操视频网址| 欧美懂色综合网| 97超碰久久色| 蜜臀久久久久久999| 在线观看高清AV| 欧美色图片色哟哟| 日韩精品操少妇| 粉嫩不卡一区二区性爱| 欧洲亚洲少妇| 欧美亚洲se91| 情侣开房子拍 日韩无码 女的很漂亮| 爱爱啊啊啊| 在线黄色污污网站| 国产高清26uuu| 小草av不卡亚洲二区| 五十路三级片| www久久精品| 欧美第一页性| 日本三级R| 东京热一区二区中文字幕| 亚洲欧美setu| 熟女性视频| 国产乱伦性爱区| 人妻精品一区一区三区蜜桃91| 91九色丨国产丨爆乳| 亚洲一区二区三区AV无码| 立川理惠被中出无码| 久久人妻一区二区三区高清| 九热大香蕉| 天天摸,夜夜摸| 欧美日日操| 人妻精品视频一区二区三区| 东北女人高潮视频| 日产精品久久久一区二区| 亚州综合AⅤ| 久久亚洲影院一区二区| 夜夜草网站| 人人操人人干网页| 亚洲蜜乳av| 人人人干干人人干| 天天综合网网欲色| 一区二区中文| 91狠狠综| 黄片www视频免费| 澳门色噜噜色噜噜色噜噜色噜噜色噜噜| 中文久久96| 久久超碰免费的| 大香蕉伊人亚洲| 亚洲熟妇图片| 久久综合乱子伦国产免费| 亚洲麻豆精品二区三区| 一区二区激情国产熟女 | 后入式视频国产自| 天天爱综合网| 天天干夜夜操一区二区| 怡红院亚洲怡春院av| 情色五月天网| 伊人久久亚洲色欲综合网站 | 欧美 日韩第一性色| 久啪视频| 亚洲高清综合网| 伊色久人大在线| 少妇大屁屁| 蜜桃天美传媒AV一区二区三区| 亚洲自拍青操视频| 人人妻人人爽| 亚洲国产精品无码AV久久| 啊啊嗯嗯好爽| 74成人在线| 先锋色眉乱伦资源| 亚洲免费人妻在| 97人人超| 久久久久久久久九九久孕交| 天海翼久久| asc国产精品| 99精品九九九九九九| 日日摸日日碰夜夜爽视频| 好爽视频在线观看视频| 性爱视频免费网址| 99人人干| 人妻一区二区三区| 熟女一区二区三区四区| 少妇的嫩逼图片| 91久久| 1级午夜影院费免区| 欧美成人性爱视频大全| 久无码| 嗯嗯啊啊日韩精品| 性色A∨91| 伊人久久综合影院精品久久久| 亚洲国产精品9999在线观看| 不卡免费av在线播放| 欧美日韩夜夜| 中文字幕午夜精品久久久| 不卡视频一区蜜桃视频| 国产91精品福利在线| 五月激情综合网| 精品视频97| 成人精品久久| 香蕉久久AⅤ...| 91黑丝在线播放| 亚洲精品国产av天美传媒| 夜夜黄| 成人乱人伦一区二区| 成人日韩欧美| 亚洲综人| 精品国产91av一区二区三区| 国产精品麻豆成人AV艾秋| 久久久久亚洲精品| 97精品网| 99热精品在线| 亚洲天堂美臀在线| 很黄很色的视频在线观看| 五月激情综合网| 懂色av中文字幕一区二区三区天美 | 亚洲性网| 欧美激情综合色综合啪啪五月| 歐美性天天| 国产中出内射一区二区| 五月丁香六月| 熟妇色99| 无遮挡猛进视频免费无限观看| 青青操少妇| 日本成人在线不卡一区二区三区| 99视频内射三四| 欧日韩在线观看| 日本性交操一区二区不卡系列| 可以免费观看的av| 欧美美逼| 翔田千里av一区二区三区| 综合色拍| 狠狠爱夜夜| 日韩Va亚洲va欧美Ⅴa久久| 欧美不卡在线美女| 一区二区不卡免费| 天天插夜夜操| 美女AV一区二区| 色综合加勒比| 欧美制服网站美腿丝袜| 熟女熟妇一区二区三四区| 亚洲欧美中文日韩视频中国语| 操少妞在线视频| 蜜乳成人AV| 蜜臀AV成人精品蜜臀AV久久| 人人妻人人澡人人爽久久av| 国产玖玖| 国产9l 大屁股| 色色五月天婷婷| 亚洲高清男人天堂| 中文字幕在线高清男人的天堂 | 精品久久久久久中文字幕视频免费| 午夜高清成人在线视频| 欧美色图自拍| 亚洲综合色男人网| 麻豆国产97在线| 国产精品国产自产拍高清AV| 久久草草亚洲蜜桃臀| 欧美91精彩| 国模私拍一区二区三区神乳| 亚洲欧美日韩中文久久自慰| 婷婷视频网| 无码人妻1727| 久久久久久久六六| 干婷婷综合网| 日韩啪啪视频| 婷婷丁香一区二区三区| 强奸乱伦av电影| 国产精品九九九| 欧洲一区二区三区四区在线观看| 色色丁香| 51国产午夜精品视频| 青青草女人天天干| AV天堂男人的天堂| 国产午夜无码片在线观看影视| 欧美色青| 国产9熟妇视频网站| www.91色综合| 色综合网1| 欧美性爱第一页久久| 在线小说视频一区| 99热精品青草在线| 久热九九| 亚洲精品日韩国产欧美| 91c色| 黄页| 久久久久婷婷精品av电影| 天美av在线观看| 狠狠色婷婷777| 深夜激情无码| 中文字幕一区二区三区高清| 亚洲人妻五月丁香婷婷| A男人的天堂| 欧美色图成人网一区二区 | 欧美爱国产综合、| 国产四虎在线| www五月| 国产情侣自拍在线播放| 色天使亚洲综合在线观看| 久久久久久久国产视频| 国产精品高潮久久AV| 懂色av一区二区三区天美传媒| 亚洲A曰本VA欧美VA视频| 久久成人东京热人妻| 四虎884a| 91综合在线| 日韩欧美中文字| 国产品精品自在在线午夜免费| 国产一区二区三三视频| 欧美视频一区二区三区| yazhououmeizongya| 91色综合色| 物尤视频一区二区| 97久久国产亚洲精品超碰热| 国产人妻精品一区二区三区秋霞| 大肉棒导航| 北条麻妃性愛视频| 人人摸人人舔一区二区| 亚洲双插| 久久久久久九| 少妇一区二区三区精选| 色欲蜜臀AV| 日本护士高潮| 999狠狠综合| 天天综合香 ld视频| 欧美日韩国产电影| 伊人午夜福利视频| 99999精品| 爱妃国产亚洲视频中文字幕| 日本性爱欧美性爱| 欧洲成人性爱视频| 97色伦欧美| 后入式在线免费观看60秒| 99精品高潮| 久九九九九九九九热| 日韩免费a级毛片无码a∨| 91在线精品一区二区三区| 岛国艾薇凹凸视频天堂| 国产精品一区二区三区在线密挑| 情色av电影| 超碰视97中文| 又大又大又大又粗爽高潮观看 | 国产福利电影| 97精品综合久久| 99热导航| 9精品久久久久| 99精品欧美一区二区三区桃色| 骚逼高潮久久精品| 亚洲精品1区| 亚洲熟妇一,二,三期| 丁香九月婷婷| a人片中文字幕一区二区| 内射夫妻三片| 天天干天天做| 久久久96精品| 色吧综合网| 蜜臀av网址| 欧美一级A片不卡视频。| 97在线国产精品| 欧美一级A一级a爱片久久| 333kkkk·亚洲com久久| 亚洲丝袜B诱惑| 亚州综合色| 亚洲熟妇极品| 在线看污网站| 欧美日韩丝袜 | 亚洲成人福利电影免费| 日韩精品三级片长长久久| 久操网无码在线| 色臀aV| av天堂5| 午夜毛片亚洲精品片国产久久久| 情色AV电影| 久久久久久久9999| 欧美久久草熟女| 精品人妻中文字幕4399| 国产美女激情| 人妻aa| 免费视频观看60秒| 国产超碰| 91色夜| 熟女日韩| 国产在线视频二区| 亚洲色图欧美另类在线| 激情综合五月婷婷| 久久女人| 无码人妻丰满熟妇奶水区毛片| 国产91精品福利在线| 亚欧洲一区二区视频| 亚洲av无码成人精品国产| 欧洲综合色图| 亚洲色图欧美色图制服诱惑| 亚洲中文字母在线播放| 超碰97综合在线| 日夜干射色啊| 亚洲图片欧美制度| 亚洲成av人片色午夜乱码| 日韩一级二级三级在线不卡观看完整| 人妻激情在线视频| 久久欧美激情| 亚洲和欧美裸体美女双飞视频| 欧美午夜精品久久久久久3D| 岛国毛片在线观看免费| 天天操夜夜操| 欧美日韩中文字幕不卡| 99re这里| 高清不卡国产| 中文字幕一二三区| 99热超碰在线| 国产精品自在自拍视频| 精品国产一区二区三区在线播出| 美女诱惑久久| 呻吟 欧美 日本 中出| 国产第二页| 麻豆福利视频导航| 天天干2019| 东京热亚洲一区二区| 不卡一区二区日本视频| 亚洲麻豆av一区二区| 欧美色交| 91日韩国产欧美亚洲另类精盘州至城都| 亚洲综合伊人| 性欧美| AV丝袜东京热| 2020中文字幕在线| 亚洲AV在线资源| 99精品无码| 99re99| 久草看看看| 欧日韩一二三f区| 国产熟女高潮一区二区三区| 91大香蕉伊人| 美女黄色91| 中国91AV| 五十路三区在线| 好吊色青靑草| 亚洲一区日韩精品中文字幕 | 亚州色综合| 中国人高清www色视频免费| 国产精品久久久久久久久久久久久久久| 欧美色就是色| 天美国产精品| 亚洲强奸乱伦影视网| 日本精品第一视频在'| 亚洲丝袜色图| 草草网站影院白丝内射| 国产精品免费视频人成| 九九色热| 国产精品 午夜福利| av午夜玫瑰| 夜夜嗨TV| 午夜福利无毒不卡| 九月色婷婷| 爆乳免费黄网站| 亚洲91综合| 91综合在线| 久久高清欧美国产| 国内精品不卡无毒99999| 久久精品六区| 国产精品久久久久久照片| 精品一区二区成人动漫| 中文字幕版| 欧美色97| 懂色AV蜜臀无码精品APP| 中文字幕加勒比海高清无码免费视频| 艳尻美人妻| 国产97亚洲| hd成人一区二区在线| 99国产精品人妻人伦| 亚洲性少妇| 美女被啪到深处抽搐视频| 凸凹视频在线观看| 亚洲人妻熟妇三十三区| 欧美天天射| 美女刺激久久国产欧美| 超碰97欧美日韩| 亚洲视频1区| 精品.99999| 在线视频97| 校园春色制服丝袜中文字亚洲| 成人精品欧洲亚洲| 最新中文字幕精品在线| 一区 欧美 日韩 麻豆| 日韩欧美亚洲自拍偷拍| 99热这里是精品| 亚洲综合色图欧美| 久久久一区二区三区四曲免费听| 亚洲影视高清第一页| 欧美疯狂做爰xxxx| 亚洲色天堂九9| 爱射综合| 高清有码一区二区| 久啪| 日韩黄色成人性爱| 狠狠爱夜夜| 欧美亚洲20p| 亚洲一欧洲中文字幕在线| 色老牛| 婷婷在线精品| 久96热在线观看视频| www.男人天堂| 爱媛媛久久国产福利| 麻豆久久一区二区三区| 嗯嗯啊啊啊好舒服| 国产精品黄色三级av| 997色在线| 久久大香蕉手机高清| 日韩欧美午夜视频在线| 阿姨一区二区免费视频-高清正片西瓜视频下载app-T450AV | 国产精品乱人伊人网| 性色AV蜜色av色欲av| 99色骚| 免费观看欧美日韩操逼视频| 欧美呦呦性爱| 婷婷人妻激情| 天美欧美国产| ′ !γ}丶。。久久精品欧美一区二区三区| 日本熟女免费視颖| 啪啪啪综合网| 伊人欧美大香蕉视频| 在线人妻熟女一区二区三区四区五区| 18禁免费视频| 亚洲色交| 另类欧美| 裸模AV女优| 男人天堂久久精品| 亚洲色图亚洲无码强奸乱伦| 日韩成人性日韩成人性爱视频在线免费观看| 99九九久久| 久久久爆乳翘臀一线天伦理视频| ji熟女.com| 欧美精品宗合| 性欧美999| 超碰97亚洲区| 秋霞男人网| 欧美综合97www| 中文字幕在线高清男人的天堂| 国产精品无码久久久久2028| 中文字幕精品一区二| 超碰九7免费| 久久欧美激情| 91性情| 亚州精品人妻一二三区| 国产精品久久久久久9999| 婷婷色网| 欧美熟女丝袜| 久久精品人妻一区二区三区| 伊人精品国产| 亚洲在线观看| 91国产丝袜白虎| 4tube欧美女厕所| 亚洲情色 自拍| 男人的天堂99| 人妻色偷色噜| 国产一区二区三三视频| 日韩国产成人自拍视频| 中文字幕免费看大片| 亚洲天堂区| 青青草伊人久久| 91男人天堂网| 久久久久99精品成人片蜜臀| 91欧美大片| 欧美日产国产在线成人第一区| 97精品熟女少妇一区| 精品一区二区成人动漫| 大香蕉AV丝袜| 中文字幕伊人| 人人操人人色网| 国产精品原创巨作?v网站| 欧美啪啪女女| 天堂日本亚洲欧美| 97国产中文| 亚洲国产奇米影视久久| h在线看免费版在线看| 国产精品网站免费| 欲色啪| 国内精品嫩模A∨私拍小视频| 欧美日韩国产中文精品字幕自在自线| 婷婷久久五月| 麻豆天美制片厂网站视频| 啊啊在线| 91人妻中文| 嗯嗯嗯不要不要免费视频| 偷拍综合亚洲| 一起草三级AV电影在线观看| 熟女突然公开看18禁影片| 欧美少妇内射| 免费a v| 九九热在线精品视频| 亚州高清色综合| 曰韩中文人妻视频| 伊人97超碰| 国产精品日日摸天天碰| 国产高清成人mv在线观看| 欧美三级免费伊人| 天啪| 超碰久久性爱| 高清国产无码av| 欧美 亚洲| 天天日B夜夜干B时时操B| 色情亚洲日本成人| 不卡中文字幕aⅴ在线| 中文字幕在线24| 亚州色图欧美色图| 国产肏逼网站| 成人无码在线视频网站| 国产兽交视频在线播放| 国产 日韩 另类 视频一区爱| 亚洲一区二区三区久久 亚洲一区二区| 女上位精品在线| 97在线视频观看免费| 五月天亚洲网| 精品亚洲成人免费在线| 欧美色66| 日本三级A片网站com| 天天天天天天天天综合| 欧美日韩国产三级黄色| 久久女同性恋一二区| 国产色呦呦| 精品无码少妇| 冬京热男人的天堂| 熟女这里只有精品6| 亚洲人久久久网| 久久 国产精品 一区| 国产999精品久久久| 久久久9品一区二区三区| 精品国产三级av韩国在线| 久久九精品| 亚洲色堂免费视频| 午夜一区二区三区国产| 青草一区二区| 国产精品suv一区| 五月婷婷激情| 国产白嫩漂亮KTV在线| 亚洲精品国产拍免费91在线| 欧美日韩电影一区二区| 日韩精品黄片免费观看| 人人爱人人乐人人操| av天天在线| 天天欧美欧美亚洲网| 久久69精品久久久久久久| 国产suv精品一区| 精品97久久综合| 色婷婷成人| 一区二区三区视频在线观看免费| 特级特黄一级毛片免费| 四虎精品永久在线观看| 亚洲男人天堂2013| 欧美日韩免费专区在线| 色99视频| 国产精品久久成人免费| 密乳无码| 国产探花精品在线| 中文字幕国产| 久久综合国产精品国产| 久久久精品网站| 欧美78P| 亚洲人妻在线精品| 91网站18禁| 上床啊啊啊| 天天摸天天操视频| 夜夜欧美 | 丁香7月婷婷| 96久久久精品| 韩日巨乳美女免费视频在线观看| 91欧美美女日韩国产婷婷| 色呦呦、国产精品| 一区二区三区 丝袜 高跟 美腿| 啊灬啊灬啊灬好深灬快高潮了动漫-国产字幕国产在线观看-B049AV | 日韩精彩视频| 久久黄黄黄| 精品九九九| 日本人妻中文字幕精品| 91丨豆花丨熟女| 熟女突然公开看18禁影片| 综合婷婷| 久久久久13| 啊啊啊好舒服视频在线观看| 麻豆一区二区三区精品| 五十路人妻在线| 日本精品加勒比海一区| 人妻一区二区三区熟女| 国产精品爱欲| 在线视频日韩欧美国产| 婷婷色色五月天| 色999偷自拍拍| 亚州欧美综合| 欧美色宗合| 做爱A级亚欧| 97色冈| asc国产精品| 美女网站91| 日韩亚洲国产视频| 日韩国产品视频中文字| 啊灬啊灬啊灬啊灬高潮奶出了免费视 | 久草精品热视| 肉丝无码中文高清| 天天射天天操天天干天天吃2018 | 91强在线播放| 91性片| 国产又大又硬又长又粗| 九九久久一区二区三区| 欧美少妇高潮视频| 久操网视频| 男女打扑克高清网站| 日韩精品操少妇| 久久午夜色播影院免费高清| 欧美黄片免费在线观看视频| www.婷婷五月天| 黄色一区三区| 日韩簧片免费看| 亚洲色欲一区二区三区| 黑白配性爱AV成| 青娱乐黄色录像| 亚洲欧美日韩免费电影| 91操人视频| 91成人在线| 91性感在线| 五月丁香色色网| 国产欧美日产一区二区三区 - 国产欧美日| 精品无码一区二区三区色欲| 国产又操| 老司机午夜福利视频一区二区| 男女日B国产| 天美麻豆精品视频99| 一本色道综合久久欧美日韩精品| 日韩一区二区三区四区五区| 国产精品在线网站| 福利在线观看一区二区| 韩日精品福利视频一区不卡在线免 | 乱伦1色页| 欧亚不卡| 成人精品一区二区91毛片不卡| 九九九久千久久激情蜜桃在线看 | 一区二区三区激情在线观看| 色网综合网| 97香蕉碰碰人妻国产欧美| 亚洲人精品久久久| 天天做天天爱夜夜爽毛片试看| 3PAV乱伦视频| 97免费免费视频网| 韩国一级做A片免费的| 夜夜爽夜夜摸夜夜操免费视频| 婷婷视频在线免费观看| 深夜国产福利| 精品97精品97| 久久婷婷五月综合| 超碰97人妻免费在线| 欧美一二级| 色婷婷丁香五月| www.亚洲成人一区| 日日骚av| 91在线综合网| 91GD.COM| 男人的天堂午夜av| 青青草大香蕉视频| www.91欧美| 殴美,日韩国产伦精品| 无码免费精品高清| 九九九九国产| 91狠狠狠| 国产熟妇一区二区| 少妇的嫩逼图片| 日韩99神马视频片| 丁香五月激情综合国产| 日韩无码精品综合久久| 色爱亚洲| 蜜桃臀久久| 国产又大又粗又色生活片亚洲国产精品成人久久久综合免费 | 黄色工厂这里只有精品| 日韩 人妻 精品| 五月天婷婷久久| 91c色| 久草加勒比一区在线| 毛片99-全集电影手机免费观看完整-B029AV | 第四色奇米影视777| 中国91AV| 国产日韩美女小穴视频网站不卡| 一本大道综合伊人精品热热| 嗯啊啊啊轻点视频 | 97人人夜夜精品视频| 久久老女人| 国产美女高潮| 综合伊人网12色| 17c嫩草51久久91嫩草| 巨乳特殊服务按摩| 国产sv美女内射| 四虎影视精品| 性色亚洲| 久久精品国产欧美日韩亚洲欧美日韩中文久久国产一区 | 91丝袜在线观看| 97视频一区| 熟女91网站| 久久粉色| 女人天堂av在线播放| 好属操| 少妇久久久久久久久| 91丝袜美女视频| 九九久久玖玖| 超碰日韩人妻| 欧成人精品一区二区三区| 国产欧美一区二区| 久插不卡| 一区二区三区无卡视频在线观看| 神马久久网| 久久一二三四五六七八九区区区 | 九九国产热| 熟妇艹鸡八| 久久综合五月天| 91人妻Pr| 99视频自拍| 18禁免费视频| 91久久久久久久| 国产三级中文字幕粉嫩| 亚洲91射| 国产成人五月天丁香花| 超碰97丝袜| 俺去啦俺来也久久综合| 98久久| 美女91| 欧美97网| 肏逼福利网站| 欧美系列在线一区二区| 人人摸.人人色| 久久人妻视频网| 色眯眯射| 色悠久| 图片区小说区| 搞中出视频在线观看| 超碰99在线| 日韩精品永久在线观看| 久久一留热品黄| 国产精品久久久 | 超碰 另类 欧美| 亚洲丝袜在线观看| 亚洲欧洲综合视频在线| 使劲用力艹少妇视频一区二区| 97无码视频在线播放| 五月丁香婷婷色| 欧美性高潮| 日韩欧美俄罗斯A片| 亚洲系列欧美| 亚洲日韩美国人妻| 欧亚日韩综合精品国产| 国产亚洲精品久久久久小| 天天看人人操屄犊摸阴| 97九色| 超碰97男人| 男女做爰猛烈动高潮A片免费应用| 久久的网站啊啊啊啊啊| 欧美人黑A片无码免视费| 亚洲色欲天天人妻无码系列专区| 久久久久久久9最新免费视频观看| 国产尤物在线三区| 在线可观看的黄色网址| 老司机午夜福利视频一区二区| 日本国产高清色www视频在线| 国产噜噜噜噜噜久久久久久久久| 久久久国产亚洲精品系列| 亚洲宗合网| 亚洲第一在线视频| 超碰色大香蕉| 热天堂一区二区| 亚洲综合另类小说色区亚洲成av人片在www | 午夜后入| 无码人妻丰满热妇又大又粗| 亚洲不卡一| 97超级久久强资源| 99人妻碰碰碰久久久久禁片| 少妇500双飞99| 国产女人操逼视频| 大香蕉淫人| 97精品视频在线播放| 91狠狠综合久久| 波多野结衣被操50分钟免费视频| 欧美图片校园春色| 桃色六月天| 性色av网站| 日韩人妻一区二区| 欧美日韩欧美| 免费网色网站| 成人AV素股で擦久久| 国产亚州高清国产拍精| 国产成人亚洲精品无| 91伊人大香蕉| 桃花色涩综合影院| 亚洲 欧美 制服 另类 自拍| 久久久女人| 色欧洲97| 天天α片| 婷婷丁香五月综合| 国产黄色 A 片免费看| 亚洲一区在线观看欧洲| 97在线公开视频| 日韩中文字幕宗合在线| 啊啊啊好湿久久| 两性色网| 久久国产性爱| 欧美性爱18观看| 久操国产在线| 成人青青草原伊人| 色香综合天天影视综合 | 国产 日韩 欧美 中文 另类,国产 欧美 另类 制服 变态,高清 日韩 欧美 中文,高 | 在线免费观看高清无码视频| 深夜激情| 抽插一区二区视频| 亚洲伊人久久综合97| 久久久久久AV无码免费网站| 最新中文字幕精品在线| yiqicaoav| 搡老女人老91妇女老熟女| 人妻三级在线中文字幕| 丰满人妻一区| 丝袜视频网国产90| 天天综合站| 97亚洲自在精品在线观看| 日本二三四区| 97超碰中文在线| 欧美一级在线观看成人| 色妇综合网| 日韩黄片视频试看| 操高情无码| 在线国产探花| 欧美在线色图| 97精品综合久久网| 欧美日韩97在线| 久久久久久十| 国产高清自拍视频| 超碰在线免费一区二区三区| 97精品网| 久久丁香五月天|