gpt4 book ai didi

java - 在 Spring 框架中获取模型类的单个对象

转载 作者:行者123 更新时间:2023-11-30 08:32:26 26 4
gpt4 key购买 nike

大家好,我在开发一个 spring 应用程序时卡在了一个地方。我正在做的是使用 spring rowmapper 从数据库中获取数据。问题是在实现 rowmapper 类时,模型类对象创建的行数正好是总行数的倍数,因此,如果表有 10 行,则创建模型类的 10 个对象。我只想创建该模型类的一个对象,所以我将模型类注入(inject)到 dao 类中,但结果是它只返回最后一行数据 10 次。

模型类

public class Item {
private String ItemId;
private String ItemName;
private String price;

// getter & setter
}

DAO 类

public class Itemdao {
private JdbcTemplate template;
private Item items;

public JdbcTemplate getTemplate() {
return template;
}

public void setTemplate(JdbcTemplate template) {
this.template = template;
}

public List<Item> getItem(){

return template.query("select * from item", new RowMapper<Item>(){

@Override
public Item mapRow(ResultSet rs, int rownum) throws SQLException
{
//Item item = new Item(); // Using this line I get 10 objects of model
items.setItemId(rs.getString(1));
items.setItemName(rs.getString(2));
items.setPrice(rs.getString(3));
return items;
}});
}

public Item getItems() {
return items;
}

public void setItems(Item items) {
this.items = items;
}
}

主类

public class test {
public static void main(String[] args) {
ApplicationContext context = new ClassPathXmlApplicationContext("spconfig.xml");
Itemdao dItemdao = (Itemdao)context.getBean("item");
List<Item> list = dItemdao.getItem();
for(Item i:list)
System.out.println(i);
}
}

Spring 配置

<beans>
<bean id="ds" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="jdbc:oracle:thin:@localhost:1521:xe" />
<property name="username" value="sandhya" />
<property name="password" value="2611798" />
</bean>

<bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
<property name="dataSource" ref="ds"/>
</bean>
<bean id="items" class="com.shopping.Item.Model.Item"/>
<bean id="item" class="com.shopping.Item.Model.Itemdao">
<property name="template" ref="jdbcTemplate"/>
<property name="items" ref="items"/>
</bean>

</beans>

最佳答案

使用 queryForObject() 而不是 query(),请参阅 JDBCTemplate 的 java 文档所有可用 API 的类。

引用这个示例

public Customer findByCustomerId(int custId){

String sql = "SELECT * FROM CUSTOMER WHERE CUST_ID = ?";

Customer customer = (Customer)getJdbcTemplate().queryForObject(
sql, new Object[] { custId }, new CustomerRowMapper());

return customer;
}

关于java - 在 Spring 框架中获取模型类的单个对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40153567/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com