如何使用Map <string,object>就好像它只是一个简单的Map

时间:2017-05-20 10:54:03

标签: java spring

我正在尝试使用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)

1 个答案:

答案 0 :(得分:0)

很难相信这些字段中的任何字段都是//... mockContext .Setup(_ => _.Set<HolidayCalendar>()) .Returns(_mockHolidayCalendar.Object); //... 开头,但无论哪个字段,都不会将其转换为 _mockHolidayCalendar.SetSource(holidays):将其转换为BigDecimal。明显。

它与String BigDecimal没有任何关系。