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

本文介绍了一种通过SQL脚本自动从数据库表生成实体类的方法,显著提高了开发效率,尤其适用于使用MyEclipse生成Hibernate实体的情况。脚本能够处理表名、字段类型和注释,自动调整驼峰命名规范,简化了开发过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据建模之后生成相应的数据库,在开发编程中经常会碰到一件很麻烦的事情,那就是要将表写成相应的实体类,对于开发者来说一个字段一个字段的比对、复制、粘贴……这简直是一件让人抓狂的事情,现在特地将相应的脚本整理出来,已在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;

 

转载于:https://www.cnblogs.com/smashed/p/3977063.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值