我正在尝试使用jdbctemplate。阅读this,我已经到达了使用代码List<Map> rows = getJdbcTemplate().queryForList(sql);
的第2部分。当我尝试在我的代码中实现它时,eclipse
迫使我使用Map<String,Object>
而不是简单Map
,如教程中那样。
我是java的新手,所以我不知道如何访问我的数据库列Map<String,Object>
。
我们该怎么做?
下面的代码是否正常?
List<Map<String,Object>> rows = getJdbcTemplate().queryForList(sql);
for (Map<String,Object> row : rows) {
Customer customer = new Customer();
customer.setCustId((Long)(row.get("CUST_ID")));
customer.setName((String)row.get("NAME"));
customer.setAge((Integer)row.get("AGE"));
customers.add(customer);
}
return customers;
更新
以下是我使用此代码获得的错误
输入例外报告
消息请求处理失败;嵌套异常是 java.lang.ClassCastException:java.math.BigDecimal无法强制转换为 java.lang.String中
description服务器遇到阻止它的内部错误 完成此请求。
例外
org.springframework.web.util.NestedServletException:Request 处理失败;嵌套异常是java.lang.ClassCastException: java.math.BigDecimal无法强制转换为java.lang.String org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:982) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
根本原因
java.lang.ClassCastException:java.math.BigDecimal无法强制转换为 java.lang.String中 com.projet.testjdbc2.ArticleDAO.listerLesArticles(ArticleDAO.java:20) com.projet.testjdbc.HomeController.home2(HomeController.java:78) sun.reflect.NativeMethodAccessorImpl.invoke0(原生方法) sun.reflect.NativeMethodAccessorImpl.invoke(未知来源) sun.reflect.DelegatingMethodAccessorImpl.invoke(未知来源) java.lang.reflect.Method.invoke(未知来源) org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:205) org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:133) org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827) org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738) org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85) org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963) org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897) org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970) org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861) javax.servlet.http.HttpServlet.service(HttpServlet.java:622) org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846) javax.servlet.http.HttpServlet.service(HttpServlet.java:729) org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
答案 0 :(得分:0)
很难相信这些字段中的任何字段都是//...
mockContext
.Setup(_ => _.Set<HolidayCalendar>())
.Returns(_mockHolidayCalendar.Object);
//...
开头,但无论哪个字段,都不会将其转换为 _mockHolidayCalendar.SetSource(holidays)
:将其转换为BigDecimal
。明显。
它与String
与 BigDecimal
没有任何关系。