微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何遍历MyBatis中的动态列表并访问列表中的对象

如何解决如何遍历MyBatis中的动态列表并访问列表中的对象

我想遍历列表,获取对象的名称,并将该名称数据库中的记录进行匹配。然后获取该记录。

我尝试在Mybatis中使用foreach标记,但作为回报,我只得到一个空列表。请帮帮我,指出我是否有任何错误

作为参考,我附加了我的Service实现,DAO,映射器和我正在使用的列表类。

服务实施

String jsonStr = "[{\"name\":\"first \",\"value\":\"1 \"},{\"name\":\"second\",\"value\":\"2\"},{\"name\":\"third\",\"value\":\"3\"},{\"name\":\"fourth\",\"value\":\"4\"}]";

List<PaymentCommon.CampaignsRsp> list = null;
        try { // creating a list from the json String
            list = mapper.readValue(jsonStr,new TypeReference<List<PaymentCommon.CampaignsRsp>>(){});
        } catch (IOException e) {
            e.printstacktrace();
        }

if(JudgeUtils.isNotEmpty(rsp.getCampaigns())) {
            listRsp = cmmClmWhitelistingDao.getCampaigns(list); // calling the method
        }
        else System.out.println("LIST IS EMPTY");

DAO

package com.hisun.lemon.cmm.dao;

import com.hisun.lemon.cio.dto.common.PaymentCommon;
import com.hisun.lemon.cmm.entity.CmmClmCampaignDO;
import com.hisun.lemon.framework.dao.BaseDao;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;

@Mapper
public interface ICmmClmWhitelistingDao extends BaseDao {
    List<CmmClmCampaignDO> getCampaigns(List<PaymentCommon.CampaignsRsp> campaignList);
}

映射器

<select id="getCampaigns" resultMap="BaseResultMap" >
    SELECT campaign.campaign_id,campaign.campaign_name,FROM clm_campaign campaign
    WHERE campaign.campaign_name IN
    <foreach item="id" collection="list" open="[{" separator="},{" close="}]" >
        #{id.name}
    </foreach>
</select>

PaymentCommon.class

 @Json
    public static class CampaignsRsp {
        @Item
        private String name;
        @Item
        private String value;

        public CampaignsRsp() {
        }

        public String getName() {
            return this.name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getValue() {
            return this.value;
        }

        public void setValue(String value) {
            this.value = value;
        }

        public String toString() {
            return ToStringBuilder.reflectionToString(this);
        }
    }

解决方法

我找到了解决方法。

我现在从List 获取名称,并简单地列出这些名称。然后,我将该列表传递给映射器,从而简化了对该列表的迭代。 另外,我在DAO中缺少@Param注释,所以我添加了它。

这种方法可以从数据库中获取所需的数据。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。