数据库表生成实体类文件字段代码
代码编写时,经常创建完表后,就是根据表里的字段创建对应的实体类,这个操作通常比较繁琐,此文是不依赖插件,借用sql脚本生成实体类代码,这里借用oracle举例,同时奉上mysql脚本实例。
1.创建测试表
-- Create table
create table T_TEST
(
"c_test1" VARCHAR2(1),
"d_test1" date
);
-- Add comments to the columns
comment on column T_TEST."c_test1"
is '测试String';
comment on column T_TEST."d_test1"
is '测试日期';
2 执行脚本
2.1 oracle脚本
select ' /**
* ' || ucc.comments || '
*/
private ' || case
when utc.data_type = 'DATE' then
'Date'
else
'String'
end || ' ' || ucc.column_name || ';' col
from user_col_comments ucc
left join user_tab_columns utc
on ucc.column_name = utc.column_name
and ucc.table_name = utc.table_name
where ucc.table_name = 'T_TEST'
执行完脚本(注意表名T_TEST大写),复制查询出的结果就是代码,这里oracle有个问题就是它自动的在前后加上双引号,可以复制到idea里面,将所有的双引号替换掉,还有另外一个问题就是这里没有将下划线转驼峰,尝试过sql解决,最终失败了,其实放在idea或者notePad++里,用正则替换更加简单,最后如果格式有问题,在idea里面格式化一样就完美了。
查询结果
" /**
* 测试String
*/
private String c_test1;"
" /**
* 测试日期
*/
private Date d_test1;"
idea下划线转驼峰
正则:(\w*)(_)(\w*)
替换:$1\u$3
替换后结果
/**
* 测试String
*/
private String cTest1;
/**
* 测试日期
*/
private Date dTest1;
2.2 mysql脚本
SELECT
concat(
' /**
* ',
concat( t.COLUMN_COMMENT ),
'
*/
private ',
concat( CASE WHEN t.data_type = 'datetime' THEN 'Date' WHEN t.data_type = 'date' THEN 'Date'
WHEN t.data_type = 'decimal' THEN 'BigDecimal' ELSE 'String' END ),
' ',
concat( t.column_name ),
';'
) col
FROM
information_schema.COLUMNS t
WHERE
t.TABLE_NAME = '{你的数据库表名小写}'
AND t.table_schema = '{你的数据库实例名小写}'
ORDER BY
t.ORDINAL_POSITION