query过程都可以进行数据类型自动转换,而且不仅仅按标准命名,还可以支持下划线分隔后拼接成驼峰式字符
完全轻量级.
BeanPropertyRowMapper/ParameterizedBeanPropertyRowMapper ,如果PO和数据库模型的字段完全对应(字段名字一样或者驼峰式与下划线式对应),如果使用JdbcTemplate则可以使用这个RowMapper作为PO和数据库的映射

Spring 2.5 提供了一个便利的RowMapper实现-----BeanPropertyRowMapper

它可自动将一行数据映射到指定类的实例中 它首先将这个类实例化,然后通过名称匹配的方式,映射到属性中去。

例如:属性名称(vehicleNo)匹配到同名列或带下划线的同名列(VEHICLE_NO)。

如果某个属性不匹配则返回属性值为Null;

//用BeanPropertyRowMapper自动匹配

new BeanPropertyRowMapper(User.class)

SpringJDBC BeanPropertyRowMapper  查询的时候 一般的数据库字段都可以正常映射到 bean!
  字段          bean属性
USER_NAME --> userName
USER_ID   --> userId

但是碰到一些特殊的(暂不考虑命名是否合理)这就映射不上了!
比如:
ORDER_NUM2   --> OrderNum2 (should be orderNum2)
ORDER_NUM_3      OrderNum3

spring 提供框架的同时还提供了一种规范,包括命名规范,自动转换就会要求你javabean的成员变量命名符合规则,这个确实不太好搞,匹配不成功就变成null。
BeanPropertyRowMapper是根据字段名和实体类中的标准Setter方法进行映射滴。也就是说,我们需要使表中的字段名和实体类的成员变量名称一致。

大概看了下源码,ORDER_NUM2   --> OrderNum2 ORDER_NUM_3-->  OrderNum3映射是有问题的。

protected void initialize(Class<T> mappedClass) {
this.mappedClass = mappedClass;
this.mappedFields = new HashMap<String, PropertyDescriptor>();
this.mappedProperties = new HashSet<String>();
PropertyDescriptor[] pds = BeanUtils.getPropertyDescriptors(mappedClass);
for (PropertyDescriptor pd : pds) {
if (pd.getWriteMethod() != null) {
this.mappedFields.put(pd.getName().toLowerCase(), pd);
String underscoredName = underscoreName(pd.getName());
if (!pd.getName().toLowerCase().equals(underscoredName)) {
this.mappedFields.put(underscoredName, pd);
}
this.mappedProperties.add(pd.getName());
}
}
}

/**
* Convert a name in camelCase to an underscored name in lower case.
* Any upper case letters are converted to lower case with a preceding underscore.
* @param name the string containing original name
* @return the converted name
*/
private String underscoreName(String name) {
StringBuilder result = new StringBuilder();
if (name != null && name.length() > 0) {
result.append(name.substring(0, 1).toLowerCase());
for (int i = 1; i < name.length(); i++) {
String s = name.substring(i, i + 1);
if (s.equals(s.toUpperCase())) {
result.append("_");
result.append(s.toLowerCase());
}
else {
result.append(s);
}
}
}
return result.toString();
}
着重看下underscoreName()方法,映射的字段只能映射到camel的javabean属性,所以你的映射是不是应该这样子的:ORDER_NUM2->orderNum2

BeanPropertyRowMapper使用注意事项相关推荐

  1. C++ OP相关注意事项

    C++ OP相关注意事项 Paddle中Op的构建逻辑 1.Paddle中Op的构建逻辑 Paddle中所有的Op都继承自OperatorBase,且所有的Op都是无状态的,每个Op包含的成员变量只有 ...

  2. Hashing散列注意事项

    Hashing散列注意事项 Numba支持内置功能hash(),只需__hash__()在提供的参数上调用成员函数即可 .这使得添加对新类型的哈希支持变得微不足道,这是因为扩展APIoverload_ ...

  3. android 读取asset下的文件注意事项

    注意事项:file:后面是三个斜杠,后面是android_asset,在后面就是html的名字.

  4. Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项(转)

    Djang1.8+Python2.0迁移到Django2.0+Python3.6注意事项 参考:https://blog.csdn.net/weixin_40475396/article/detail ...

  5. 【整理】NSTimer使用及注意事项

    一.NSTimer的创建 // 创建一个定时器,但是么有添加到运行循环,我们需要在创建定时器后手动的调用 NSRunLoop 对象的 addTimer:forMode: 方法. + (NSTimer ...

  6. WIN7源码安装Apache和PHP注意事项

    安装注意事项. 你注意下下载PHP,Apache的网站,上面有提示要安装Visual C++库的. Apache2.4.4需要VC10库支持,Microsoft Visual C++ 2010 SP1 ...

  7. html语言书写注意事项,CSS命名规范参考及书写注意事项

    CSS书写顺序 *{ /*显示属性*/ display position float clear cursor - /*盒模型*/ margin padding width height /*排版*/ ...

  8. 安川g7接线端子图_西门子SIWAREX称重模块安装接线注意事项!

    与称重变送器和称重仪表不同,SIWAREX系列称重模块可以直接接收称重传感器输出的mV信号,并与西门子控制系统(包括S7 200/300/1200/ET200M/ ET200S)无缝集成,具有扩展灵活 ...

  9. 前端 重构时需要注意的事项_驾驶式扫地车的功能特点和使用时需要注意事项...

    扫地车 随着经济的发展,人们的生活水平不断提高,对生活环境的要求也越来越高,于是许多工厂.物业.超市.社区.市政单位等开始购买扫地车来进行路面清洁.一是清洗效果好,二是效率高,可以节省人工成本.扫地车 ...

最新文章

  1. 如何统计各个班级的相关数据(如班级排名、最高分等)呢?
  2. python企业微信回调_python 微信企业号-回调模式接收微信端客户端发送消息并被动返回消息...
  3. 隐私计算--联邦学习
  4. [开源]基于姿态估计的运动计数APP开发(三)
  5. leetcode16 3-Sum
  6. 更换S60第三版程序图标
  7. [转]vs2003,安装程序检测到另一个程序要求计算机重新启动
  8. javascript 之牛人感悟,必看学习
  9. 优化模型:钢管订购及运输优化模型
  10. 得力人脸识别考勤机密码设置_人脸指纹混合识别考勤机得力怎么使用
  11. Java项目:文具学习用品商城系统(java+SSM+JSP+jQuery+Mysql)
  12. UVC之MJPEG流
  13. Adobe Audition 2022 v22.2 U2B macOS 专业的音频工作站
  14. 小学生计算机校本课程教材,二年级校本课程教材
  15. 黑发奶奶曾世鑫的养生经
  16. 机器学习之Matplotlib
  17. CVPR 2019 ViLBERT: Pretraining Task-Agnostic Visiolinguistic Representations for Vision-and-Language
  18. java 内存压缩_JVM之指针压缩内存如何设置
  19. C语言利用uthash.h实现hashmap
  20. 微信图片怎么添加竖排文字_如何给微信里的图片添加上文字和日期?

热门文章

  1. python训练聊天机器人_一个可以进行训练的聊天机器人,一次chat的源码
  2. div生成图片_Vue生成分享海报(含二维码)
  3. libcurl库的异步用法
  4. 解决TeXstudio外部查看器失败方法
  5. 人生实苦,可这就是人生
  6. 【写法规范】-- 设计请求返回接口与封装
  7. 《专门替中国人写的英语语法》(四)
  8. 最大化 AIX 上的 Java 性能,第 3 部分: 更多就是更好
  9. Redis介绍以及安装(Linux与windows)
  10. OSMeteorTranslationAPI(百度,有道)对比