针对数据库单表的增删改查,可以通过Mybatis-Plus来自动生成代码。只需要建好数据库,然后配置配置文件,可以生成controller、service、mapper层代码。其实自己也可以实现代码的简单自动生成,1.连接数据库,获取这个库对应的表信息返回;2.根据表的结果,一张表对应关系有一个表名对应多条列名及列名的类型名,这个时候可以根据这个信息建立entity对象。
1.Mysql怎么通过表名获取表结构信息
1.1Mysql所有表信息
select * from information_schema.tables where table_schema='erp_test'
show create table information_schema.tables --可以查看创建这个表的sql
CREATE TEMPORARY TABLE `TABLES` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`TABLE_TYPE` varchar(64) NOT NULL DEFAULT '',
`ENGINE` varchar(64) DEFAULT NULL,
`VERSION` bigint(21) unsigned DEFAULT NULL,
`ROW_FORMAT` varchar(10) DEFAULT NULL,
`TABLE_ROWS` bigint(21) unsigned DEFAULT NULL,
`AVG_ROW_LENGTH` bigint(21) unsigned DEFAULT NULL,
`DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
`MAX_DATA_LENGTH` bigint(21) unsigned DEFAULT NULL,
`INDEX_LENGTH` bigint(21) unsigned DEFAULT NULL,
`DATA_FREE` bigint(21) unsigned DEFAULT NULL,
`AUTO_INCREMENT` bigint(21) unsigned DEFAULT NULL,
`CREATE_TIME` datetime DEFAULT NULL,
`UPDATE_TIME` datetime DEFAULT NULL,
`CHECK_TIME` datetime DEFAULT NULL,
`TABLE_COLLATION` varchar(32) DEFAULT NULL,
`CHECKSUM` bigint(21) unsigned DEFAULT NULL,
`CREATE_OPTIONS` varchar(255) DEFAULT NULL,
`TABLE_COMMENT` varchar(2048) NOT NULL DEFAULT ''
) ENGINE=MEMORY DEFAULT CHARSET=utf8
需要用到属性介绍
列名 | 含义 |
---|---|
TABLE_SCHEMA | 数据表所在的库名 |
TABLE_NAME | 表名 |
ENGINE | 数据库引擎 |
TABLE_ROWS | 表中数据行数 |
AUTO_INCREMENT | 自增主键当前值 |
TABLE_COLLATION | 表的字符编码 |
TABLE_COMMENT | 表的注释 |
1.2Mysql中表结构信息
select * from information_schema.columns
show create table information_schema.columns
CREATE TEMPORARY TABLE `COLUMNS` (
`TABLE_CATALOG` varchar(512) NOT NULL DEFAULT '',
`TABLE_SCHEMA` varchar(64) NOT NULL DEFAULT '',
`TABLE_NAME` varchar(64) NOT NULL DEFAULT '',
`COLUMN_NAME` varchar(64) NOT NULL DEFAULT '',
`ORDINAL_POSITION` bigint(21) unsigned NOT NULL DEFAULT '0',
`COLUMN_DEFAULT` longtext,
`IS_NULLABLE` varchar(3) NOT NULL DEFAULT '',
`DATA_TYPE` varchar(64) NOT NULL DEFAULT '',
`CHARACTER_MAXIMUM_LENGTH` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_OCTET_LENGTH` bigint(21) unsigned DEFAULT NULL,
`NUMERIC_PRECISION` bigint(21) unsigned DEFAULT NULL,
`NUMERIC_SCALE` bigint(21) unsigned DEFAULT NULL,
`CHARACTER_SET_NAME` varchar(32) DEFAULT NULL,
`COLLATION_NAME` varchar(32) DEFAULT NULL,
`COLUMN_TYPE` longtext NOT NULL,
`COLUMN_KEY` varchar(3) NOT NULL DEFAULT '',
`EXTRA` varchar(27) NOT NULL DEFAULT '',
`PRIVILEGES` varchar(80) NOT NULL DEFAULT '',
`COLUMN_COMMENT` varchar(1024) NOT NULL DEFAULT ''
) ENGINE=MyISAM DEFAULT CHARSET=utf8
select * from information_schema.columns where table_schema='erp_test'
常用列名介绍
列明 | 含义 |
---|---|
COLUMN_NAME | 列名称 |
ORDINAL_POSITION | 字段顺序 |
COLUMN_DEFAULT | 列的默认数据 |
IS_NULLABLE | 是否为空 |
DATA_TYPE | 数据类型 |
CHARACTER_MAXIMUM_LENGTH | 字符最大长度 |
CHARACTER_SET_NAME | 字符集名称 |
COLUMN_TYPE | 类类型字符串表示 |
COLUMN_KEY | 关键列[PRI][NULL][MUL] |
EXTRA | 额外描述 |
PRIVILEGES | 字段操作权限 |
COLUMN_COMMENT | 注释 |
1.3Mysql获取某个库表所有表结构sql
select t.table_name 表名,
TABLE_COMMENT 表注释,
column_name 列名,
ordinal_position 字段顺序,
data_type 数据类型,
column_type 数据类型字符串,
column_comment 列注释
from information_schema.tables t
inner join information_schema.columns c on t.table_name=c.table_name and t.table_schema=c.table_schema
where t.table_schema='erp_test'