package lmc; import java.io.FileInputStream; import java.lang.reflect.Field; import java.util.regex.Matcher; import java.util.regex.Pattern; public class SqlAnnoUtils { public static String getSqlMap(Object bean){ StringBuilder res = new StringBuilder(); if(bean==null){ System.err.println("参数对象为空"); return res.toString(); } try{ res.append("<resultMap class=\""+bean.getClass().getName()+"\" id=\"sqlmap_"+bean.getClass().getSimpleName().toLowerCase()+"\">\n"); Field[]fds = bean.getClass().getDeclaredFields(); int[]lens = SqlAnnoUtils.getAnnoNums(bean); StringBuilder colStr = new StringBuilder(); StringBuilder sqlStr = new StringBuilder(); StringBuilder valStr = new StringBuilder(); if(fds!=null&&fds.length>0){ for(int i=0;i<fds.length;i++){ String col = fds[i].getName(); String type = SqlAnnoUtils.getType(fds[i].getType().getName()); res.append("\t<result property=\""+col+"\" column=\""+col+"\" jdbcType=\""+type+"\"/>\n"); colStr.append(col+","); valStr.append("\t\t#"+col+":"+type+"#,\n"); if(lens[i]>0){ sqlStr.append(col.toUpperCase()+" "+type.toUpperCase()+"("+lens[i]+"),\n"); }else{ sqlStr.append(col.toUpperCase()+" "+type.toUpperCase()+",\n"); } } colStr.deleteCharAt(colStr.length()-1); sqlStr.deleteCharAt(sqlStr.length()-1); sqlStr.deleteCharAt(sqlStr.length()-1); valStr.deleteCharAt(valStr.length()-1); valStr.deleteCharAt(valStr.length()-1); } res.append("</resultMap>\n\niBatis配置文件基本语句:\n"+colStr.toString()+"\n"+valStr.toString()+"\n\nOracle数据库创建表SQL语句\n"+sqlStr.toString()); }catch(Exception e){ e.printStackTrace(); } return res.toString(); } private static String getType(String type){ if(type.endsWith("Character")||type.endsWith("char")){ return "CHAR"; } if(type.endsWith("String")){ return "VARCHAR"; } if(type.endsWith("Boolean")||type.endsWith("boolean")){ return "NUMBER"; } if(type.endsWith("Byte")||type.endsWith("byte")){ return "NUMBER"; } if(type.endsWith("Short")||type.endsWith("short")){ return "NUMBER"; } if(type.endsWith("Integer")||type.endsWith("int")){ return "NUMBER"; } if(type.endsWith("Long")||type.endsWith("long")){ return "NUMBER"; } if(type.endsWith("Float")||type.endsWith("float")){ return "NUMBER"; } if(type.endsWith("Double")||type.endsWith("double")){ return "NUMBER"; } if(type.endsWith("BigDecimal")){ return "NUMBER"; } if(type.endsWith("Time")){ return "DATE"; } if(type.endsWith("Date")){ return "DATE"; } if(type.equals("Timestamp")){ return "TIMESTAMP"; }else{ return "工具类还没进行处理"; } } private static int[]getAnnoNums(Object bean){ int[]res = null; String dir = System.getProperty("user.dir"); String[]names = bean.getClass().getName().split("[.]"); StringBuffer path = new StringBuffer(dir+"\\src\\"); for(int i=0;i<names.length;i++){ path.append(names[i]+"\\"); } path.deleteCharAt(path.length()-1); path.append(".java"); try{ FileInputStream fis = new FileInputStream(path.toString().replace("\\","/")); byte[]data = new byte[fis.available()]; fis.read(data); String con = new String(data); int a = 0; int b = -1; int j = 0; res = new int[200]; while(a!=-1){ a = con.indexOf("/*",a); if(a!=-1){ b = con.indexOf("*/",a); if(b!=-1){ int num = SqlAnnoUtils.getNum(con.substring(a+1,b).replace('*',' ')); if(num>-1){ res[j++]=num; } a = b; } } } System.out.println("有数字的文档注解的个数:"+j); }catch(Exception e){ e.printStackTrace(); } return res; } private static int getNum(String anno){ Matcher mch = Pattern.compile("\\d*").matcher(anno); if(anno.indexOf("set()")!=-1){ while(mch.find()){ if(!mch.group().equals("")){ String num = mch.group(); return Integer.parseInt(num); } } } return -1; } }
最近下载更多
moomin709 LV24
2020年7月6日
wei112233 LV15
2020年2月2日
乞丐哥哥 LV23
2018年1月19日
fergfergfer LV2
2017年10月11日
seasuka LV15
2017年7月31日
zqlongre LV2
2016年10月3日
wzg356 LV18
2015年1月3日
yongfahuang LV15
2014年6月12日
745030904 LV10
2014年5月21日
AXIN LV36
2014年2月25日
最近浏览更多
lee123321 LV22
2023年12月19日
3334004690 LV10
2023年11月1日
悟道子 LV16
2023年7月19日
ewan007 LV30
2022年7月8日
a3870764722a LV22
2022年6月7日
crosa_Don LV18
2022年3月31日
zxf987654321
2022年2月12日
暂无贡献等级
yyde52
2021年12月15日
暂无贡献等级
zhuiyunyiye LV12
2021年12月13日
zs131420 LV1
2021年11月29日