如果我们项目中使用dao层的技术是Mybatis的话,我们就需要实体类映射。
有的时候项目的中表字段很多,通常都是几十个上百个的。我们手写会遇到,想要查询的语句会很麻烦。尤其不仅仅是字段多。而是那些字段的奇葩命名叫人苦不堪言。
通常需要 select * from table;这一个简单的操作我们要花费很多的时间去拼接为:
select a,b,c,d,e...... from table;
下面是我同事提供的一个语句,直接在pl/spl上执行就可以获得不错的效果。
declare
V_Str VARCHAR(32000);
V_Table_Name VARCHAR(40);
begin
V_Table_Name := 'SCTS_JIT_CALLOF_CV';--输入需要的表名就可以得到select语句了。
V_Str := 'select ';
for vo in(select * from user_tab_columns t where t.TABLE_NAME=V_Table_Name) loop
if vo.data_type='DATE' then
V_Str := V_Str || 'to_char(t.' || vo.column_name ||',''yyyy-MM-dd HH24:mi:ss'')' || vo.column_name ||',';
else
V_Str := V_Str || 't.' || vo.column_name ||',';
end if;
end loop;
V_Str := substr(V_Str, 1, length(V_Str) - 1);
V_Str := V_Str||' from '||V_Table_Name||' t';
DBMS_OUTPUT.put_line(V_Str);
end;
执行完毕后会生成SQL,用PL/SQL格式化就好了。效果如下:
select t.SN,
t.WITHIN_CODE,
t.MATNR,
t.MAKTX,
t.WERKS,
t.LIFNR,
t.NAME1,
t.CREATE_BY,
to_char(t.CREATE_DATE, 'yyyy-MM-dd HH24:mi:ss') CREATE_DATE,
t.UPDATE_BY,
to_char(t.UPDATE_DATE, 'yyyy-MM-dd HH24:mi:ss') UPDATE_DATE,
t.BATCH_NO,
to_char(t.BATCH_DATE, 'yyyy-MM-dd HH24:mi:ss') BATCH_DATE
from SCTS_PART_SUPPLIER_CV t