表定义(tableDefine)信息

tableModel的json数据格式如下(精简版本):

 {
    "dbTableName": "ac_project",
    "id": "AcProject",
    "cnname": "项目",
    "varDomainName": "acProject",
    "columns": [
      {
        "canBeNull": false,
        "cnname": "id",
        "columnName": "id",
        "columnType": "INT",
        "comment": "id",
        "dataName": "id",
        "isPK": true,
        "jspTag": "TEXT",
        "length": 10,
        "readonly": false
      },
      {
        "canBeNull": true,
        "cnname": "名称",
        "columnName": "name",
        "columnType": "VARCHAR",
        "comment": "名称",
        "dataName": "name",
        "isPK": false,
        "jspTag": "TEXT",
        "length": 50,
        "readonly": false
      },
      {
        "canBeNull": true,
        "cnname": "类型",
        "columnName": "type",
        "columnType": "INT",
        "comment": "类型:1.本地,2.仓库",
        "dataName": "type",
        "dictName": "acProject_type_DICT",
        "isPK": false,
        "jspTag": "SELECT",
        "length": 10,
        "readonly": false
      }
    ],
    "pkColumn": {
      "canBeNull": false,
      "cnname": "id",
      "columnName": "id",
      "columnType": "INT",
      "comment": "id",
      "dataName": "id",
      "isPK": true,
      "jspTag": "TEXT",
      "length": 10,
      "readonly": false
    }
  }

tableModel主体信息的属性结构

tableModel(表模型)
	|
  |___tableDefine(表信息)
  |     |
  |     |____id(类名), cnname(中文名称), varDomainName(变量名称), dbTableName(表名)
  |			|
  |			|____columns 列列表信息;
  |						|
  |						|__columnName(数据库列名),dataName(字段名称), columnType(数据库字段类型)
  |						|__length(长度),comment(备注), isPK(是否主键), jspTag(展示类型)
  |						|__canBeNull(是否可为空),dictName(字典项名称),readonly(是否只读)
  |
  |___ bizFieldMap(业务字段map)
  |				|
  |				|__allColumn(全部列名称列表,逗号分隔)
  |				|__addList(新增列名称列表,逗号分隔)
  |				|__updateList (修改列名称列表,逗号分隔)
  |				|__queryList (查询列名称列表,逗号分隔)
  |				|__viewList (查看列名称列表,逗号分隔)
  |				|__createTime (创建时间列名称)
  |				|__updateTime (修改时间列名称)
  |
  |__dictMap(字典项map,略)

主要的方法和功能请参看源码。

源码


/**
 * 表定义信息
 * @author david
 * @since 2018/12/12
 */
class TableDefineVo {
    /**
     * id
     */
    private String id;
    /**
     * 分页大小
     */
    private String pageSize;
    /**
     * 表中文名称
     */
    private String cnname;
    /**
     * 是否需要分页
     */
    private Boolean isPaged;
    /**
     * 数据库表名称
     */
    private String dbTableName;
    /**
     * 列map,方便通过key获取
     */
    Map<String, ColumnVo> columnMap;
    /**
     * 所有列
     */
    private List<ColumnVo> columns;
    /**
     * 主键列
     */
    private List<ColumnVo> pkColumns;


    List<ColumnVo> getColumns() {
        return columns;
    }

    void setColumns(List<ColumnVo> columns) {
        this.columns = columns;
    }

    String getId() {
        return id;
    }

    void setId(String id) {
        this.id = id;
    }

    String getPageSize() {
        return pageSize;
    }

    void setPageSize(String pageSize) {
        this.pageSize = pageSize;
    }

    String getCnname() {
        return cnname;
    }

    void setCnname(String cnname) {
        this.cnname = cnname;
    }

    Boolean getIsPaged() {
        return isPaged;
    }

    void setIsPaged(Boolean isPaged) {
        this.isPaged = isPaged;
    }

    String getDbTableName() {
        return dbTableName;
    }

    void setDbTableName(String dbTableName) {
        this.dbTableName = dbTableName;
    }


    Map<String, ColumnVo> getColumnMap() {
        if (columnMap == null) {
            columnMap = new HashMap<String, ColumnVo>();
            for (ColumnVo column : columns) {
                columnMap.put(column.getColumnName(), column);
            }
        }
        return columnMap;
    }

    void setColumnMap(Map<String, ColumnVo> columnMap) {
        this.columnMap = columnMap;
    }

    /**
     * 通过列名获取列信息
     * @param columnName 列名
     * @return 列信息
     */
    ColumnVo getColumnByColumnName(String columnName) {
        return getColumnMap().get(columnName);
    }

    /**
     * 获取主键列表
     * @return
     */
    List<ColumnVo> getPkColumns() {
        if (pkColumns == null) {
            PKFilter pkFilter = new PKFilter();
            pkColumns = pkFilter.filterColumns(columns);
        }
        return pkColumns;
    }

    /**
     * 获取一个主键
     * @return
     */
    ColumnVo getPkColumn() {
        List<ColumnVo> list = getPkColumns();
        if (CollectionUtils.isEmpty(list)) {
            return null;
        }
        return list.get(0);
    }

    /**
     * 获取变量名称
     * @return
     */
    String getVarDomainName() {
        return TableNameUtil.lowerCaseFirst(this.id);
    }
}