首页 > 移动平台 > 详细

BeanPropertyRowMapper浅谈

时间:2020-06-24 17:03:08      阅读:175      评论:0      收藏:0      [点我收藏+]

BeanPropertyRowMapper

使用BeanPropertyRowMapper将数据库查询结果转换为Java类对象。

一、应用

常应用于使用Spring的JdbcTemplate查询数据库,获取List结果列表,数据库表字段和实体类自动对应。
示例:

@Override
public List<Demo> findAll() {
    String sql = "SELECT * FROM user";
    /**
     * BeanPropertyRowMapper将查询结果转换为类对象
     */
    return jdbcTemplate.query(sql, new BeanPropertyRowMapper(Demo.class));
}

@Override
public List<Demo> selectUser(int uid) {
    String sql = "SELECT * FROM user WHERE id = ?";
    /**
     * 带条件查询
     */
    return jdbcTemplate.query(sql, new Object[]{uid}, new BeanPropertyRowMapper(Demo.class));
}

 

二、内部实现浅析

 
技术分享图片
BeanPropertyRowMapper的initialize内部实现

如上图红框中所示:

  • mapperFields是一个HashMap,用来匹配Java对象的属性和MySQL表的字段名的。mapperFields中存放的是所有可能与MySQL表的字段名映射上的那些Java属性名字。

  • this.mappedFields.put(this.lowCaseName(pd.getName()),pd);
    initialize方法中,BeanPropertyRowMapper会把传入的泛型Java类的所有属性名称的全小写形式放入mapperFields中,

  • String underscoredName = this.underscoreName(pd.getName());
    Java类的属性名转化成下划线分割的形式,如userName会被转化成user_name,这是因为:
    数据库设计字段名称,一般会使用下划线分割形式,如:user_name
    Java类设置属性,一般使用驼峰命名形式,如:userName

  • 另外需要知道 BeanPropertyRowMapper 实现了RowMapper接口,jdbcTemplate的query方法中参数也是 jdbc.core.RowMapper 类型。
  • public class BeanPropertyRowMapper <T> implements org.springframework.jdbc.core.RowMapper<T>

RowMapper用来把数据库中的列字段和java bean中属性对应上

使用BeanPropertyRowMapper自动绑定,需要确保数据库表列名称与Java实体类属性名称相同。

总之,命名要遵循代码规范!

BeanPropertyRowMapper浅谈

原文:https://www.cnblogs.com/douzihedouyacai/p/13188209.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!