2 weixin 38221608 weixin_38221608 于 2017.08.28 09:17 提问

请教大神,这个是注入的数据类型错了吗? 15C

如题:我用sql查数据,查出来后,在代码那里,死活来了个long类型不能注入到integer类型,我知道的办法都用了,哪位大神帮忙看下

这条sql,

select type, count(*) from lzh_member_discuz_logs group by type;

这是数据库结果

图片说明

    public DiscuzLogsDTO selectForfum() {
        List<Map<Integer, Integer>> list = discuzLogsDAO.selectForumPosts();
        DiscuzLogsDTO discuzLogsDTO = new DiscuzLogsDTO();
        for (Map<Integer, Integer> map2 : list) {
            if (map2.get("type") == 1) {
                logger.info("sendPosts :  {}",map2.get("count(*)"));
                System.out.println("1");
                《问题在这,debug走到这里,会报错,long不能注入到integer》
                Integer integer = map2.get("count(*)").intValue();
                System.out.println("2");
                discuzLogsDTO.setSendPosts(integer);
                System.out.println("3");
            }
            if (map2.get("type") == 2) {
                logger.info("backPosts :  {}",map2.get("count(*)"));
                discuzLogsDTO.setBackPosts(map2.get("count(*)").intValue());
            }
        }
        return discuzLogsDTO;
    }

求助~~

8个回答

zy841958835
zy841958835   Ds   Rxr 2017.08.28 11:02

Integer i = new Long(map2.get("count(*)")).intValue();
原始类型不能转换的

qq_33727653
qq_33727653   2017.08.28 09:28

把intValue()去掉也报错吗?看代码,你的map2 的key明明是Integer类型。但是为什么你map2取值get的时候怎么成了String型?

weixin_38221608
weixin_38221608 我也在奇怪...,其他取不出来啊...logger.info 能打印出值的,
3 个月之前 回复
SeaTalks
SeaTalks   2017.08.28 09:29

你代码里面map2的key和value的类型都是Integer,而调用了map2.get(字符串)方法,改为map2.get(0)或map2.get(1)

weixin_38221608
weixin_38221608 哥们 这个是取不到的, 你都没东西映射他
3 个月之前 回复
m0_38091006
m0_38091006   2017.08.28 09:35

map2.get("count(*)").intValue() 的值应该是Long类型的
List> 改为 List> 试试,

weixin_38221608
weixin_38221608 你这个应该被网站自动转义了吧...
3 个月之前 回复
qq_23292875
qq_23292875   2017.08.28 09:53

Long integer = map2.get("count(*)").intValue();

weixin_38221608
weixin_38221608 .intValue();本身就是把long转换成int, 这个map2.get(("count(*)"),他就是一个long类型的,我就是要把他换成integer
3 个月之前 回复
FluxMode
FluxMode   2017.08.28 09:58

(map2.get("type"))你这个map的key不是字符串吗? 你存储的时候不能使用 Map吗?

FluxMode
FluxMode "map<String,String>"
3 个月之前 回复
phenomenonsTell
phenomenonsTell   2017.08.28 10:17
/**
     * Returns the value of this {@code Long} as an {@code int} after
     * a narrowing primitive conversion.
     * @jls 5.1.3 Narrowing Primitive Conversions
     */
    public int intValue() {
        return (int)value;
    }
//这是intValue()的源码,你直接使用强制转换类型试试,不行应该是其他问题不是这里错了,你应该把报错的记录截图发出来,这样才能看得更具体一点
weixin_38221608
weixin_38221608 解决啦 ,谢谢
3 个月之前 回复
weixin_38221608
weixin_38221608   2017.08.28 10:23

问题解决了 , 谢谢大家 我是换了个玩法,感觉还是resultMap比resultType 的多...直接数据库跟对象映射...

Csdn user default icon
上传中...
上传图片
插入图片