您的位置:首页 > 数据库 > Oracle

oracle存储过程 根据表名生成hibernate实体

2013-06-30 15:11 141 查看
CREATE OR REPLACE PROCEDURE MakeEntity(tablename IN VARCHAR2) Authid Current_User IS
cursor cur is
select a.column_name as colname,
a.data_type   as coltype,
f.comments    as colcomments
from user_tab_columns a, user_col_comments f
where a.table_name = f.table_name
and a.column_name = f.column_name
and a.table_name = tablename;
var_colname     varchar2(30);
var_coltype     varchar2(50);
var_colcomments varchar2(200);
var_temp        varchar2(200);
BEGIN
dbms_output.enable(90000);
/**************生成类信息*******************/
dbms_output.put_line('package com.neusoft.education.sis.entity.xxx;');
dbms_output.put_line('');
dbms_output.put_line('import java.io.Serializable;');
dbms_output.put_line('import java.sql.Timestamp;');
dbms_output.put_line('import java.sql.Clob;');
dbms_output.put_line('import java.sql.Date;');
dbms_output.put_line('import javax.persistence.Column;');
dbms_output.put_line('import javax.persistence.Entity;');
dbms_output.put_line('import javax.persistence.GeneratedValue;');
dbms_output.put_line('import javax.persistence.GenerationType;');
dbms_output.put_line('import javax.persistence.Id;');
dbms_output.put_line('import javax.persistence.SequenceGenerator;');
dbms_output.put_line('import javax.persistence.Table;');
dbms_output.put_line('import com.neusoft.unieap.riaclient.model.UniPOJO;');
dbms_output.put_line('');
dbms_output.put_line('/**');
select ' * Created on ' || to_char(Sysdate, 'yyyy-mm-dd')
into var_temp
from dual;
dbms_output.put_line(var_temp);
dbms_output.put_line(' * Title:  XXX项目_' || tablename || 'Entity</p>');
dbms_output.put_line(' * Description: ' || tablename || 'Entity');
dbms_output.put_line(' * Copyright: Copyright (c) 2010');
dbms_output.put_line(' * Company: XXX公司');
dbms_output.put_line(' * Department:XXX部门');
dbms_output.put_line(' * @author:');
dbms_output.put_line(' * @version 1.0');
dbms_output.put_line(' */');
dbms_output.put_line('');
dbms_output.put_line('@Entity');
dbms_output.put_line('@Table(name = "' || tablename || '")');
dbms_output.put_line('public class XXXXEntity extends UniPOJO implements Serializable {');
dbms_output.put_line('');
dbms_output.put_line('    /**');
--dbms_output.put_line('   * ');
dbms_output.put_line('     */');
dbms_output.put_line('    private static final long serialVersionUID = 1L;');
dbms_output.put_line('');
open cur;
loop
fetch cur
into var_colname, var_coltype, var_colcomments;
exit when cur%notfound;
/**************生成字段信息*******************/
dbms_output.put_line('    //' || var_colcomments);
var_temp := ' String ';
if var_colname = 'RESOURCE_ID' then
var_temp := ' long ';
end if;
if var_coltype = 'DATE' then
var_temp := ' Timestamp ';
end if;
if var_coltype = 'CLOB' then
var_temp := ' Clob ';
end if;
dbms_output.put_line('    private' || var_temp || lower(var_colname) || ';');
dbms_output.put_line('');
end loop;
close cur;
open cur;
loop
fetch cur
into var_colname, var_coltype, var_colcomments;
exit when cur%notfound;
/**************生成get  set 方法信息*******************/
if var_colname = 'RESOURCE_ID' then
dbms_output.put_line('    /**');
dbms_output.put_line('     * Description:[RESOURCE_ID]');
--dbms_output.put_line('   * ');
dbms_output.put_line('     * @return long resourceID.');
dbms_output.put_line('     */');
dbms_output.put_line('    @Id');
dbms_output.put_line('    @Column(name = "RESOURCE_ID")');
dbms_output.put_line('    @SequenceGenerator(name = "SIS_RESOURCE", sequenceName = "SEQ_SIS_RESOURCE_ID")');
dbms_output.put_line('    @GeneratedValue(generator = "SIS_RESOURCE", strategy = GenerationType.SEQUENCE)');
dbms_output.put_line('    public long getResource_id() {');
dbms_output.put_line('        return resource_id;');
dbms_output.put_line('    }');
dbms_output.put_line('');
dbms_output.put_line('    /**');
dbms_output.put_line('     * Description:[resourceID]');
--dbms_output.put_line('   * ');
dbms_output.put_line('     * @param resourceID');
dbms_output.put_line('     *            The resourceID to set.');
dbms_output.put_line('     */');
dbms_output.put_line('    public void setResource_id(long resourceID) {');
dbms_output.put_line('        this.resource_id = resourceID;');
dbms_output.put_line('    }');
dbms_output.put_line('');
else
var_temp := ' String ';
if var_coltype = 'DATE' then
var_temp := ' Timestamp ';
end if;
if var_coltype = 'CLOB' then
var_temp := ' Clob ';
end if;
dbms_output.put_line('    /**');
dbms_output.put_line('     * Description:[' || var_colname || '的get方法]');
--dbms_output.put_line('  * ');
dbms_output.put_line('     * @return' || var_temp || lower(var_colname) || '.');
dbms_output.put_line('     */');
dbms_output.put_line('    @Column(name = "' || var_colname || '")');
dbms_output.put_line('    public' || var_temp || 'get' ||
INITCAP(substr(var_colname,1,1))||substr(lower(var_colname),2,length('proc_instance_id'))  || '() {');
dbms_output.put_line('        return ' || lower(var_colname) || ';');
dbms_output.put_line('    }');
dbms_output.put_line('');
dbms_output.put_line('    /**');
dbms_output.put_line('     * Description:[' || var_colname || '的set方法]');
--dbms_output.put_line('  * ');
dbms_output.put_line('     * @param  ' || lower(var_colname) || '.');
dbms_output.put_line('     */');
dbms_output.put_line('    public void set' ||
INITCAP(substr(var_colname,1,1))||substr(lower(var_colname),2,length('proc_instance_id'))  || '(' || var_temp ||
lower(var_colname) || ') {');
dbms_output.put_line('        this.' || lower(var_colname) || ' = ' ||
lower(var_colname) || ';');
dbms_output.put_line('    }');
dbms_output.put_line('');
end if;
end loop;
close cur;
dbms_output.put_line('}');
END;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息