Spring关于BeanPropertyRowMapper的使用说明

2024-07-02 17:57:53 浏览数 (1)

前言

首先,先介绍一下BeanPropertyRowMapper,BeanPropertyRowMapper是 Spring JDBC 模板中用于将查询结果的每一行数据映射到一个 Java Bean 的类,

本博客主要对本人第一次使用spring中JdbcTemplate用queryForObject(String sql, RowMapper<> rowMapper, Object… args),获取指定对象时,在数据库字段与bean属性名对应的情况(本人做了很多次修改),获取的值还是null,很烦恼,求助网上的大神,很是没有解决,本来想放弃,但是,回到bean中,发现set get方法没有加入public方法,抱着侥幸的心理试了一下,真的出结果了。对此本人对BeanPropertyRowMapper方法进行了总结。

注意事项

BeanPropertyRowMapper是Spring JDBC模板中用于将ResultSet中的数据映射到Java Bean对象的工具类。在使用BeanPropertyRowMapper时,需要注意以下几点:

  • 确保目标 Java Bean 的属性与数据库表的列相匹配,或者提供自定义的映射规则。
  • 如果数据库列名和 Java Bean 属性名之间存在不匹配的情况,可以使用别名来解决这个问题。例如,在 SQL 查询中使用 AS 关键字给列起别名,使其与 Java Bean 属性名一致。
  • 对于复杂的映射需求,可能需要考虑使用其他更高级的映射框架,如 MyBatis 或 Hibernate。

默认构造函数

确保Java Bean类具有默认构造函数(无参数构造函数)。BeanPropertyRowMapper需要使用默认构造函数来创建Java Bean实例。

代码语言:java复制
public class User {
    private int id;
    private String name;
    public User() {
    }

}

getter和setter方法

确保Java Bean类的属性具有公共的getter和setter方法。BeanPropertyRowMapper使用Java Bean的getter和setter方法来访问属性值。

代码语言:java复制
public class User {
    private int id;
    private String name;

    public int getId() {
        return id;

    }


    public void setId(int id) {
        this.id = id;
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {

        this.name = name;

    }

}

数据库字段

确保数据库表中的列名与Java Bean类的属性名匹配。BeanPropertyRowMapper使用列名来查找Java Bean的属性。如果列名与属性名不匹配,您需要使用别名在SQL查询中将列名映射到属性名。

代码语言:sql复制
SELECT id, name AS userName FROM users

一般,字段名字一样或者驼峰式与下划线式对应,属性明首字母小写,个人建议bean的属性名称按照数据库字段来写,这样能够避免映射错误。

SpringJDBC BeanPropertyRowMapper 查询的时候 一般的数据库字段都可以正常映射到 bean!

字段 –> bean属性

USER_NAME –> userName

USER_ID –> userId

这样sql查询不必转化别名,BeanPropertyRowMapper会自动匹配。

访问修饰符

如果您使用的是访问修饰符(如privateprotectedpackage-private)来限制Java Bean类的访问权限,请确保getter和setter方法具有适当的访问级别。BeanPropertyRowMapper需要访问这些方法来设置属性值。

代码语言:java复制
public class User {
    private int id;
    private String name;

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {

        this.name = name;

    }

}

本人出现的问题就是快捷键生成get set方法时,忘记加入public,导致方法为默认值,BeanPropertyRowMapper不能访问。

总结

总之,在使用BeanPropertyRowMapper时,请确保Java Bean类具有默认构造函数,属性具有公共的getter和setter方法,数据库表中的列名与Java Bean类的属性名匹配,以及getter和setter方法具有适当的访问级别。这样,您就可以使用BeanPropertyRowMapperResultSet中的数据映射到Java Bean对象了。

我正在参与2024腾讯技术创作特训营最新征文,快来和我瓜分大奖!

0 人点赞