【问题标题】:arraylist/list RESTful web service jsonarraylist/list RESTful Web 服务 json
【发布时间】:2016-05-04 09:21:38
【问题描述】:

您好,我想问一下网络服务,如何将值从数据库显示到地图?

这是我的代码

    @GET
    @Path("/jurusan/{kode_jurusan}")
    @Produces(MediaType.APPLICATION_JSON)    
    public Map getMatkulByjurusan(@PathParam("kode_jurusan") String kode_jurusan){
        Map<String, Object> rs = new HashMap<String, Object>();
        rs.put("Pesan", "Berhasil");
        System.out.println("Jurusan "+kode_jurusan);
        try {
            createConnection();
            MyMap matkul =(MyMap) jt.queryObject("select matkul from tb_matkul where kode_jurusan = ?", new Object[] {kode_jurusan}, new MyMap());
            closeConnection();
            if(matkul != null){
                rs.put("result", matkul);
            }
        } catch (Exception e) {
            rs.put("Pesan", "Gagal karena : " +e.getMessage());
        }
        return rs;
    }

}

但当我尝试访问 http://localhost:9090/Service/matkul/jurusan/40 时,我收到以下消息:

{"Pesan":"Gagal karena : Incorrect result size: expected 1, actual 14"}

这个 MyMap 类

public class MyMap implements Serializable, RowMapper{
    private static final long serialVersionUID = -8840406844877458198L;
    public HashMap<String, Object> map = new HashMap<String, Object>();

    public HashMap<String, Object> getMap() {
        return map;
    }

    public Object mapRow(ResultSet rs, int rowNum) throws SQLException {
        MyMap dto=new MyMap();
        int rowCount = rs.getMetaData().getColumnCount();
        for (int i = 1; i <= rowCount; i++) {
            dto.map.put(rs.getMetaData().getColumnLabel(i), rs.getObject(i));
        }
        return dto;
    }

    public void put(String name, Object o){
        map.put(name, o);
    }

    public Object get(String name){
        return map.get(name);
    }

    public String getString(String name){
        return (String)map.get(name);
    }

    public Integer getInt(String name){
        return (Integer)map.get(name);
    }

    public Date getDate(String name){
        return (Date)map.get(name);
    }

    public BigDecimal getBigDecimal(String name){
        return (BigDecimal)map.get(name);
    }


}

【问题讨论】:

    标签: java json list web-services restful-url


    【解决方案1】:

    使用queryForList 方法代替queryObject

    您可以找到一个示例,使用来自here 的 jdbcTemplate 将多行映射到列表。

    【讨论】:

    • thks Sharma,我不明白如何使用 queryForList,你能用我的代码编写示例吗?
    • 能否分享一下 tb_matkul 的列名
    • 我在 db 中的专栏 var kode_matkul, matkul, kode_jurusan;浮动sks
    【解决方案2】:

    看起来问题出在数据库查询上,正如异常所说,查询只需要 1 行作为结果,它会产生 14 行。

    此外,根据您使用的框架,您可能应该提供一种序列化 MyMap 类的方法

    【讨论】:

    • 你好,你能告诉我 MyMap 课程有什么问题吗?谢谢
    猜你喜欢
    • 2017-03-14
    • 2012-01-09
    • 2014-09-01
    • 2023-03-30
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多