最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一鍵部署SpringCloud 微服務(wù)的詳細(xì)流程

 更新時(shí)間:2025年10月09日 10:40:55   作者:隔壁老王的代碼  
本文詳解通過(guò)Jenkins、K8s、Docker實(shí)現(xiàn)SpringCloud微服務(wù)自動(dòng)化部署流程,涵蓋SSH密鑰配置、代碼拉取構(gòu)建、鏡像打包推送及K8s資源發(fā)布,感興趣的朋友跟隨小編一起看看吧

一鍵部署springcloud微服務(wù),需要用到 Jenkins K8S Docker等工具,自行安裝即可。

本文使用jenkins部署,流程如下圖

  • 開(kāi)發(fā)者將代碼push到git
  • 運(yùn)維人員通過(guò)jenkins部署,自動(dòng)到git上pull代碼
  • 通過(guò)maven構(gòu)建代碼
  • 將maven構(gòu)建后的jar打包成docker鏡像 并 push docker鏡像到docker registry
  • 通過(guò)k8s發(fā)起 發(fā)布/更新 服務(wù) 操作

其中 2~5步驟都會(huì)在jenkins中進(jìn)行操作

1、開(kāi)發(fā)者將代碼PUSH到Git

這一步本文不做詳細(xì)描述

2、通過(guò)Jenkins部署,自動(dòng)到Git上PULL代碼

這里需要用到Jenkins 的 pipeline插件

2.1、 配置SSH-KEY

因?yàn)閖enkins需要pull git上的代碼,正常來(lái)說(shuō),代碼都是私有的,git clone操作的時(shí)候會(huì)需要密碼,就不能完成自動(dòng)化操作了。這里使用SSH-KEY 的方式,讓git clone操作無(wú)需密碼就能完成克隆

2.1.1、生成/添加SSH公鑰

在jenkins所在環(huán)境里執(zhí)行

ssh-keygen -t ed25519 -C "xxxxx@xxxxx.com"  

注意:這里的 xxxxx@xxxxx.com 只是生成的 sshkey 的名稱(chēng),并不約束或要求具體命名為某個(gè)郵箱

現(xiàn)網(wǎng)的大部分教程均講解的使用郵箱生成,其一開(kāi)始的初衷?xún)H僅是為了便于辨識(shí)所以使用了郵箱

按照提示完成三次回車(chē),即可生成 ssh key。通過(guò)查看 ~/.ssh/id_ed25519.pub 文件內(nèi)容,獲取到你的 public key

得到公鑰 public key 內(nèi)容

cat ~/.ssh/id_ed25519.pub 

2.1.2、將公鑰配置到git平臺(tái)

git平臺(tái)可以是github,gitee,也可以是自己搭建的gitlab等

我這里使用gitee

通過(guò)倉(cāng)庫(kù)主頁(yè) 「管理」->「部署公鑰管理」->「添加部署公鑰」 ,添加生成的 public key 添加到倉(cāng)庫(kù)中。

添加成功后,到j(luò)enkins所在環(huán)境運(yùn)行

ssh -T git@gitee.com 

首次使用需要確認(rèn)并添加主機(jī)到本機(jī)SSH可信列表。若返回 Hi XXX! You’ve successfully authenticated, but Gitee.com does not provide shell access. 內(nèi)容,則證明添加成功

2.1.3、測(cè)試

復(fù)制你項(xiàng)目的SSH鏈接

在jenkins所在環(huán)境

執(zhí)行git clone git@gitee.com:xxxx.git

2.2、配置Jenkins的pipeline 自動(dòng)clone代碼

2.2.1、Jenkins創(chuàng)建任務(wù)

新建任務(wù)

選擇流水線(xiàn) 確定

這里勾選參數(shù)化構(gòu)建,選擇字符參數(shù),用于輸入構(gòu)建代碼的版本

默認(rèn)值填master,根據(jù)自身項(xiàng)目實(shí)際填寫(xiě)

拉到最下面的流水線(xiàn),寫(xiě)pipeline腳本,如果不知道怎么寫(xiě),可以點(diǎn)擊流水線(xiàn)語(yǔ)法進(jìn)行參考

這是我的腳本, REPOSITORY 填寫(xiě)項(xiàng)目的ssh地址,REPOSITORY_VERSION是剛剛配置的構(gòu)建參數(shù)

pipeline {  
    agent any  
    environment {  
        REPOSITORY="git@gitee.com:xxxxxx/cloud-demo.git"
    }  
    stages {  
        stage('拉代碼') {  
            steps {  
echo"start fetch code from git:${REPOSITORY}"
                deleteDir()  
                git branch: "${REPOSITORY_VERSION}", url: "${REPOSITORY}"
            }  
        }  
    }  
}

保存

2.2.2、測(cè)試?yán)a流程

返回Jenkins 首頁(yè),選擇剛剛創(chuàng)建的項(xiàng)目

點(diǎn)擊右邊的運(yùn)行按鈕

輸入代碼分支版本

點(diǎn)擊開(kāi)始構(gòu)建

看到這里就是已經(jīng)構(gòu)建成功了

根據(jù)日志提示的目錄,可以看到目錄下已經(jīng)有代碼了

3、通過(guò)maven構(gòu)建代碼

3.1、maven插件安裝

因?yàn)檫@里使用到了maven,jenkins需要先安裝maven工具

3.2、maven構(gòu)建項(xiàng)目

補(bǔ)充pipeline腳本

pipeline {  
    agent any  
    environment {  
        REPOSITORY="git@gitee.com:xxxxxx/cloud-demo.git"
        MODULE="cloud-demo-m-test-dubbo-service"
    }  
    stages {  
        stage('拉代碼') {  
            steps {  
echo"start fetch code from git:${REPOSITORY}"
                deleteDir()  
                git branch: "${REPOSITORY_VERSION}", url: "${REPOSITORY}"
            }  
        }  
        stage('編譯代碼') {  
            steps {  
echo"start compile"
                sh "cd cloud-demo-project && mvn -U clean install"
echo"compile project ................................"
                sh "cd cloud-demo-dependencies && mvn -U clean install"
echo"compile dependencies ................................"
                sh "cd cloud-demo-common && mvn -U clean install"
echo"compile common ................................"
                sh "cd cloud-demo-m-test && mvn -U -am clean install"
echo"compile m-test ................................"
                sh "cd cloud-demo-m-test/cloud-demo-m-test-common && mvn -U -am clean install"
echo"compile m-test-dubbo-api ................................"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-api && mvn -U -am clean install"
echo"compile m-test-dubbo-service ................................"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service && mvn -U -am clean package"
            }  
        }  
    }  
}  

這里補(bǔ)充了stage('編譯代碼') {} 部分,用于maven編譯。具體編譯腳本需要根據(jù)自己項(xiàng)目實(shí)際,這個(gè)是我項(xiàng)目的編譯必須步驟。

3.3、測(cè)試?yán)a流程+構(gòu)建項(xiàng)目過(guò)程

重復(fù)2.2.2步驟,查看運(yùn)行結(jié)果

構(gòu)建成功

4、將maven構(gòu)建后的jar打包成docker鏡像 并 push docker鏡像到docker registry

在jenkins環(huán)境下

創(chuàng)建目錄用于存放腳本文件

mkdir /usr/local/project/.env/cloud-demo-m-test-dubbo-service/ -p  

這個(gè)目錄下存放4個(gè)文件

  • build.sh
  • Dockerfile
  • application.properties
  • bootstrap.properties

application.properties 和 bootstrap.properties 是springcloud的配置文件,內(nèi)容根據(jù)自己項(xiàng)目情況

buils.sh 文件內(nèi)容

#!/usr/bin/env bash  
REPOSITORY_VERSION=$1
GIT_REVISION=`git log -1 --pretty=format:"%h"`  
TIME=`date "+%Y.%m.%d.%H.%M"`  
IMAGE_NAME=192.168.31.100:5000/cloud-demo/cloud-demo-m-test-dubbo-service  
IMAGE_TAG=${REPOSITORY_VERSION}-${GIT_REVISION}-${TIME}
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} .  
docker push ${IMAGE_NAME}:${IMAGE_TAG}
echo"${IMAGE_NAME}:${IMAGE_TAG}" > IMAGE  
## 內(nèi)容說(shuō)明  
REPOSITORY_VERSION 是需要傳入的參數(shù),傳項(xiàng)目git分支名,用于打標(biāo)簽使用  
GIT_REVISION 是獲取當(dāng)前git的提交版本 如 c9c8525,線(xiàn)上問(wèn)題可以根據(jù)這個(gè)版本查找具體代碼問(wèn)題  
TIME 年.月.日.時(shí).分  記錄打包時(shí)間,也用于打標(biāo)簽使用  
IMAGE_NAME 鏡像名,這里前綴包含了192.168.31.100:5000 是因?yàn)槲掖虬髸?huì)push到192.168.31.100:5000,其他服務(wù)器可以到這里來(lái)pull鏡像  
docker build -t ${IMAGE_NAME}:${IMAGE_TAG} . 構(gòu)建鏡像  
docker push ${IMAGE_NAME}:${IMAGE_TAG}  推送鏡像  
echo"${IMAGE_NAME}:${IMAGE_TAG}" > IMAGE  把鏡像名:鏡像標(biāo)簽 輸出到IMAGE文件里,方便后續(xù)步驟獲取  

Dockerfile 文件內(nèi)容

FROM openjdk:8u342-jdk  
MAINTAINER yanger yanger@qq.com  
COPY target/cloud-demo-m-test-dubbo-service-1.0-SNAPSHOT.jar /cloud-demo-m-test-dubbo-service.jar  
COPY application.properties /application.properties  
COPY bootstrap.properties /bootstrap.properties  
ENTRYPOINT ["java", "-jar", "/cloud-demo-m-test-dubbo-service.jar"]  
## 內(nèi)容說(shuō)明  
FROM openjdk:8u342-jdk 使用openjdk:8u342-jdk 作為基礎(chǔ)鏡像  
COPY 文件到鏡像  
ENTRYPOINT ["java", "-jar", "/cloud-demo-m-test-dubbo-service.jar"] 啟動(dòng)時(shí)運(yùn)行 java -jar /cloud-demo-m-test-dubbo-service.jar

這里用到了docker registry 如果還沒(méi)有registry 請(qǐng)先啟動(dòng),可以用docker的方式啟動(dòng)

docker run -d -p 5000:5000 --name registry registry  

build.sh文件需要可執(zhí)行權(quán)限

chmod 755 build.sh  

補(bǔ)充pipeline腳本

pipeline {  
    agent any  
    environment {  
        REPOSITORY="git@gitee.com:xxxxxx/cloud-demo.git"
        SCRIPT_PATH="/usr/local/project/.env/cloud-demo-m-test-dubbo-service/"
    }  
    stages {  
        stage('拉代碼') {  
            steps {  
echo"start fetch code from git:${REPOSITORY}"
                deleteDir()  
                git branch: "${REPOSITORY_VERSION}", url: "${REPOSITORY}"
            }  
        }  
        stage('編譯代碼') {  
            steps {  
echo"start compile"
                sh "cd cloud-demo-project && /usr/local/maven/bin/mvn -U clean install"
echo"compile project ................................"
                sh "cd cloud-demo-dependencies && /usr/local/maven/bin/mvn -U clean install"
echo"compile dependencies ................................"
                sh "cd cloud-demo-common && /usr/local/maven/bin/mvn -U clean install"
echo"compile common ................................"
                sh "cd cloud-demo-m-test && /usr/local/maven/bin/mvn -U -am clean install"
echo"compile m-test ................................"
                sh "cd cloud-demo-m-test/cloud-demo-m-test-common && /usr/local/maven/bin/mvn -U -am clean install"
echo"compile m-test-dubbo-api ................................"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-api && /usr/local/maven/bin/mvn -U -am clean install"
echo"compile m-test-dubbo-service ................................"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service && /usr/local/maven/bin/mvn -U -am clean package"
            }  
        }  
        stage('構(gòu)建鏡像') {  
            steps {  
echo"start build image"
                sh "cp ${SCRIPT_PATH}/build.sh cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cp ${SCRIPT_PATH}/Dockerfile cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cp ${SCRIPT_PATH}/application.properties cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cp ${SCRIPT_PATH}/bootstrap.properties cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/ && ./build.sh ${REPOSITORY_VERSION}"
            }  
        }  
    }  
}

補(bǔ)充了stage(‘構(gòu)建鏡像’){} 內(nèi)容和 environment 部分加了個(gè)參數(shù) SCRIPT_PATH

SCRIPT_PATH參數(shù)是上面創(chuàng)建的文件夾路徑

stage(‘構(gòu)建鏡像’){}這一步是復(fù)制相應(yīng)文件到項(xiàng)目目錄下,并且執(zhí)行build.sh腳本

測(cè)試

可以看到鏡像已經(jīng)打包好,并且已經(jīng)push到registry了

瀏覽器訪(fǎng)問(wèn)http://192.168.31.100:5000/v2/cloud-demo/cloud-demo-m-test-dubbo-service/tags/list

可以看到registry有cloud-demo/cloud-demo-m-test-dubbo-service:master-7012e1d-2023.05.01.10.16這個(gè)鏡像

5、通過(guò)k8s發(fā)起 發(fā)布/更新 服務(wù) 操作

5.1、配置構(gòu)建K8S資源的描述文件

在 /usr/local/project/.env/cloud-demo-m-test-dubbo-service/ 目錄新增文件 cloud-demo-m-test-dubbo-service.yaml

文件內(nèi)容

apiVersion: apps/v1  
kind: Deployment  
metadata:  
  creationTimestamp: null  
  labels:  
    app: cloud-demo-m-test-dubbo-service  
  name: cloud-demo-m-test-dubbo-service  
spec:  
  replicas: 1
  selector:  
    matchLabels:  
      app: cloud-demo-m-test-dubbo-service  
  strategy: {}  
  template:  
    metadata:  
      creationTimestamp: null  
      labels:  
        app: cloud-demo-m-test-dubbo-service  
    spec:  
      containers:  
      - image: IMAGE_AND_TAG  
        name: cloud-demo-m-test-dubbo-service  
        resources: {}  
        volumeMounts:   
        - name: log-path  
          mountPath: /logs  
      volumes:   
      - name: log-path  
        hostPath:   
          path: /root/k8s/cloud-demo-m-test-dubbo-service/logs  
status: {}  
---  
apiVersion: v1  
kind: Service  
metadata:  
  creationTimestamp: null  
  labels:  
    app: cloud-demo-m-test-dubbo-service  
  name: cloud-demo-m-test-dubbo-service  
spec:  
  ports:  
  - port: 20881
    protocol: TCP  
    targetPort: 20881
  selector:  
    app: cloud-demo-m-test-dubbo-service  
type: NodePort  
status:  
  loadBalancer: {}

這個(gè)文件是構(gòu)建K8S資源的描述文件,創(chuàng)建deployment 和service,暴露端口20881,掛載/logs目錄到主機(jī)

其中 IMAGE_AND_TAG 是需要替換為相應(yīng) 容器名:容器標(biāo)簽 的

5.2、完善jenkins步驟

pipeline {  
    agent any  
    environment {  
        REPOSITORY="git@gitee.com:xxxxxx/cloud-demo.git"
        SCRIPT_PATH="/usr/local/project/.env/cloud-demo-m-test-dubbo-service"
        IMAGE=""
    }  
    stages {  
        stage('拉代碼') {  
            steps {  
echo"start fetch code from git:${REPOSITORY}"
                deleteDir()  
                git branch: "${REPOSITORY_VERSION}", url: "${REPOSITORY}"
            }  
        }  
        stage('編譯代碼') {  
            steps {  
echo"start compile"
                sh "cd cloud-demo-project && /usr/local/maven/bin/mvn -U clean install"
echo"compile project ................................"
                sh "cd cloud-demo-dependencies && /usr/local/maven/bin/mvn -U clean install"
echo"compile dependencies ................................"
                sh "cd cloud-demo-common && /usr/local/maven/bin/mvn -U clean install"
echo"compile common ................................"
                sh "cd cloud-demo-m-test && /usr/local/maven/bin/mvn -U -am clean install"
echo"compile m-test ................................"
                sh "cd cloud-demo-m-test/cloud-demo-m-test-common && /usr/local/maven/bin/mvn -U -am clean install"
echo"compile m-test-dubbo-api ................................"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-api && /usr/local/maven/bin/mvn -U -am clean install"
echo"compile m-test-dubbo-service ................................"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service && /usr/local/maven/bin/mvn -U -am clean package"
            }  
        }  
        stage('構(gòu)建鏡像') {  
            steps {  
echo"start build image"
                sh "cp ${SCRIPT_PATH}/build.sh cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cp ${SCRIPT_PATH}/Dockerfile cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cp ${SCRIPT_PATH}/application.properties cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cp ${SCRIPT_PATH}/bootstrap.properties cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "cd cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/ && ./build.sh ${REPOSITORY_VERSION}"
            }  
        }  
        stage('發(fā)布') {  
            steps {  
echo"start deploy"
                script {  
                    IMAGE = readFile "cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/IMAGE"
                    IMAGE = IMAGE.trim()  
if (IMAGE == "") {  
                        throw new Exception("獲取鏡像名文件失敗,請(qǐng)重試")  
                    }  
                }  
echo"IMAGE: -- ${IMAGE}"
                sh "cp ${SCRIPT_PATH}/cloud-demo-m-test-dubbo-service.yaml cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/"
                sh "sed -i \"s#IMAGE_AND_TAG#${IMAGE}#g\" cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/cloud-demo-m-test-dubbo-service.yaml"
                sh "kubectl apply -f cloud-demo-m-test/dubbo/cloud-demo-m-test-dubbo-service/cloud-demo-m-test-dubbo-service.yaml"
            }  
        }  
    }  
}

添加了 stage('發(fā)布') {} 部分

  • 通過(guò)讀取IMAGE文件,獲取鏡像名:鏡像標(biāo)簽
  • 如果獲取不到鏡像名:鏡像標(biāo)簽,拋出異常
  • cloud-demo-m-test-dubbo-service.yaml文件復(fù)制到工作目錄
  • 用鏡像名:鏡像標(biāo)簽 替換掉 IMAGE_AND_TAG
  • 使用kubectl命令發(fā)布/更新服務(wù)

5.3、測(cè)試

在jenkins上構(gòu)建項(xiàng)目

在K8S master服務(wù)器上,執(zhí)行

kubectl get all

搞定

到此這篇關(guān)于一鍵部署 SpringCloud 微服務(wù)的文章就介紹到這了,更多相關(guān)SpringCloud 微服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • spring中的BeanFactory與FactoryBean的講解

    spring中的BeanFactory與FactoryBean的講解

    今天小編就為大家分享一篇關(guān)于spring中的BeanFactory與FactoryBean的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-01-01
  • POI導(dǎo)出Excel報(bào)錯(cuò)No such file or directory的解決方法

    POI導(dǎo)出Excel報(bào)錯(cuò)No such file or directory的解決方法

    這篇文章主要為大家詳細(xì)介紹了POI導(dǎo)出Excel報(bào)錯(cuò)No such file or directory的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • 基于SpringCloudAlibaba+Skywalking的全鏈路監(jiān)控設(shè)計(jì)方案

    基于SpringCloudAlibaba+Skywalking的全鏈路監(jiān)控設(shè)計(jì)方案

    這篇文章主要介紹了基于SpringCloudAlibaba+Skywalking的全鏈路監(jiān)控設(shè)計(jì)方案,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2024-01-01
  • RecyclerChart的KLine的繪制

    RecyclerChart的KLine的繪制

    這篇文章主要為大家介紹了RecyclerChart的KLine的繪制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • Springboot視圖解析器ViewResolver使用實(shí)例

    Springboot視圖解析器ViewResolver使用實(shí)例

    這篇文章主要介紹了Springboot視圖解析器ViewResolver使用實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • springboot集成activemq的實(shí)例代碼

    springboot集成activemq的實(shí)例代碼

    本篇文章主要介紹了springboot集成activemq的實(shí)例代碼,詳細(xì)的介紹了ActiveMQ和Spring-Boot 集成 ActiveMQ,有興趣的可以了解下。
    2017-05-05
  • Java觀(guān)察者設(shè)計(jì)模式(Observable和Observer)

    Java觀(guān)察者設(shè)計(jì)模式(Observable和Observer)

    這篇文章主要介紹了 Java觀(guān)察者設(shè)計(jì)模式(Observable和Observer)的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • SpringBoot注解@CrossOrigin使用詳解

    SpringBoot注解@CrossOrigin使用詳解

    這篇文章主要介紹了SpringBoot注解@CrossOrigin使用詳解,@CrossOrigin是用來(lái)處理跨域請(qǐng)求的注解
    跨域,指的是瀏覽器不能執(zhí)行其他網(wǎng)站的腳本,它是由瀏覽器的同源策略造成的,是瀏覽器對(duì)JavaScript施加的安全限制,需要的朋友可以參考下
    2023-12-12
  • SpringBoot綠葉顯示yml和端口問(wèn)題及解決方法

    SpringBoot綠葉顯示yml和端口問(wèn)題及解決方法

    今天是解決報(bào)錯(cuò)的一天,首先在操作Springboot中的時(shí)候,有些朋友的yml顯示的不是綠葉的圖標(biāo),或者是配置了之后不生效的問(wèn)題,今天就給大家分享SpringBoot綠葉顯示yml和端口問(wèn)題,感興趣的朋友一起看看吧
    2023-01-01
  • Mybatis傳list參數(shù)調(diào)用oracle存儲(chǔ)過(guò)程的解決方法

    Mybatis傳list參數(shù)調(diào)用oracle存儲(chǔ)過(guò)程的解決方法

    怎么利用MyBatis傳List類(lèi)型參數(shù)到數(shù)據(jù)庫(kù)存儲(chǔ)過(guò)程中實(shí)現(xiàn)批量插入數(shù)據(jù)?接下來(lái)通過(guò)本文給大家介紹Mybatis傳list參數(shù)調(diào)用oracle存儲(chǔ)過(guò)程,需要的朋友可以參考下
    2017-03-03

最新評(píng)論

湛江市| 图木舒克市| 合水县| 鄢陵县| 章丘市| 突泉县| 洱源县| 海口市| 榆社县| 黄骅市| 石嘴山市| 荆门市| 乌鲁木齐县| 临夏县| 伊金霍洛旗| 木兰县| 白朗县| 天柱县| 威远县| 石屏县| 岳西县| 呼伦贝尔市| 大宁县| 定远县| 汾西县| 通州区| 龙海市| 桐柏县| 衢州市| 辛集市| 开江县| 交口县| 北流市| 巴林左旗| 东城区| 新沂市| 西昌市| 宜川县| 湘潭县| 卫辉市| 长岭县|