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出来
最后复制到类中即可