ibatis查询返回List<String> 、List<Map>。

本文介绍了一个使用MyBatis实现的动态SQL查询案例,包括定义实体类、配置SQL映射文件及DAO层接口的方法。展示了如何通过实体类参数动态生成SQL查询语句,并获取不同类型的数据集合。

1、sqlmapl 中 内容如下 com.commsoft.sys.project.model.PmFielddefineExt 为定义的实体类,自行修改

<typeAlias alias="alias_pmfielddefineExt" type="com.commsoft.sys.project.model.PmFielddefineExt"/>

<!-- 返回List<String> -->

<select id="getOrderidSql"  resultClass="java.lang.String" parameterClass="alias_pmfielddefineExt">

       select  id  from pm_fieldrecord
       <dynamic prepend="where">
           <isNotEmpty prepend="and" property="sqlstr">
               $sqlstr$
           </isNotEmpty>
       </dynamic>

    </select>

<!-- 返回List<Map> -->

<select id="getSynMsg" parameterClass="alias_pmfielddefineExt" remapResults="true" resultClass="java.util.HashMap">
        select id,orderid,fieldid,valuecode from  pm_fieldrecord  
    </select>

2、dao 层

//List<String>

public List<String> getOrderidSql(PmFielddefineExt object)

throws SQLException {
     return (List<String>) sqlMapClient.queryForList("getOrderidSql", object);

}

//List<Map>

public List<Map> getSynMsg(PmFielddefineExt object) throws Exception {
return (List<Map>)sqlMapClient.queryForList("getSynMsg",object);

}

3、使用。主要说下List<Map>

List<Map> list = interDAO.getSynMsg(new PmFielddefineExt());

if (null != list && list.size() > 0) {
Map map = list.get(0);
String id = map.get("id").toString();
String orderid = map.get("orderid").toString();
String fieldid = map.get("fieldid").toString();
String valuecode = map.get("valuecode").toString();

package cn.com.cgnpc.dataHandleV2.service.old.impl; import cn.com.cgnpc.common.constant.Constant; import cn.com.cgnpc.dataHandle.entity.EcpWidePurchaseInfo; import cn.com.cgnpc.dataHandleV2.mapper.EcpWidePurchaseInfoV2Mapper; import cn.com.cgnpc.dataHandleV2.vo.PurchaserVo; import cn.com.cgnpc.dataHandleV2.vo.SyncDataVo; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.date.DateTime; import cn.hutool.core.date.DateUtil; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.xxl.job.core.context.XxlJobHelper; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.apache.ibatis.session.ResultHandler; import org.springframework.stereotype.Service; import java.util.*; @Service public class EcpWidePurchaseInfoV2Service extends ServiceImpl<EcpWidePurchaseInfoV2Mapper, EcpWidePurchaseInfo> { public void getListForStream(Map<String, Object> map, ResultHandler<EcpWidePurchaseInfo> handler){ getBaseMapper().getListForStream(map, handler); } public void getReportGzwList(Map<String, Object> map, ResultHandler<EcpWidePurchaseInfo> handler){ getBaseMapper().getReportGzwList(map, handler); } public void getTerminatedReportGzwList(Map<String, Object> map, ResultHandler<EcpWidePurchaseInfo> handler){ getBaseMapper().getTerminatedReportGzwList(map, handler); } public List<EcpWidePurchaseInfo> getWidePurchaseList(List<String> tenderIds){ return getBaseMapper().getWidePurchaseList(tenderIds); } public List<EcpWidePurchaseInfo> getWideDataBySubTenderNos(List<String> subTenderNos){ return getBaseMapper().getWideDataBySubTenderNos(subTenderNos); } public void batchInsert(List<EcpWidePurchaseInfo> list, int batchSize){ if (CollectionUtils.isNotEmpty(list)){ List<EcpWidePurchaseInfo> batchResultList = new ArrayList<>(); int size = list.size(); int idxLimit = Math.min(batchSize, size); int i = 1; Iterator<EcpWidePurchaseInfo> iterator = list.iterator(); for(; iterator.hasNext(); ++i) { EcpWidePurchaseInfo next = iterator.next(); batchResultList.add(next); if (i == idxLimit) { getBaseMapper().batchInsert(batchResultList); idxLimit = Math.min(idxLimit + batchSize, size); batchResultList.clear(); } } } } public int delByFindDataTime(Map<String, Object> map){ return getBaseMapper().delByFindDataTime(map); } public int deleteBatchIds(List<String> ids, int batchSize) { if (CollectionUtils.isNotEmpty(ids)){ int delNums = 0; List<String> batchResultList = new ArrayList<>(); int size = ids.size(); int idxLimit = Math.min(batchSize, size); int i = 1; Iterator<String> iterator = ids.iterator(); for(; iterator.hasNext(); ++i) { String next = iterator.next(); batchResultList.add(next); if (i == idxLimit) { int batchDelNums = getBaseMapper().deleteBatchIds(batchResultList); delNums = batchDelNums + delNums; idxLimit = Math.min(idxLimit + batchSize, size); batchResultList.clear(); } } return delNums; } return 0; } public void truncateTableData(Map<String, Object> map) { DateTime startDate = (DateTime) map.get(Constant.STR_START_DATE); DateTime parse = DateUtil.parse("2020-01-01"); if (startDate.compareTo(parse) <= 0){ getBaseMapper().truncateTableData(); XxlJobHelper.log("删除整表数据完成!跑数开始时间: {}", DateUtil.formatDate(startDate)); } } public List<EcpWidePurchaseInfo> getProjRenewList(Map<String, Object> queryMap) { return getBaseMapper().getProjRenewList(queryMap); } /** * 根据更新记录表 获取更新的项目 */ public List<EcpWidePurchaseInfo> getRenewProjList(SyncDataVo syncData){ return getBaseMapper().getRenewProjList(syncData); } public List<EcpWidePurchaseInfo> getWidePurchaseListBysubTenderIds(List<String> subTenderIds) { return getBaseMapper().getWidePurchaseListBysubTenderIds(subTenderIds); } public List<EcpWidePurchaseInfo> getProjPurchaserByContractId(String contractId) { return getBaseMapper().getProjPurchaserByContractId(contractId); } public List<EcpWidePurchaseInfo> getProjectBaseInfoList(Map<String, String> paramMap) { if(paramMap == null){ return new ArrayList<>(); } return getBaseMapper().getWidePurchaseInfoList(paramMap); } /** * 通过项目ID获取框架子订单关联项目 * * @param subTenderIds2 * @return */ public List<EcpWidePurchaseInfo> getWidePurchaseByFrameOrder(List<String> subTenderIds2) { if (CollectionUtils.isEmpty(subTenderIds2)) { return new ArrayList<>(); } return getBaseMapper().getWidePurchaseByFrameOrder(subTenderIds2); } /** * 通过合同号获取框架子订单关联项目 * @param contractNos * @return */ public List<EcpWidePurchaseInfo> getWidePurchaseByOrderNo(List<String> contractNos) { List<EcpWidePurchaseInfo> results = new ArrayList<>(); if (CollectionUtils.isEmpty(contractNos)){ return results; } List<List<String>> partitions = CollectionUtil.split(contractNos, Constant.BATCH_SIZE); for (List<String> partition : partitions) { List<EcpWidePurchaseInfo> temp = getBaseMapper().getWidePurchaseByOrderNo(partition); if (CollectionUtils.isNotEmpty(temp)) { results.addAll(temp); } } return results; } /** * 获取普通合同关联项目 * * @param subTenderIds2 * @return */ public List<EcpWidePurchaseInfo> getPurchaseInfoList(List<String> subTenderIds2) { return getBaseMapper().getPurchaseInfoList(subTenderIds2); } /** * 通过项目/标段编号获取采购过程信息 * @param tenderNos * @return */ public List<EcpWidePurchaseInfo> getPurchaseListByTenderNos(List<String> tenderNos) { List<EcpWidePurchaseInfo> results = new ArrayList<>(); List<List<String>> partitions = CollectionUtil.split(tenderNos, Constant.BATCH_SIZE); for (List<String> partition : partitions) { List<EcpWidePurchaseInfo> temp = this.getBaseMapper().getPurchaseListByTenderNos(partition); if (CollectionUtils.isNotEmpty(temp)) { results.addAll(temp); } } return results; } /** * 通过合同号获取合同对应采购人信息 * 处理一个合同对应多个项目 * @param contractNos * @return */ public Map<String, PurchaserVo> getPurchaserMap(List<String> contractNos) { Map<String, PurchaserVo> purchaserMap = new HashMap<>(); List<EcpWidePurchaseInfo> purchaseInfos = this.getWidePurchaseByOrderNo(contractNos); if (CollectionUtils.isEmpty(purchaseInfos)) { return purchaserMap; } for (EcpWidePurchaseInfo purchaseInfo : purchaseInfos) { // 为空赋值,方便处理 String purCode = purchaseInfo.getBuyerTenderPeopleCode() == null ? Constant.STR_ALL_ORG_QUAL_CODE : purchaseInfo.getBuyerTenderPeopleCode(); String purName = purchaseInfo.getBuyerOrgName() == null ? Constant.STR_ALL_ORG_QUAL_CODE : purchaseInfo.getBuyerOrgName(); // 采购人是“合营岭东岭澳...",将采购人改为“大亚湾核电运营管理有限责任公司”,采购人代码为“91440300746634982G”。 if (Constant.DNMC_BUILD_COMPANY_LIST.contains(purName)){ purName = Constant.DNMC_PURCHASE_NAME; purCode = Constant.DNMC_PURCHASE_CODE; } // 表5~8采购人代码信息 // 单合同多项目处理采购人代码 多个公司报送一行反斜杠隔开 String contractNo = purchaseInfo.getContractNo(); if (StringUtils.isEmpty(contractNo)) { continue; } PurchaserVo existPur = purchaserMap.get(contractNo); if (existPur != null) { // 如果已存在,则为单合同多项目(多个相同采购人只取一条) purCode = existPur.getPurchaserCode().contains(purCode) ? existPur.getPurchaserCode() : existPur.getPurchaserCode() + Constant.BACK_SLASH + purCode; purName = existPur.getPurchaserName().contains(purName) ? existPur.getPurchaserName() : existPur.getPurchaserName() + Constant.BACK_SLASH + purName; } PurchaserVo purchaserVo = PurchaserVo.builder() .purchaserCode(purCode) .purchaserName(purName) .build(); purchaserMap.put(contractNo, purchaserVo); } return purchaserMap; } } 这是我宽表的服务层所有代码,我的宽表生成逻辑 应该是从很多其他的表中获取到相关的字段,然后组合后再进行新增,我现在想找到他从不同表处获取字段的具体代码,我想检查 一下,你分析下最可能在哪里
最新发布
10-10
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值