【发布时间】:2023-04-04 14:08:01
【问题描述】:
我正在尝试使用 Spring Jdbctemplate 从数据库中获取记录。在 JdbcTemplate 中,我试图通过使用 BeanPropertyRowMapper 类来自动化数据绑定...我的数据库表列名称-类型和模型对象字段名称-类型相同...我实现了这个 API,但没有得到预期的结果。对于 int 和 double 字段,我得到 0 和 0.0 值,即使这些是数据库中的不同值...
请帮忙解决这个问题...我的代码如下,
@Override
public DiscountDetail getDiscountDetailById(int ID) throws ServiceException
{
String sql = "SELECT * FROM TBL_DISCOUNT where Id="+ID;
logger.info("sql :"+sql);
List<DiscountDetail> discounts = jdbcTemplate.query(sql, new BeanPropertyRowMapper(DiscountDetail.class));
if (discounts.size() == 1) {
logger.info("discount :"+discounts.get(0).toString());
return discounts.get(0);
}
return null;
}
DescountDetail.java
公共类 DiscountDetail 扩展了 GenericEntity{
private int discountId,higherLimit,lowerLimit;
private double discountPercentage;
public int getDiscountId() {
return discountId;
}
public void setDiscountId(int discountId) {
this.discountId = discountId;
}
public int getHigherLimit() {
return higherLimit;
}
public void setHigherLimit(int higherLimit) {
this.higherLimit = higherLimit;
}
public int getLowerLimit() {
return lowerLimit;
}
public void setLowerLimit(int lowerLimit) {
this.lowerLimit = lowerLimit;
}
public double getDiscountPercentage() {
return discountPercentage;
}
public void setDiscountPercentage(double discountPercentage) {
this.discountPercentage = discountPercentage;
}
public String toString()
{
StringBuffer sb = new StringBuffer("");
sb.append("discountId: " + discountId);
sb.append(", higherLimit:" + higherLimit);
sb.append(", lowerLimit:" + lowerLimit);
sb.append(", discountPercentage:" + discountPercentage);
sb.append(super.toString());
return sb.toString();
}
}
--
-- Table structure for table `TBL_DISCOUNT_DETAIL`
--
CREATE TABLE `TBL_DISCOUNT_DETAIL` (
`Id` int(11) NOT NULL,
`DiscountId` int(11) NOT NULL,
`HigherLimit` int(11) NOT NULL,
`LowerLimit` int(11) NOT NULL,
`DiscountPercentage` double NOT NULL,
`CreatedOn` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`CreatedBy` varchar(100) NOT NULL,
`UpdatedOn` timestamp NULL DEFAULT NULL,
`UpdatedBy` varchar(100) DEFAULT NULL,
`VersionId` int(11) NOT NULL DEFAULT '1'
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
实际输出:
2018-05-08 01:28:15 INFO InventoryDAO:1052 - sql :SELECT * FROM TBL_DISCOUNT where Id=30 2018-05-08 01:28:15 INFO InventoryDAO:1056 - 折扣:discountId: 0, higherLimit:0, lowerLimit:0, discountPercentage:0.0:ID[30]:由 SYSTEM 于 2018-05-07 19:06:42.0 创建,由 Rahul 于 2018-05-07 19:06:42.0:V[2] 更新 p>
预期输出:
2018-05-08 01:28:15 INFO InventoryDAO:1052 - sql :SELECT * FROM TBL_DISCOUNT where Id=30 2018-05-08 01:28:15 INFO InventoryDAO:1056 - 折扣:discountId: 1, higherLimit:5, lowerLimit:20, discountPercentage:5.0:ID[30]:由 SYSTEM 于 2018-05-07 19:06:42.0 创建,由 Rahul 于 2018-05-07 19:06:42.0:V[2] 更新 p>
【问题讨论】:
-
您可能应该为您的 SQL 使用准备好的语句来开始。此外,需要列名来验证 Bean Mapper 是否按预期工作。
-
@Compass....我这边犯了一个愚蠢的错误...我输入了错误的表名...谢谢...
标签: java spring jdbctemplate spring-orm