当前位置: 首页 > 知识库问答 >
问题:

JDBCTemplate Boolean与BeanPropertyRowMapper的映射不正确

曾明诚
2023-03-14

我有一个带有用户表的标准MySql数据库。在这个表中有一个名为“isApproved”的TINYINT(4)

private boolean isApproved;
public boolean isApproved() {
    return isApproved;
}
public void setApproved(boolean isApproved) {
    this.isApproved = isApproved;
}
public UserBean findUserByUserName(String userName) {
    String sql = "SELECT * FROM User WHERE name = ?";
    return (UserBean)getJdbcTemplate().queryForObject(sql, new BeanPropertyRowMapper<UserBean>(UserBean.class), userName);
}
logger.debug("User from DB isApproved:"+userFromDb.isApproved());

即使数据库中有“1”,也会返回“false”。

我如何使这个映射正确,isApproved是“1”,这应该等同于true作为布尔值。

共有1个答案

百里承业
2023-03-14

Bean命名意味着您接受列名,然后调用setter方法setcolumnname,以及getter方法getcolumnname,但boolean方法名为iscolumnname除外。

您的列名为isapproved,因此标准bean名为setisapprovedisisapproved。看到问题了吗?

正如BeanPropertyRowMapper的javadoc所说:

select fname as first_name from customer

这意味着您不能使用select*,但没关系,因为您永远不应该在代码中使用select*。了解为什么SELECT*被认为是有害的吗?

*对于特殊查询或使用元数据分析结果列的动态数据查询非常方便。由于需要映射到特定的类,因此需要选择需要映射的列。

 类似资料:
  • 我有麻烦映射一个嵌套dto字段正确与MapStruct。我有几个DTO: 具有相应的映射器 到目前为止,一切工作都很好,生成的代码自动连接其他需要的映射器来正确地构建DTO。例如生成的仪器映射器实现 现在,当我试图创建一个包含嵌套工具dto的映射器时遇到了麻烦。映射器应使用instrumentMapper正确创建所需的dto。DTO: 映射器: 生成的代码: 现在media mapper得到了很好

  • 我通读了地图和地图分区之间的理论差异, 但我下面描述的问题更多地基于GC活动 = = 提前感谢。任何帮助都将不胜感激。

  • 我有一个wcf客户端,其中要求我同时使用证书和用户名安全性。 在我输出的头签名中,存在两个引用元素。一个映射(通过URI)到UsernameToken,我的理解是另一个引用元素应该映射到SecurityTokenReference,但它不是。 请注意,这个问题实际上是我的主要问题的一个子问题,我已经在如何使WCF客户端符合特定的WS-Security-SignUsernameToken和Secur

  • 问题内容: 我正在尝试设置控制器,但是很遗憾无法查看输出…一切都正确呈现。当我转到404页面时。从Netbeans运行我的应用程序转到 app-config.xml web.xml 我如何调试它,看看有什么用,什么没用? 更新资料 Netbeans中的GlassFish服务器日志显示 问题答案: 您的名字映射到中吗?从您先前的问题中,我看到: 网址不匹配格式。尝试一种可能的解决方法。

  • Elastic现在正在更新他们的文档,以便使用带有Java的RestHighLevelClient。它还有一个映射API: https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-put-mapping.html 还是RestHighLevelClient用于高性能操作,但对于初始配置