基于SSM的数据库表字段查询应用

摘要:
一、简介根据配置的数据源,可以查询该数据源下所有的数据库、表、以及字段说明。
一、简介

根据配置的数据源,可以查询该数据源下所有的数据库、表、以及字段说明。

二、前端代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <meta charset="UTF-8">
    <title>表结构</title>
    <link href="http://t.zoukankan.com/css/table.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div align="center">

    <div>
        请选择数据库:
        <select id="database">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="opel">Opel</option>
            <option value="audi">Audi</option>
        </select>

        请选择表:
        <select id="table">
            <option value="volvo">Volvo</option>
            <option value="saab">Saab</option>
            <option value="opel">Opel</option>
            <option value="audi">Audi</option>
        </select>
        <button type="button" id="qryBtn">查询</button>

    </div>
</div>
<div>
    <table   id="tblId">
        <thead>
        <tr id="tblHeadId">
            <th>字段编码</th>
            <th>字段名称</th>
            <th>字段类型</th>
            <th>允许为空</th>
            <th>索引类型</th>
            <th>编码</th>
            <th>注释</th>
        </tr>
        </thead>
        <tbody id="tblBodyId">

        </tbody>


    </table>
</div>
</body>
<!-- 引入本地文件 -->
<script src="http://t.zoukankan.com/jquery/jquery-3.5.1.js" type="text/javascript"></script>
<script type="text/javascript">
    /**
     * jquery的就绪事件
     */
    $(document).ready(function () {
        init();
    });

    $("#qryBtn").click(function () {
        var databaseName=$("#database").val();
        var tableName=$("#table").val();
        var param = {
            "databaseName": databaseName,
            "tableName":tableName
        };
        $.ajax({
            type: "post",
            url: "springmvc/columns",
            dataType: "json",
            contentType: "application/json;charset=UTF-8",
            data: JSON.stringify(param),
            success: function (data) {
                var tableObj = $('#tblBodyId');
                tableObj.html("");
                for (var i = 0; i < data.length; i++) {
                    var item = data[i];
                    var columnStr = '<tr> ' +
                        '<td >' + item.fieldNo + '</td>' +
                        '<td >' + item.fieldName + '</td>' +
                        '<td >' + item.fieldType + '</td>' +
                        '<td >' + item.isEmpty + '</td>' +
                        '<td >' + item.indexType + '</td>' +
                        '<td >' + item.encode + '</td>' +
                        '<td >' + item.comments + '</td>' +
                        '</tr>';
                    tableObj.append(columnStr)
                }
            },
            error: function (errordata) {
                console.log("Error: " + errordata);
            }
        });
    });

    $("#database").change(function (event) {
        var databaseName = $("#database").val();
        queryTables(databaseName);
    });

    /**
     * 初始化所有的库
     */
    function init() {
        var databaseSelectObj = $("#database");
        databaseSelectObj.html("");
        $.ajax({
            type: "GET",
            url: "springmvc/databases",
            dataType: "json",
            success: function (data) {
                if (data.length == 0) {
                    return;
                }
                var databaseObj = $('#database');
                databaseObj.html("");
                var defaultDatabase = data[0];
                for (var i = 0; i < data.length; i++) {
                    var optionObj = ' <option value=' + data[i] + '>' + data[i] + '</option>';
                    databaseObj.append(optionObj)
                }
                queryTables(defaultDatabase);

            },
            error: function (errordata) {
                console.log("Error: " + errordata);
            }
        });
    }

    /**
     * 数据库名称查询所有的表
     * @param databaseName
     */
    function queryTables(databaseName) {
        var tableSelectObj = $("#table");
        tableSelectObj.html("");
        var param = {"databaseName": databaseName};
        $.ajax({
            type: "post",
            url: "springmvc/tables",
            dataType: "json",
            contentType: "application/json;charset=UTF-8",
            data: JSON.stringify(param),
            success: function (data) {
                if (data.length == 0) {
                    return;
                }
                var tableObj = $('#table');
                tableObj.html("");
                for (var i = 0; i < data.length; i++) {
                    var optionObj = ' <option value=' + data[i] + '>' + data[i] + '</option>';
                    tableObj.append(optionObj)
                }

            },
            error: function (errordata) {
                console.log("Error: " + errordata);
            }
        });
    }

</script>
</html>

css代码

table, td, th {
    border: 1px solid black;
}

td {
    padding: 15px;
}
三、java代码

3.1、controller层代码

package com.haojie.controller;

import com.haojie.beans.Column;
import com.haojie.mapper.TPermssionMapper;
import com.haojie.service.inf.TableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;
import java.util.Map;

@RestController
public class TableController {

    @Autowired
    private TableService tableService;

    @Autowired
    private TPermssionMapper tPermssionMapper;

    @RequestMapping("/columns")
    public List<Column> qryColumns(@RequestBody Map<String,String> param){
        String databaseName=param.get("databaseName");
        String tableName=param.get("tableName");
        return tableService.queryColumns(databaseName,tableName);
    }

    @RequestMapping("/databases")
    public List<String> databases(){
        return tableService.queryDatabases();
    }

    @RequestMapping("/tables")
    public List<String> tables(@RequestBody Map<String,String> param){
        System.out.println(param);
        List<String> databaseName = tableService.queryTables(param.get("databaseName"));

        return databaseName;
    }

}

3.2、Service层代码

package com.haojie.service.impl;

import com.haojie.beans.Column;
import com.haojie.mapper.TableMapper;
import com.haojie.service.inf.TableService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class TableServiceImpl implements TableService {

    @Autowired
    private TableMapper tableMapper;
    @Override
    public List<Column> queryColumns(String databaseName,String tableName) {
        return tableMapper.queryColumns(databaseName,tableName);
    }

    @Override
    public List<String> queryDatabases() {
        return tableMapper.queryDatabases();
    }

    @Override
    public List<String> queryTables(String databaseName) {
        return tableMapper.queryTables(databaseName);
    }
}
package com.haojie.service.inf;

import com.haojie.beans.Column;

import java.util.List;

public interface TableService {

    List<Column> queryColumns(String databaseName,String tableName);

    List<String> queryDatabases();

    List<String> queryTables(String databaseName);

}

3.3、Dao层代码

package com.haojie.mapper;

import com.haojie.beans.Column;
import com.haojie.beans.TUserRole;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface TableMapper {
    List<Column> queryColumns(@Param("databaseName") String databaseName,@Param("tableName") String tableName);

    List<String> queryDatabases();

    List<String> queryTables(String databaseName);

}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.haojie.mapper.TableMapper">
    <select   resultType="com.haojie.beans.Column">
        SELECT
                C.ORDINAL_POSITION AS 'fieldNo',
                C.COLUMN_NAME AS 'fieldName',
                C.COLUMN_TYPE AS 'fieldType',
                C.IS_NULLABLE AS 'isEmpty',
                C.COLUMN_KEY AS 'indexType',
                C.CHARACTER_SET_NAME AS 'encode',
                C.COLUMN_COMMENT AS 'comments'
        FROM
                information_schema.COLUMNS C
                INNER JOIN information_schema.TABLES T ON C.TABLE_SCHEMA = T.TABLE_SCHEMA
                AND C.TABLE_NAME = T.TABLE_NAME
        WHERE
            T.TABLE_SCHEMA = #{databaseName}
          and C.TABLE_NAME=#{tableName}
    </select>

    <select   resultType="java.lang.String">
        show databases
    </select>

    <select   resultType="java.lang.String">
        select table_name from information_schema.TABLES where table_schema=#{0}
    </select>


</mapper>
四、nginx 配置

此项目采取前后端分离


#user  nobody;
worker_processes  1;



#pid        logs/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;


    sendfile        on;
 
    keepalive_timeout  65;

    server {
        listen       80;
        server_name  localhost;


        location / {
           
            proxy_pass http://localhost:8080;
           
		}

		#静态文件交给nginx处理
		location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
		{
			root D:/workspace_idea/spring-mvc/src/main/webapp/;
			expires 30d;
		}
		#静态文件交给nginx处理
		location ~ .*.(js|css)?$
		{
			root D:/workspace_idea/spring-mvc/src/main/webapp/;
			expires 1h;
		}
      
   
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       

    }





}

免责声明:文章转载自《基于SSM的数据库表字段查询应用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇pycharm安装vue步骤easyui学习记录:Layout(布局)的使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

SpringBoot-Mybatis_Plus学习记录之公共字段自动填充

一.应用场景 平时在建对象表的时候都会有最后修改时间,最后修改人这两个字段,对于这些大部分表都有的字段,每次在新增和修改的时候都要考虑到这几个字段有没有传进去,很麻烦。mybatisPlus有一个很好的解决方案。也就是公共字段自动填充的功能。一般满足下面条件的字段就可以使用此功能: 这个字段是大部分表都会有的。 这个字段的值是固定的,或则字段值是可以在...

使用Redis中的incr实行自增,来实现订单号

需求: 如何生成唯一的订单序列号? 格式按照:yyyyMMdd+两位业务码+10位的自增序列, 比如:20150101**99**0000000001。 思路: (1)获得日期很简单; (2)业务码是调用服务传入的参数; (3)使用Redis来实现10位的自增序列的保存和自增,使用serial.number:{日期}的格式来保存某一天的自增序列的值; 直接...

SQL代码检查

1.使用 insert、select必须给出字段列表 因为使用*代替所有的字段后,如果表结构发生变化,应用程序可能出现无法识别的情况。比如java的Struts2+spring+ibatis框架,sql语句在XML档配置,内容:<select parameterClass="java.util.HashMap" resultClass="TableC...

初级Oracle和SQL学习者的学习笔记。韩顺平-玩转oracle。

我自己就是一个oracle和sql的初学者,前段时间看了韩顺平老师的oracle视频教程,觉得很深入浅出,收获了很多。同时自己也做了不少笔记,现在想将纸质笔记以自己的话总结出来。俗话说得好:教学总是相得益彰,在总结的过程中想必会加深自己的印象,能够巩固自己的学习过程。 oracle 用户部分: 创建用户:create user user_name iden...

SQL基础之 时间戳

本文转载:http://www.cnblogs.com/liuhh/archive/2011/05/14/2046544.html 一直对时间戳这个概念比较模糊,相信有很多朋友也都会误认为:时间戳是一个时间字段,每次增加数据时,填入当前的时间值。其实这误导了很多朋友。 1.基本概念 时间戳:数据库中自动生成的唯一二进制数字,与时间和日期无关的, 通常...

SQLi-Labs:Less54-Less65

从54关开始,开始慢慢偏向于实际环境,加了次数限制之类的 Less 54 本关中是对输入的次数做了限制,必须在10次请求之内获取信息,否则会刷新表名 首先判断了单引号闭合 ?id=1'  判断有三列 ?id=1' order by 3--+  爆库 ?id=-1' union select 1,database(),3--+   爆表 ?id=-1'...