有的时候,经常要用到的表写一个对应的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要更新的字段。