亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Springboot手動連接庫并獲取指定表結(jié)構(gòu)的示例代碼

 更新時間:2023年07月14日 09:50:12   作者:bug菌1  
這篇文章主要介紹了Springboot手動連接庫并獲取指定表結(jié)構(gòu)的示例代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

一、前言??

        通過,在使用springboot框架之后,就很少涉及到手動連接數(shù)據(jù)庫的方式了,但bug菌有遇到這么一個需求場景,給到你的是無上限的數(shù)據(jù)庫連接信息,要求你能按連接信息指定獲取表數(shù)據(jù),突然我就一愣,我問了問,能給我具體的那些數(shù)據(jù)庫嗎?由于是對接第三方,不確定,所以只能給到你生成好的連接信息,你只能依據(jù)它的連接信息自動連接并解析。

        很完美,這不就得回到以前玩springmvc的日子么,通過連接信息手動連接數(shù)據(jù)并獲取表結(jié)構(gòu)字段,且返回該表的數(shù)據(jù)。

        接下來,廢話不多說,我就給大家演示一下,具體如何實現(xiàn)?

二、正文??

接下來我還是以接口的請求方式,給大家簡單演示一下,具體場景,你們自己依據(jù)情況而定,我就給大家展示下我手動獲取本地庫指定表的表結(jié)構(gòu)字段吧。

定義一個Controller接口

    /**
     * 獲取指定表的字段集合
     */
    @PostMapping("/get-db-columns")
    @ApiOperation(value = "獲取指定表的字段集合",notes = "獲取指定表的字段集合")
    public ResultResponse<List<String>> getDbColumns(@RequestBody FindDbColumnModel model){
        return new ResultResponse<>(dbService.getDbColumns(model));
    }

如下是上接口所涉及的入?yún)Ⅲw:

package com.example.demo.model;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
/**
 * @author luoYong
 * @version 1.0
 * @date 2022/8/30 16:02
 */
@Data
@ApiModel(value = "獲取指定表的字段集合", description = "獲取指定表的字段集合")
public class FindDbColumnModel {
    @ApiModelProperty(value = "數(shù)據(jù)庫url")
    private String dbUrl;
    @ApiModelProperty(value = "數(shù)據(jù)庫連接用戶名")
    private String userName;
    @ApiModelProperty(value = "數(shù)據(jù)庫連接密碼")
    private String passWord;
    @ApiModelProperty(value = "數(shù)據(jù)庫驅(qū)動")
    private String driverClass;
    @ApiModelProperty(value = "指定查詢表名")
    private String tableName;
}

定義一個獲取表結(jié)構(gòu)的接口

    /**
     * 獲取指定表的字段集合
     */
    List<String> getDbColumns(FindDbColumnModel model);

實現(xiàn)獲取表結(jié)構(gòu)的接口

    /**     * 獲取指定表的字段集合     */    &#64;Override    public List<String> getDbColumns(FindDbColumnModel model) {        //與數(shù)據(jù)庫取的連接        Connection conn &#61; this.getConn(model.getDbUrl(), model.getUserName(), model.getPassWord(), model.getDriverClass());        //拼接分頁sql(以mysql為例)        String sql &#61; &#34;select * from &#34; &#43; model.getTableName();        //申明PreparedStatement        PreparedStatement pst &#61; null;        try {            //執(zhí)行SQL語句            pst &#61; conn.prepareStatement(sql);            ResultSet rs &#61; pst.executeQuery(sql);            ResultSetMetaData metaData &#61; rs.getMetaData();            //定義一個存放所有列名的集合            List<String> columnArr &#61; new ArrayList<>();            //獲取表字段名            for (int i &#61; 1; i <&#61; metaData.getColumnCount(); i&#43;&#43;) {                //循環(huán)獲取&#xff0c;再儲存到集合中。                String columnName &#61; metaData.getColumnName(i);                columnArr.add(columnName);            }            return columnArr;        } catch (SQLException e) {            e.printStackTrace();        }        return new ArrayList<>();    }    /**
     * 獲取指定表的字段集合
     */
    @Override
    public List<String> getDbColumns(FindDbColumnModel model) {
        //與數(shù)據(jù)庫取的連接
        Connection conn = this.getConn(model.getDbUrl(), model.getUserName(), model.getPassWord(), model.getDriverClass());
        //拼接分頁sql(以mysql為例)
        String sql = "select * from " + model.getTableName();
        //申明PreparedStatement
        PreparedStatement pst = null;
        try {
            //執(zhí)行SQL語句
            pst = conn.prepareStatement(sql);
            ResultSet rs = pst.executeQuery(sql);
            ResultSetMetaData metaData = rs.getMetaData();
            //定義一個存放所有列名的集合
            List<String> columnArr = new ArrayList<>();
            //獲取表字段名
            for (int i = 1; i <= metaData.getColumnCount(); i++) {
                //循環(huán)獲取,再儲存到集合中。
                String columnName = metaData.getColumnName(i);
                columnArr.add(columnName);
            }
            return columnArr;
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return new ArrayList<>();
    }

如下是手動連接庫獲取Connection對象的封裝方法。

    /**
     * 手動連接數(shù)據(jù)庫
     *
     * @param url
     * @param userName
     * @param passWord
     * @param driverClass
     */
    public Connection getConn(String url, String userName, String passWord, String driverClass) {
        //聲明數(shù)據(jù)庫連接對象
        Connection conn = null;
        try {
            //加載驅(qū)動
            Class.forName(driverClass);
            //初始化數(shù)據(jù)庫連接,獲取連接對象
            conn = DriverManager.getConnection(url, userName, passWord);
        } catch (Exception e) {
            e.printStackTrace();
            System.out.println("獲得數(shù)據(jù)庫連接出錯");
        }
        return conn;
    }

接口測試

         接下來既然我們已經(jīng)實現(xiàn)了接口,那我們就來進行測試,還是老樣子,直接通過在線接口文檔swagger進行測試,集成swagger文檔我前期文章已經(jīng)講過了,這個你們自己去看。

        參數(shù)體給與正確的,我就以本地庫為例。

 具體請看如下截圖,很顯然,是正常獲取到了該【grade】表的表結(jié)構(gòu)信息。

附上請求樣例:

{
	"dbUrl": "jdbc:mysql://127.0.0.1:3306/springboot_db?serverTimezone=GMT%2B8",
	"userName": "root",
	"passWord": "123456",
	"driverClass": "com.mysql.cj.jdbc.Driver",
	"tableName": "grade"
}

到此這篇關(guān)于Springboot如何手動連接庫并獲取指定表結(jié)構(gòu)的文章就介紹到這了,更多相關(guān)Springboot指定表結(jié)構(gòu)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 使用JSONObject.toJSONString 過濾掉值為空的key

    使用JSONObject.toJSONString 過濾掉值為空的key

    這篇文章主要介紹了使用JSONObject.toJSONString 過濾掉值為空的key,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • 微服務(wù)架構(gòu)設(shè)計RocketMQ進階事務(wù)消息原理詳解

    微服務(wù)架構(gòu)設(shè)計RocketMQ進階事務(wù)消息原理詳解

    這篇文章主要介紹了為大家介紹了微服務(wù)架構(gòu)中RocketMQ進階層面事務(wù)消息的原理詳解,有需要的朋友可以借鑒參考下希望能夠有所幫助
    2021-10-10
  • maven子模塊相互依賴打包時報錯找不到類的解決方案

    maven子模塊相互依賴打包時報錯找不到類的解決方案

    本文主要介紹了maven子模塊相互依賴打包時報錯找不到類的解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-06-06
  • Java強制保留兩位小數(shù)的四種方法案例詳解

    Java強制保留兩位小數(shù)的四種方法案例詳解

    這篇文章主要介紹了Java強制保留兩位小數(shù)的四種方法案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • 解決J2EE-session在瀏覽器關(guān)閉后失效問題

    解決J2EE-session在瀏覽器關(guān)閉后失效問題

    最近做項目使用的是Spring+SpringMVC+Mybatis框架,maven管理目錄的javaweb端系統(tǒng),對于session的一些問題,在此小編給大家分享到腳本之家平臺,需要的朋友參考下吧
    2018-01-01
  • Java向上向下轉(zhuǎn)型詳解

    Java向上向下轉(zhuǎn)型詳解

    這篇文章主要為大家詳細介紹了Java向上向下轉(zhuǎn)型,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-09-09
  • Java中forward轉(zhuǎn)發(fā)與redirect重定向的區(qū)別

    Java中forward轉(zhuǎn)發(fā)與redirect重定向的區(qū)別

    轉(zhuǎn)發(fā)和重定向都是常用的頁面跳轉(zhuǎn)方式,但在實現(xiàn)上有一些區(qū)別,本文主要介紹了Java中forward轉(zhuǎn)發(fā)與redirect重定向的區(qū)別,具有一定的參考價值,感興趣的可以了解一下
    2023-11-11
  • mybatis打印的sql日志不寫入到log文件的問題及解決

    mybatis打印的sql日志不寫入到log文件的問題及解決

    這篇文章主要介紹了mybatis打印的sql日志不寫入到log文件的問題及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • SpringBoot+OCR?實現(xiàn)圖片文字識別

    SpringBoot+OCR?實現(xiàn)圖片文字識別

    本文主要介紹了SpringBoot+OCR 實現(xiàn)圖片文字識別,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-12-12
  • 使用SpringBoot Actuator監(jiān)控應(yīng)用示例

    使用SpringBoot Actuator監(jiān)控應(yīng)用示例

    Actuator是Spring Boot提供的對應(yīng)用系統(tǒng)的自省和監(jiān)控的集成功能,可以對應(yīng)用系統(tǒng)進行配置查看、相關(guān)功能統(tǒng)計等。這篇文章主要介紹了使用SpringBoot Actuator監(jiān)控應(yīng),有興趣的可以了解一下
    2018-05-05

最新評論