表定义(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);
}
}