Mybatis傳入?yún)?shù)類型為L(zhǎng)ist作為條件進(jìn)行查詢

表結(jié)構(gòu):
表名稱為constant
需求:

現(xiàn)在想查詢type為2徒河、3的所有數(shù)據(jù)(甚至想查詢type為1,2,3,4,5....,100的所有數(shù)據(jù))并且返回的值是Map(key為id刚照,value為constant類)

如果采用一個(gè)一個(gè)傳參的方式進(jìn)行查詢肯定是不行的,以下是通過(guò)Mybatis提供的foreach標(biāo)簽并配合in進(jìn)行查詢

Mapper:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.jm.dao.ConstantDao">
    <resultMap id="BaseResultMap" type="com.jm.model.Constant">
        <result column="id" property="id" jdbcType="BIGINT" />
        <result column="key" property="key" jdbcType="VARCHAR" />
        <result column="value" property="value" jdbcType="VARCHAR" />
        <result column="type" property="type" jdbcType="INTEGER" />
    </resultMap>

                <!--此處一定要注意屬性的名稱是resultMap,并且值為“BaseResultMap”這樣就可以保證返回的Map的value是Constant的對(duì)象 -->
    <select id="loadConstantByType" resultMap="BaseResultMap">
        select * from constant where type in
        <!-- 這里要將collection屬性的值標(biāo)記為list摔认,不然不知道傳入的參數(shù)是list separator表示分離器 item表示list中的一個(gè)元素 -->
        <foreach item="item" index="index" collection="list" open="("
            separator="," close=")">#{item}</foreach>
    </select>

</mapper>
DAO:
import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.MapKey;
import org.springframework.stereotype.Repository;

@Repository
public interface ConstantDao {
    
    /**
     * 注釋@MapKey表示表中那個(gè)字段作為Map的key
     * @return
     */
    @MapKey("id")
    Map<Long,Constant> loadConstantByType(List<Integer> type);
}
POJO實(shí)體類:
public class Constant {
    private Long id;
    private String key;
    private String value;
    private Integer type;
    
    public String toString(){
        StringBuffer s = new StringBuffer("Constant:{");
        s.append("id:").append(this.id).append(",");
        s.append("key:").append(this.key).append(",");
        s.append("value:").append(this.value).append(",");
        s.append("type:").append(this.type).append("}");
        return s.toString();
    }
    public Constant() {
        super();
        // TODO Auto-generated constructor stub
    }
    public Long getId() {
        return id;
    }
    public void setId(Long id) {
        this.id = id;
    }
    public String getKey() {
        return key;
    }
    public void setKey(String key) {
        this.key = key == null ? null : key.trim();
    }
    public String getValue() {
        return value;
    }
    public void setValue(String value) {
        this.value = value == null ? null : value.trim();
    }
    public Integer getType() {
        return type;
    }
    public void setType(Integer type) {
        this.type = type;
    }
}

pojo中的實(shí)體類最好重寫(xiě)toString方法

junitTest:
import java.util.Arrays;
import java.util.List;
import java.util.Map;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "classpath:spring.xml", "classpath:spring-mybatis.xml" })
public class MubatisMapTest {
    @Autowired
    private ConstantDao constantDao;
    
    @Test
    public void mapTest1() {
        List<Integer> typeList = Arrays.asList(2,3);
        Map<Long,Constant> constantMap = constantDao.loadConstantByType(typeList);
        System.out.println(constantMap);
    }
}
最終測(cè)試結(jié)果:
Paste_Image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末逆皮,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子参袱,更是在濱河造成了極大的恐慌电谣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,639評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抹蚀,死亡現(xiàn)場(chǎng)離奇詭異剿牺,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)环壤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)晒来,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人郑现,你說(shuō)我怎么就攤上這事湃崩∮担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,221評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵攒读,是天一觀的道長(zhǎng)朵诫。 經(jīng)常有香客問(wèn)我,道長(zhǎng)薄扁,這世上最難降的妖魔是什么剪返? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,474評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮泌辫,結(jié)果婚禮上随夸,老公的妹妹穿的比我還像新娘。我一直安慰自己震放,他們只是感情好宾毒,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著殿遂,像睡著了一般诈铛。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上墨礁,一...
    開(kāi)封第一講書(shū)人閱讀 49,816評(píng)論 1 290
  • 那天幢竹,我揣著相機(jī)與錄音,去河邊找鬼恩静。 笑死焕毫,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的驶乾。 我是一名探鬼主播邑飒,決...
    沈念sama閱讀 38,957評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼级乐!你這毒婦竟也來(lái)了疙咸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,718評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤风科,失蹤者是張志新(化名)和其女友劉穎撒轮,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體贼穆,經(jīng)...
    沈念sama閱讀 44,176評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡题山,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了故痊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片臀蛛。...
    茶點(diǎn)故事閱讀 38,646評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖崖蜜,靈堂內(nèi)的尸體忽然破棺而出浊仆,到底是詐尸還是另有隱情,我是刑警寧澤豫领,帶...
    沈念sama閱讀 34,322評(píng)論 4 330
  • 正文 年R本政府宣布抡柿,位于F島的核電站,受9級(jí)特大地震影響等恐,放射性物質(zhì)發(fā)生泄漏洲劣。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評(píng)論 3 313
  • 文/蒙蒙 一课蔬、第九天 我趴在偏房一處隱蔽的房頂上張望囱稽。 院中可真熱鬧,春花似錦二跋、人聲如沸战惊。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,755評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)吞获。三九已至,卻和暖如春谚鄙,著一層夾襖步出監(jiān)牢的瞬間各拷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,987評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工闷营, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留烤黍,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,358評(píng)論 2 360
  • 正文 我出身青樓傻盟,卻偏偏與公主長(zhǎng)得像速蕊,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子莫杈,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1. 簡(jiǎn)介 1.1 什么是 MyBatis 互例? MyBatis 是支持定制化 SQL、存儲(chǔ)過(guò)程以及高級(jí)映射的優(yōu)秀的...
    笨鳥(niǎo)慢飛閱讀 5,454評(píng)論 0 4
  • 每個(gè)線程都應(yīng)該有它自己的SqlSession實(shí)例筝闹。SqlSession的實(shí)例不能共享使用媳叨,它是線程不安全的 配置文...
    蕊er閱讀 470評(píng)論 0 0
  • 官方文檔 簡(jiǎn)介 入門(mén) XML配置 XML映射文件 動(dòng)態(tài)SQL Java API SQL語(yǔ)句構(gòu)建器 日志 一、 JD...
    拾壹北閱讀 3,543評(píng)論 0 52
  • 11 MyBatis一級(jí)緩存實(shí)現(xiàn)# 11.1 什么是一級(jí)緩存关顷? 為什么使用一級(jí)緩存?## 每當(dāng)我們使用MyBati...
    七寸知架構(gòu)閱讀 10,837評(píng)論 12 143
  • 前言 Git 的安裝议双,使用痘番,將代碼托管到GitHub、GitBlit上 下載安裝 訪問(wèn)網(wǎng)址https://git-...
    AR7_閱讀 542評(píng)論 0 1