java 反射 使用小技巧
来源:互联网 发布:学数控编程用什么软件 编辑:程序博客网 时间:2024/06/12 00:47
经常要读取txt或者excel到数据库
以前都是读取后然后转成list,然后set到表对象(hibernate映射的表对象),
然后再session.save(entity),
如果文件中的title很多的话,就太麻烦了。
现在用java 反射,可以轻松解决
ClubWinterActivity是表对象,new String[]{}中是txt中的title,就是说取这些值,放入表对象的这些字段:
List<ClubWinterActivity> list = (List<ClubWinterActivity>) ParserTxtFileUtils.getListByFile(file, ClubWinterActivity.class, new String[] {"cwatype", "cwatimes", "cwacustomername", "cwavin","flag"});
读取每行txt,放入getObject()中
public static List<?> getListByFile(File file, Class<?> clazz, String[] fieldNames) throws Exception {List<Object> list = new ArrayList<Object>();InputStreamReader isr = new InputStreamReader(new FileInputStream(file), "GB2312");BufferedReader br = new BufferedReader(isr);String line = null;while (null != (line = br.readLine())) {Object o = getObject(line, clazz, fieldNames);if(null != o)list.add(o);}return list;}
private static Object getObject(String line, Class<?> clazz,String[] fieldNames) throws Exception {Object o = null;if (!"".equals(line)) {o = clazz.newInstance();String[] values = line.split(",");setObjectFieldsValue(o, values, fieldNames);}return o;}
把值set到o中
private static void setObjectFieldsValue(Object o, String[] values,String[] fieldNames) throws Exception {if (null != values && values.length > -1) {for (int i = 0; i < fieldNames.length; i++) {Field field = o.getClass().getDeclaredField(fieldNames[i]);field.setAccessible(true);String typeName = field.getType().getSimpleName();if ("Long".equals(typeName) || "long".equals(typeName))field.set(o, Long.parseLong(values[i]));else if ("Date".equals(typeName))field.set(o, DateUtils.getDateByFormat(values[i],Constants.DATEFORMAT1));else if ("Integer".equals(typeName) || "int".equals(typeName))field.set(o, Integer.parseInt(values[i]));else if ("Double".equals(typeName) || "double".equals(typeName))field.set(o, Double.parseDouble(values[i]));else if ("Float".equals(typeName) || "float".equals(typeName))field.set(o, Float.parseFloat(values[i]));else if ("Boolean".equals(typeName)|| "boolean".equals(typeName))field.set(o, Boolean.parseBoolean(values[i]));elsefield.set(o, values[i]);}}}
阅读全文
0 0
- java 反射 使用小技巧
- Java使用小技巧
- Java Socket使用小技巧
- C#,Java匿名方法使用小技巧
- Java enum枚举类使用小技巧
- java 反射小例
- java反射小例子
- java反射小例子
- java 反射小例子
- Java反射小例子
- java反射小例子
- Java反射小总结
- java反射小悟
- Java 反射小用
- JAVA反射小案例
- Java反射小练习
- Java反射小练习
- Java基础笔记杂糅&Java使用小技巧
- xcode4.* 小技巧
- 王立群-强势做人
- struts2.1.6中文乱码bug
- 字符编码(四)ASCII,Unicode,UCS,UTF,字符&&字符编码集
- Unity3D
- java 反射 使用小技巧
- multi-thread(二)ThreadGroup
- oracle 小知识点
- io-nio-socket步步为营(三)NIO
- oracle 报表 自己备份用
- io-nio-socket步步为营(四)异步AIO
- unity shader:深度纹理
- ajax prototype 修改 textbox 的值
- io-nio-socket步步为营(五)netty框架