数据库访问跳板机

应用场景

在安全性要求高的网络环境,可能会出现数据库ip访问限制,导致数据库只有指定服务器才能访问,在特定业务场景我们可能会经常多人查询该数据库的表,为了解决这个问题,我写了一个小工具。

核心思想

解决方案实际上是在应用系统中新增一个查询页,前台输入sql,后台查询后再将结果返回前台,以往这种场景都是数据库字段或者业务定义一一对应的,那么这种通用查询如何做?这里后台可以用List>封装,由于前台js的灵活性,可以很容易的遍历到数据的属性名称。从而实现动态查询及展示。

代码示例

 List> select(@Param("sql") String sql);
function query(param) {
    $.ajax({
      type: 'post',
      url: 'select',
      headers: {
        'Authorization': param.auth
      },
      contentType: "application/json",
      data: JSON.stringify({sql: param.sql}),
      dataType: 'json',
      success: function (data) {
        console.log('data', data)
        if (data) {
          let head = []
          for (let key in data[0]) {
            head.push(key)
          }
          let str = ''
          for (let th of head) {
            str += '' + th + ''
          }
          str += ''

          for (let i = 0; i < data.length; i++) {
            let item = data[i]
            str += ''
            for (let th of head) {
              str += '' + item[th] + ''
            }
            str += ''
          }
          str += ''
          app.form.result = str
        }
      }
    });
  }

效果展示

数据库访问跳板机_第1张图片

注意事项

  • 注意补充认证信息,可以使用token,也可以用其他可靠认证方案,保证跳板app不会被恶意攻击。
  • 注意限制查询条数,以免全表扫描给数据库带来不必要的压力。

代码仓库地址 https://github.com/liuyeshennai/db-client-mini

你可能感兴趣的:(数据库,java,js)