Oracle中通过sql语句生成实体类entity

生成实体类的方式很多,比如用myeclipes就能生成,今天介绍一种简单的方式,用sql的方式生成。

直接干SQL语句:

select col000 entity from (
select 'package com.xx.webservice.entity;'||chr(13)||
'import java.io.Serializable;'||chr(13)||
'import javax.persistence.Entity;'||chr(13)||
'import javax.persistence.Table;'||chr(13)||
'import javax.persistence.Id;'||chr(13)||
'import javax.persistence.Column;'||chr(13)||
'import javax.persistence.GeneratedValue;'||chr(13)||
'import org.hibernate.annotations.GenericGenerator;'||chr(13)||
'@Entity'||chr(13)||
'@Table(name = "'||upper('&CNAME')||'")'||chr(13)||
'public class '||upper(substr('&CNAME',1,1))||upper(substr('&CNAME',2))||' implements Serializable {'||chr(13) col000,1 cr from dual
union all
 select 
'/**'||b.comments||'*/'||chr(13)||
'private ' || DECODE(a.DATA_TYPE,
                            'VARCHAR2','java.lang.String',
                            'DATE','java.lang.String',
                            'NUMBER','java.lang.String',
                            'TIMESTAMP(6)','java.lang.String',
                            'CHAR','java.lang.String') || ' ' ||
       upper(A.COLUMN_NAME) || ';' || chr(13) || 
       '/**'||b.comments||'*/'||chr(13)||
       DECODE(NVL(C.COLUMN_NAME,'NPKNUM'),'NPKNUM','','@Id')||CHR(13)||
       '@Column(name = "' ||A.COLUMN_NAME ||'"'||
       DECODE(a.DATA_TYPE,
              'DATE',
              ')',
              ', length = ' || a.DATA_LENGTH || ')') || chr(13) ||
       DECODE(NVL(C.COLUMN_NAME,'NPKNUM'),'NPKNUM','','@GeneratedValue(generator = "generator")')||CHR(13)|| 
       DECODE(NVL(C.COLUMN_NAME,'NPKNUM'),'NPKNUM','','@GenericGenerator(name = "generator", strategy = "assigned")')||CHR(13)||
       'public ' || DECODE(a.DATA_TYPE,
                            'VARCHAR2','java.lang.String',
                            'DATE','java.lang.String',
                            'NUMBER','java.lang.String',
                            'TIMESTAMP(6)','java.lang.String',
                            'CHAR','java.lang.String') || ' get' ||
       substr(a.COLUMN_NAME, 1, 1) || substr(upper(a.COLUMN_NAME), 2) ||
       '(){ return ' || upper(a.COLUMN_NAME) || ';}' || chr(13) ||
       '/**'||b.comments||'*/'||chr(13)||
       'public void set' || substr(a.COLUMN_NAME, 1, 1) ||
       substr(upper(a.COLUMN_NAME), 2) || '(' ||
       DECODE(a.DATA_TYPE,
                            'VARCHAR2','java.lang.String',
                            'DATE','java.lang.String',
                            'NUMBER','java.lang.String',
                            'TIMESTAMP(6)','java.lang.String',
                            'CHAR','java.lang.String') || ' ' || upper(a.COLUMN_NAME) ||
       ')'||CHR(13)||'{this.' || upper(a.COLUMN_NAME) || '=' || upper(a.COLUMN_NAME) || ';}' col000,2 cr
  from (select * from user_tab_columns order by column_name) a,USER_COL_COMMENTS B,
  (SELECT B.COLUMN_NAME, A.TABLE_NAME  FROM user_constraints a, USER_CONS_COLUMNS B 
          WHERE A.TABLE_NAME = B.TABLE_NAME AND A.CONSTRAINT_NAME = B.CONSTRAINT_NAME   AND A.CONSTRAINT_TYPE = 'P') C  
 where A.TABLE_NAME=B.table_name(+) 
   AND A.COLUMN_NAME=B.column_name(+) 
   and A.TABLE_NAME=C.TABLE_NAME(+)
   AND A.COLUMN_NAME=C.COLUMN_NAME(+) 
   AND a.TABLE_NAME = upper('&CNAME')
 union all
 select '}' col000,3 cr from dual) order by cr;

生成步骤:

1、打开PL/SQL工具的命令窗口

2、把上面的sql语句粘进去,填写要生成相应表或试图对应的实体类

注意:连续点击知道生成实体语句

3、将生成的实体语句copy出来

最后复制到类中即可

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值