mapper.xml select 查詢返回map,字段一為key,字段二為value


直接resultType 可以為map 但是 是以查詢的字段作為key, 值為value,有時候想讓值為key-value,所以還是有缺陷

 

編寫select 普通查詢語句

    <select id="findOrderWaitissue" parameterType="list" resultMap="getAllSetDaysResult">
        SELECT FPQQLSH SP_FPARAMEKEY,GROUP_CONCAT(ddh) SP_FPARAMEVALUE FROM `t_inv_orders_waitissue`
        where FPQQLSH in
         <foreach collection="list" item="item" separator="," open="(" close=")">
             #{item.fpqqlsh}
         </foreach>
          GROUP BY FPQQLSH
    </select>

定義resultMap ,在里面對字段設置key,value

    <resultMap id="getAllSetDaysResult"   type="HashMap">
        <result property="key" column="SP_FPARAMEKEY" />
        <result property="value" column="SP_FPARAMEVALUE" />

    </resultMap>

 

創建二配置個類

 
         
package com.cqaisino.newbill.common.handler;

import java.util.List;
import java.util.Map;

import javax.annotation.Resource;

import com.cqaisino.newbill.output.entity.InvInvoiceExcel;
import com.cqaisino.newbill.output.mapper.InvInvoiceMapper;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.support.SqlSessionDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
public class SessionMapper extends SqlSessionDaoSupport { @Resource public void setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) { super.setSqlSessionFactory(sqlSessionFactory); } /** * @return */ @SuppressWarnings("unchecked") public Map<String,Object> findOrderWaitissue(List<InvInvoiceExcel> invInvoiceExcels){ FblMapResultHandler handler = new FblMapResultHandler(); //namespace : XxxMapper.xml 中配置的地址(XxxMapper.xml的qualified name) //.selectXxxxNum : XxxMapper.xml 中配置的方法名稱 //this.getSqlSession().select(namespace+".selectXxxxNum", handler); this.getSqlSession().select(InvInvoiceMapper.class.getName()+".findOrderWaitissue",invInvoiceExcels, handler); Map<String, Object> map = handler.getMappedResults(); return map; } }

 

 

package com.cqaisino.newbill.common.handler;

import org.apache.ibatis.session.ResultContext;
import org.apache.ibatis.session.ResultHandler;

import java.util.HashMap;
import java.util.Map;

public class FblMapResultHandler implements ResultHandler {
    @SuppressWarnings("rawtypes")
    private final Map mappedResults = new HashMap();

    @SuppressWarnings("unchecked")
    @Override
    public void handleResult(ResultContext context) {
        @SuppressWarnings("rawtypes")
        Map map = (Map) context.getResultObject(); 
        mappedResults.put(map.get("key"), map.get("value"));  // xml 配置里面的property的值,對應的列
    }
    public Map getMappedResults() {  
        return mappedResults;  
    }  
}

 

然后直接注入mapper  使用

    @Autowired
    private SessionMapper invoiceMapMapper;
        Map<String, Object> orderWaitissue = this.invoiceMapMapper.findOrderWaitissue(invInvoiceExcels);

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM