您的位置:首页 > 数据库

使用SQL脚本将表字段生成实体类属性VO

2014-09-17 14:34 357 查看
数据建模之后生成相应的数据库,在开发编程中经常会碰到一件很麻烦的事情,那就是要将表写成相应的实体类,对于开发者来说一个字段一个字段的比对、复制、粘贴……这简直是一件让人抓狂的事情,现在特地将相应的脚本整理出来,已在oracle中测试。脚本如下:

select 'private ' ||DECODE(T.DATA_TYPE,
'VARCHAR2',
'String ',
'CHAR',
'String ',
'DATE',
'Date ',
'NUMBER',
'int ',
'LONG',
'Long',
'FLOAT',
'Float ' )|| lower(t.COLUMN_NAME) ||';  //'||c.comments
from user_tab_cols t,user_col_comments c
where t.TABLE_NAME='TABLENAME' and c.table_name=t.TABLE_NAME and c.column_name=t.COLUMN_NAME ORDER BY T.COLUMN_ID;


其中TABLENAME为相应表名。其效果如 图:



接下来,全列选择复制,然后在相应实体类中粘贴,再相应得使用开发平台中的快速生成代码工具。一个实体类秒秒钟搞定!!!

补充:考虑到经常用myeclipse生成hibernate实体,且生成规则是碰到有下划线的的时候就不好保证命名的一致性,下面的脚本是去掉下划线,并且下划线后面的第一个字母大写,符合代码的驼峰编写规范:

select 'private ' || DECODE(T.DATA_TYPE,
'VARCHAR2',
'String ',
'CHAR',
'String ',
'DATE',
'Date ',
'NUMBER',
'int ',
'LONG',
'Long',
'FLOAT',
'Float ') ||
substr(lower(t.COLUMN_NAME),
0,
case
when instr(lower(t.COLUMN_NAME), '_') > 0 then
instr(lower(t.COLUMN_NAME), '_') - 1
else
length(lower(t.COLUMN_NAME))
end) || REGEXP_REPLACE(INITCAP(substr(lower(t.COLUMN_NAME),
case
when instr(lower(t.COLUMN_NAME), '_') > 0 then
instr(lower(t.COLUMN_NAME), '_') + 1
else
length(lower(t.COLUMN_NAME)) + 1
end,
length(lower(t.COLUMN_NAME)))),
'(\w)[_]',
'\1') || ';  //' || c.comments
from user_tab_cols t, user_col_comments c
where t.TABLE_NAME = 'TABLENAME'
and c.table_name = t.TABLE_NAME
and c.column_name = t.COLUMN_NAME
ORDER BY T.COLUMN_ID;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐