Spring JdbcTemplate实现通用的泛型dao四:通用自定义转换到JavaBean的RowMapper实现
来源:互联网 发布:淘宝类目有哪些 编辑:程序博客网 时间:2024/06/07 05:55
使用Spring JdbcTemplate查询出数据以后,默认返回的是Map,列名为key,值为value,为了方便操作自然要转换到我们的JavaBean实体对象,spring也提供了一个常规的通用操作类和方法,BeanPropertyRowMapper.newInstance(entityClazz),可以完成一般的转换,前提是表的列名和类的属性名必须一致,下划线分隔的貌似也行,没有进行测试。但前面提到我表中的列名为了防止冲突,都是以“_”开头的,并且以“_”分隔,在实际运行中发现BeanPropertyRowMapper并不能完成转换,没办法只能自己实现一个了。
同样用到了Java的反射和名称的转换,原理上和构建sql时是差不多的。要实现自定义的转换必须实现spring提供的RowMapper <T>接口,下面是代码:
- /**
- * 默认通用类型映射转换
- *
- * User: liyd
- * Date: 2/12/14
- * Time: 10:02 PM
- */
- public class DefaultRowMapper implements RowMapper<Object> {
- /** 转换的目标对象 */
- private Class<?> clazz;
- /** 名称处理器 */
- private NameHandler nameHandler;
- public DefaultRowMapper(Class<?> clazz, NameHandler nameHandler) {
- this.clazz = clazz;
- this.nameHandler = nameHandler;
- }
- @Override
- public Object mapRow(ResultSet resultSet, int i) throws SQLException {
- Object entity = ClassUtils.newInstance(this.clazz);
- BeanInfo beanInfo = ClassUtils.getSelfBeanInfo(this.clazz);
- PropertyDescriptor[] pds = beanInfo.getPropertyDescriptors();
- for (PropertyDescriptor pd : pds) {
- String column = nameHandler.getColumnName(pd.getName());
- Method writeMethod = pd.getWriteMethod();
- if (!Modifier.isPublic(writeMethod.getDeclaringClass().getModifiers())) {
- writeMethod.setAccessible(true);
- }
- try {
- writeMethod.invoke(entity, resultSet.getObject(column));
- } catch (Exception e) {
- throw new MincoderException(e);
- }
- }
- return entity;
- }
- }
这样就大功告成了,想不到一点点内容写出来也有这么多,可能是我总结的不好吧。
0 0
- Spring JdbcTemplate实现通用的泛型dao四:通用自定义转换到JavaBean的RowMapper实现
- Spring JdbcTemplate实现通用的泛型dao四:通用自定义转换到JavaBean的RowMapper实现
- Spring JdbcTemplate实现通用的泛型dao二:实现自己的名称转换NameHandler
- Spring JdbcTemplate实现通用的泛型dao二:实现自己的名称转换NameHandler
- Spring JdbcTemplate实现通用的超级dao,比泛型dao更加强大
- [转]Spring JdbcTemplate实现通用的超级dao,比泛型dao更加强大
- Spring JdbcTemplate实现通用的泛型dao一:主功能实现
- spring JdbcTemplate实现通用的泛型dao一:主功能实现
- Spring JdbcTemplate实现通用的泛型dao三:构建动态sql
- Spring JdbcTemplate实现通用的泛型dao三:构建动态sql
- 一个通用dao的实现
- 一个通用dao的实现
- DAO层通用实现,结果集ResultSet转化为javaBean的反射实现,自动生成javaBean
- 用JDBCTemplate实现的单表通用DAO,实现增删改查和统计
- C#通用DAO实现(四)
- 基于泛型的通用Dao接口hibernate实现
- 使用Spring的JdbcTemplate实现DAO
- 完美的mybatis通用dao实现
- 强制注入bean的方法
- 厉害了word黑客,这些被誉为2016年十大网络安全事件
- objc.io 1.3 测试驱动 (转)
- eclipse中创建maven dynamic web 3.0项目
- Zhao Jinglei: ReadSense Ltd Pay more attention to the commercialization of the ground, research AI c
- Spring JdbcTemplate实现通用的泛型dao四:通用自定义转换到JavaBean的RowMapper实现
- css3动画的一些chromium的堆栈
- 【前端】【head部分】 rel='stylesheet'
- 检测浏览器是否是手机
- android 沉浸式状态栏(像ios那样的状态栏与应用统一颜色样式)
- C# 异步与线程
- 关于更改js文件浏览器不能同步更新的问题
- iOS开发 高德地图 解决点击大头针跳转页面 返回无法点击的问题
- 如何实现pushViewController:animated:的不同页面转换特效?