ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

双表联动

2021-07-03 14:32:51  阅读:155  来源: 互联网

标签:result column private srcDataSource 双表 联动 id qdbField


一、后端代码

  1. service层

// 左表返回的内容
public QdbResult queryDb(Long id,Integer page, Integer limit) throws Exception {
   
   
   SrcDataSource srcDataSource = srcDataSourceMapper.selectById(id);
   SimpleDataSource source = dataSource(srcDataSource.getSourceType(),
           srcDataSource.getJdbcUrl(), srcDataSource.getJdbcUser(), srcDataSource.getJdbcPwd());

   // 根据url,user,pwd,type获得该数据库内的所有表的表名和字段信息
   DBMetadataUtils metaUtils = new DBMetadataUtils(source);
   DatabaseConfig config = metaUtils.getDefaultConfig();

   List<QdbSource> l = new ArrayList<>();
   List<IntrospectedTable> list = metaUtils.introspectTables(config);
   for (IntrospectedTable table : list) {
       QdbSource qdbSource = new QdbSource();
       qdbSource.setId(id);
       qdbSource.setName(table.getName());
       List<QdbField> lq = new ArrayList<>();
       for (IntrospectedColumn column : table.getAllColumns()) {
           QdbField qdbField = new QdbField();
           qdbField.setFildName(column.getName());
           qdbField.setFildType(column.getJdbcTypeName());
           qdbField.setFildLength(column.getLength());
           qdbField.setFildScale(column.getScale());
           qdbField.setRemarks(column.getRemarks());
           qdbField.setIsPk(column.isPk());
           qdbField.setIsNullable(column.isNullable());
           qdbField.setDefaultValue(column.getDefaultValue());
           lq.add(qdbField);
      }
       qdbSource.setList(lq);

       l.add(qdbSource);
  }
   QdbResult result = new QdbResult();
   result.setCode(0);
   result.setCount(10l);
   result.setMsg("成功");
   result.setData(l);
   return result;

}

// 右表返回的内容
public QdbFieldResult queryField(Long id, String name, Integer page, Integer limit) throws Exception {
       SrcDataSource srcDataSource = srcDataSourceMapper.selectById(id);
       SimpleDataSource source = dataSource(srcDataSource.getSourceType(),
               srcDataSource.getJdbcUrl(), srcDataSource.getJdbcUser(), srcDataSource.getJdbcPwd());
// 根据url,user,pwd,type获得该数据库内的所有表的表名和字段信息
       DBMetadataUtils metaUtils = new DBMetadataUtils(source);
       DatabaseConfig config = metaUtils.getDefaultConfig();

       List<QdbField> list1 =new ArrayList<>();
       List<IntrospectedTable> list = metaUtils.introspectTables(config);
       for (IntrospectedTable table : list) {
           if (name.equals(table.getName())){
               for (IntrospectedColumn column : table.getAllColumns()) {
                   QdbField qdbField = new QdbField();
                   qdbField.setFildName(column.getName());
                   qdbField.setFildType(column.getJdbcTypeName());
                   qdbField.setFildLength(column.getLength());
                   qdbField.setFildScale(column.getScale());
                   qdbField.setRemarks(column.getRemarks());
                   qdbField.setIsPk(column.isPk());
                   qdbField.setIsNullable(column.isNullable());
                   qdbField.setDefaultValue(column.getDefaultValue());
                   list1.add(qdbField);
              }
          }

      }
       QdbFieldResult result = new QdbFieldResult();
       result.setCode(0);
       result.setCount(10l);
       result.setMsg("成功");
       result.setData(list1);
       return result;
  }
  1. VO层

    @Data
    public class QdbResult implements Serializable {

       private static final long serialVersionUID = 1L;

       private Integer code;

       private String msg;

       private Long count;

       private List<QdbSource> data;
    }

    @Data
    public class QdbSource implements Serializable {

       private static final long serialVersionUID = 1L;

       private Long id;

       private String name;

       private List<QdbField> list;
    }
  2. 实体类

    @Data
    //表中的字段信息
    public class QdbField implements Serializable {

       private static final long serialVersionUID = 1L;

       private String fildName;

       private String fildType;

       private Integer fildLength;

       private Integer fildScale;

       private String remarks;

       private Boolean isPk;

       private Boolean isNullable;

       private String defaultValue;

    }
  3. 控制层

    /**
        * 跳转查看库表库表
        *
        * @author Jacob
        * @Date 2021-07-01
        */
       @RequestMapping("/checkDb")
       public String checkDb() {
           return PREFIX + "/qdbDataSource2.html";
      }
     // 左表返回表名
       @RequestMapping("/checkDbLeft")
       @ResponseBody
       public QdbResult checkDbLeft(Long id,Integer page, Integer limit) {
           try {
               QdbResult qdbResult =srcDataSourceService.queryDb(id,page,limit);
               return qdbResult;
          } catch (Exception e) {
               e.printStackTrace();
               return null;
          }
      }

    // 右表根据左表的表明返回相应的字段信息
       @RequestMapping("/checkDbRight")
       @ResponseBody
       public QdbFieldResult checkDbRight(Long id, String name, Integer page, Integer limit) {
           try {
               QdbFieldResult result=srcDataSourceService.queryField(id,name,page,limit);
               return result;
          } catch (Exception e) {
               e.printStackTrace();
               return null;
          }
      }
  4. mapper层略

     

二、前端代码

  1. 左表js

    layui.use(['table', 'admin', 'ax'], function () {
       var $ = layui.$;
       var table = layui.table;
       var $ax = layui.ax;
       var admin = layui.admin;

       var QdbDataSourceTable = {
           tableId: "qdbDataSourceTable"
      };

       QdbDataSourceTable.initColumn = function () {
           return [[
              {type: 'checkbox'},
              {field: 'id',sort: true,hide: true,title: 'id'},
              {field: 'name', sort: true, title: '库表名称'},
              {align: 'center', toolbar: '#tableBar', title: '操作'}
          ]];
      };

       // 渲染表格
       var tableResult = table.render({
           elem: '#' + QdbDataSourceTable.tableId,
           url: Feng.ctxPath + "/srcDataSource/checkDbLeft?id=" + Feng.getUrlParam("id"),
           page: true,
           height: "full-158",
           cellMinWidth: 100,
           cols: QdbDataSourceTable.initColumn()
      });
       
       
  1. 右表js

    var QdbFieldSourceTable = {
           tableId: "qdbFieldSourceTable"
      };

       QdbFieldSourceTable.initColumn = function () {
           return [[
              {type: 'checkbox'},
              {field: 'fildName', sort: true, title: '字段名'},
              {field: 'fildType', sort: true, title: '数据类型'},
              {field: 'fildLength', sort: true, title: '字段长度'},
              {field: 'fildScale', sort: true, title: '小数位数'},
              {field: 'remarks', sort: true, title: '备注'},
              {field: 'isPk', sort: true, title: '是否主键'},
              {field: 'isNullable', sort: true, title: '是否可用'},
              {field: 'defaultValue', sort: true, title: '默认值'},
          ]];
      };

       var tableResult2 = table.render({
           elem: '#' + QdbFieldSourceTable.tableId,
           url: Feng.ctxPath + "/srcDataSource/checkDbRight?id="+1+"&name=sys_dict",
           page: true,
           height: "full-158",
           cellMinWidth: 100,
           cols: QdbFieldSourceTable.initColumn()
      });
       /*
      * 查看字段
      * */
       QdbDataSourceTable.checkField1 = function (data) {
           table.reload('qdbFieldSourceTable',{
               url: Feng.ctxPath + "/srcDataSource/checkDbRight?",
               page:{ curr:1 },
               where:{
                   'id':data.id,
                   'name':data.name
              }
          });
      };

       // 工具条点击事件
       table.on('tool(' + QdbDataSourceTable.tableId + ')', function (obj) {
           var data = obj.data;
           var layEvent = obj.event;
           if (layEvent === 'checkField') {
               QdbDataSourceTable.checkField1(data);
          }
      });

     

    三、实现效果

     

 

标签:result,column,private,srcDataSource,双表,联动,id,qdbField
来源: https://www.cnblogs.com/hippo-dolphin/p/14966280.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有