oracle 表生成类的属性,插入、更新部分语句内容.

有的时候,经常要用到的表写一个对应的Model对象。

如果一个表的字段非常多的话

写起来很费时

后来想到,所有的字段在数据库里都有

数据库的类型也都可以找着

于是就想到用sql的方法来生成model对象的属性 ;

有了它就有可能进行增加、更新操作了。

在增加、和更新的时候,字段多的话,经常有的时候,要么多写、要有少写

于是想到数据库,用数据库生成这样的话,敢定不会少字段了

同时也可以根据数据的类型要进行数据转换,在sql里也好做

由于删除操作好弄就不用这样操作了.

下面一段sql语句代码就是可以完成:要创建一个mode类所需要的所有属性字段;

插入语句、和更新更新语句的大部分代码,只要略微改一点点就完了

select v1.insertValue,                                                                                                 --插入语句的前半部分 insert into table (field1,field2..)values(
  '/// <summary>'||chr(10)||    
  '/// '|| col.comments ||chr(10)||                                                                                   --注释     public string field1{get;set;}
  '/// </summary>'||chr(10)||'public '||
  case t.DATA_TYPE  
    when 'VARCHAR2' then 'string'  
    when 'NUMBER' then 'float' 
    else  'string ' 
  end ||' '|| nls_initcap(REGEXP_REPLACE(t.COLUMN_NAME,'_',''))||'{ get; set; }' property,    --nls_initcap第一个字母大小
                                                                                                                                --regexp_replace字符的替换
 'sqlInsert += string.Format("'||                                                                                    --插入语句的部分
  case t.DATA_TYPE 
    when 'DATE' then ' to_date(''{0}'',''YYYY-MM-DD HH24:MI:SS''),"'
    when 'NUMBER' then  ' {0},"' else ' ''{0}'',"'
  end   
  ||', ci.'|| nls_initcap(REGEXP_REPLACE( t.COLUMN_NAME,'_',''))||' );' insertSql,
'sqlUpdate += string.Format(" '|| nls_initcap(t.COLUMN_NAME)||'=' ||                              --更新语句的部分
 case t.DATA_TYPE 
  when 'DATE' then ' to_date(''{0}'',''YYYY-MM-DD HH24:MI:SS''),"'
  when 'NUMBER' then  ' {0},"' else ' ''{0}'',"'
 end || ',fi.'||nls_initcap(REGEXP_REPLACE( t.COLUMN_NAME,'_',''))||');'
 updateSql    
from all_tab_columns t 
left join all_col_comments col on t.TABLE_NAME = col.table_name and t.COLUMN_NAME = col.COLUMN_NAME and t.OWNER = col.OWNER
left join (
  select Max(t.TABLE_NAME) tn, 
  'string.Format("insert into '|| Max(nls_initcap(t.TABLE_NAME)) ||'('||wm_concat(nls_initcap(t.COLUMN_NAME))||')values("' insertValue
  from all_tab_columns t 
  left join all_col_comments col on t.TABLE_NAME = col.table_name and t.COLUMN_NAME = col.COLUMN_NAME and t.OWNER = col.OWNER
  where t.TABLE_NAME = Upper('resource_system_file')                           --要生成的表的名字
  order by t.COLUMN_ID
)v1 on v1.tn = t.TABLE_NAME
where t.TABLE_NAME =Upper('resource_system_file')                              --要生成的表的名字
order by t.COLUMN_ID 

当然可以自己去写一个生成 cs表的模型程序,如果不想写的话,可以用上面的sql语句进行来生成。

这样同样可以减少很多的代码

下面是一个resource_system_file表中信息。

四个字段

第一个是 一条 insert 语句,得跟第三行进行一起使用。

第二行是一个 mode 类的所有属性。

第四是一个update要更新的字段。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值