只需一个就够(持久【一】)
来源:互联网 发布:php网站框架什么好 编辑:程序博客网 时间:2024/04/28 03:14
ResultSet
标准的JDBC关键类,通过Resulet可以获得jdbc运行的结果,它的结果不过可以组合成Key-Value形式,那就先把它转换成我们熟悉的Map再说;
public class RecordBuilder {public static List<Map<String, Object>> buildRecord(ResultSet rst) throws Exception {ResultSetMetaData rsmd = rst.getMetaData();List<Map<String, Object>> result = new ArrayList<Map<String, Object>>();int len = rsmd.getColumnCount();while (rst.next()) {Map<String, Object> colValue = new HashMap<String, Object>();for (int i = 1; i <= len; i++) {colValue.put(rsmd.getColumnName(i).toLowerCase(), rst.getObject(rsmd.getColumnName(i)));}result.add(colValue);}return result;}public static List<Class<?>> buildRecordToModel(ResultSet rst, Class<?> model) throws Exception {List<Map<String, Object>> value = buildRecord(rst);List<Class<?>> rs = new LinkedList<Class<?>>();for (Map<String, Object> tmp : value) {rs.add((Class<?>) ModelBuilder.generatorRecord(tmp, model));}return rs;}}
Class<?>
把Map转换为Bean, 很多大牛都是利用反射来实现的,虽说牺牲了一点性能,不过相比那些get,set感觉要爽多啦。
public class ModelBuilder {protected static final Logger log = Logger.getLogger(ModelBuilder.class);public static BaseModel generatorModel(Class<?> obj, HttpServletRequest request) throws Exception {Map<String, String[]> requestMap = request.getParameterMap();BaseModel real = (BaseModel) obj.newInstance();for (Entry<String, String[]> e : requestMap.entrySet()) {String paraKey = e.getKey();Object value = e.getValue()[0] != null ? e.getValue()[0] : "";real.set(paraKey, value);}log.info(real.getFieldDetail().toString());return real;}public static Object generatorRecord(Map<String, Object> value, Class<?> obj) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException, InstantiationException {Field[] srcFields = obj.getDeclaredFields();Object objClass = obj.newInstance();Set<String> fields = value.keySet();for (Field tmp : srcFields) {if (fields.contains(tmp.getName().toLowerCase())) {tmp.setAccessible(true);tmp.set(objClass, value.get(tmp.getName().toLowerCase()));}}return objClass;}}
0 0
- 只需一个就够(持久【一】)
- 只需一个就够(持久【二】)
- 只需一个就够(持久【二】)续
- 只需一个就够(控制器)
- 只需一个就够(日志)
- 只需一个就够(渲染)
- 一年只买卖一支股票就够了
- 当程序员变成设计师的时候:只需要一个浏览器就够了
- 你想学的一切,只需要这一个网站就够了
- 一个安慰就够了
- MIX2 适配看这一篇就够了,18:9 只需一行代码
- 给我一个微笑就够了
- 复杂的世界一个就够了
- 复杂的世界 一个就够了
- 人只需要成功一次就够了
- 全民营销,只看这篇文章就够了
- if( !ig.global.wm )只产生一次就够了
- Android填坑之旅(第十七篇)MIX2 适配看这一篇就够了,只需一行代码
- unity动态加载之AssetBundle应用
- activity禁止横竖屏切换
- Ubuntu安装JDK1.8
- Hibernate的HQL中in参数设置
- android反编译APK后,是smali文件,能反编译成dex文件
- 只需一个就够(持久【一】)
- HDU 1800 Flying to the Mars 【字符串hash(ELFhash算法) / map】
- 每个电子工程师都必须面对的15个问题
- 使用TextView和EditView控件
- java中的foreach循环
- 如何让Dialog在用户按下返回键也不消失
- 发现一篇不错的博文,和大家分享一下,为有志成为一名优秀前端工程师的童鞋们提供一个
- Bootstrap日期和时间表单组件运用兼容ie8
- word-wrap和word-break