最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Mybatis如何通過出入Map參數(shù)作為條件進行查詢

 更新時間:2022年06月27日 08:43:32   作者:走路的貓頭鷹  
這篇文章主要介紹了Mybatis如何通過出入Map參數(shù)作為條件進行查詢,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

通過出入Map參數(shù)作為條件進行查詢

映射文件中查詢語句部分:

<!--通過map進行條件查詢-->
<select id="selectByMap" resultType="com.heiketu.testpackage.pojo.Product">
? ? select * from Products where prod_price = #{prodPrice} and prod_desc = #{prodDesc}
</select>

接口文件中對應的查詢方法:

//輸入?yún)?shù)為Map的條件查詢
Product selectByMap(Map<String,Object> map);

測試代碼:

//...前面有創(chuàng)建sqlSessionFactory對象和SQLSession對象的代碼
Map<String,Object> map = new HashMap<>();
map.put("prodPrice","11.99");
map.put("prodDesc","18 inch teddy bear, comes with cap and jacket");
ProductsMapper mapper = sqlSession.getMapper(ProductsMapper.class);
Product product = mapper.selectByMap(map);
System.out.println(product);

map中的key值與映射文件中的select語句#{}占位符中的值需要一一對應

在mybatis中,任何傳入的參數(shù)都會被對應封裝成Map集合,然后會以map的key=value形式取值。

對傳入的參數(shù)是List集合,mybatis會對list集合進行特殊處理,其取值方式通過list[下標]或collection[下標]的方式入?yún)⑷≈怠?/p>

對于數(shù)組,Mybatis同樣會做特殊處理,它會對數(shù)組采用array[下標]的方式入?yún)⑷≈怠?/p>

<!--如果是List集合(或set集合)就如下入?yún)⑷≈?->
<select id="selectByMap" resultType="com.heiketu.testpackage.pojo.Product">
? ? select * from Products where prod_price = #{list[0]} and prod_desc = #{collection[1]}
</select>
<!--如果是數(shù)組就如下入?yún)⑷≈?->
<select id="selectByMap" resultType="com.heiketu.testpackage.pojo.Product">
? ? select * from Products where prod_price = #{array[0]} and prod_desc = #{array[1]}
</select>

Mybatis查詢傳遞Map參數(shù)

使用場景

mybaits傳遞Map查詢數(shù)據(jù),choose里面的判斷根據(jù)自己的map參數(shù)類型自行使用,這里傳的value是Object類型,這里用不到

<select id="getObjectByMap" parameterType="map" resultMap="BaseResultMap">
        select
            <include refid="Base_Column_List" />
        from
            s_app
        <where>
            <foreach collection="map" item="v" index="k" separator="and">
                <if test="v != null and v != ''">
                    ${k} = #{v}
                </if>
                <!--<choose>
                    <when test="v instanceof integer">
                        <if test="v != null">
                            ${k} = #{v}
                        </if>
                    </when>
                    <when test="v instanceof list">
                        <if test="v != null and v.size() > 0">
                            ${k} in
                            <foreach collection="list" item="v" separator="," open="(" close=")">
                                #{v}
                            </foreach>
                        </if>
                    </when>
                    <when test="v instanceof array">
                        <if test="v != null and v.length > 0">
                            ${k} in
                            <foreach collection="array" item="v" separator="," open="(" close=")">
                                #{v}
                            </foreach>
                        </if>
                    </when>
                    <otherwise>
                        <if test="v != null and v != ''">
                            ${k} = #{v}
                        </if>
                    </otherwise>
                </choose>-->
            </foreach>
        </where>
    </select>

這里需要注意的一點是${K},首先map的key一定要跟數(shù)據(jù)表字段保持一致。如果這里的${K}寫成了#{K}則生成的sql語句如下所示:

程序不會報錯,條件無效。${}和#{}的區(qū)別相信大家都了解,簡單概括就是一個是替換占位符,一個是當做參數(shù)傳入

傳參

    @PostMapping({"demo"})
    public AjaxResult demo(String appNo, String name) {
        Map map = Map.of("app_no", appNo, "cust_name", name);
        SApp objectByMap = service.getObjectByMap(map);
        return success(objectByMap);
    }

持久層

public interface SAppMapper extends BaseMapper<SApp> {
    SApp getObjectByMap(@Param("map") Map<String, Object> map);
}

生成sql

查詢結(jié)果

總結(jié):這樣的好處是參數(shù)的個數(shù)不固定、參數(shù)的類型不固定,適用的場景較多。缺點也很明顯map傳參可讀性差,參數(shù)難以控制等。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • java正則表達式校驗日期格式實例代碼

    java正則表達式校驗日期格式實例代碼

    如果使用得當,正則表達式是匹配各種模式的強大工具,下面這篇文章主要給大家介紹了關(guān)于java正則表達式校驗日期格式的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • java顯示聲音波形圖示例

    java顯示聲音波形圖示例

    這篇文章主要介紹了java顯示聲音波形圖示例,需要的朋友可以參考下
    2014-05-05
  • Java中如何獲取mysql連接的3種方法總結(jié)

    Java中如何獲取mysql連接的3種方法總結(jié)

    最近工作中需要用到mysql連接,發(fā)現(xiàn)實現(xiàn)的方法不止一個,所以就來總結(jié)下,下面這篇文章主要給大家介紹了關(guān)于Java中如何獲取mysql連接的3種方法,需要的朋友可以參考借鑒,感興趣的朋友們下面隨著小編來一起學習學習吧。
    2017-08-08
  • java解析xml之dom4j解析xml示例分享

    java解析xml之dom4j解析xml示例分享

    DOM4J具有性能優(yōu)異、功能強大和極端易用使用的特點,只要懂得DOM基本概念,就可以通過dom4j的api文檔來解析xml,dom4j是一套開源的api。實際項目中,往往選擇dom4j來作為解析xml的利器
    2014-01-01
  • Java建造者設(shè)計模式詳解

    Java建造者設(shè)計模式詳解

    這篇文章主要為大家詳細介紹了Java建造者設(shè)計模式,對建造者設(shè)計模式進行分析理解,感興趣的小伙伴們可以參考一下
    2016-02-02
  • java開發(fā)之Jdbc分頁源碼詳解

    java開發(fā)之Jdbc分頁源碼詳解

    這篇文章主要介紹了java開發(fā)之Jdb分頁源碼詳解,需要的朋友可以參考下
    2020-02-02
  • Java管理對象方法總結(jié)

    Java管理對象方法總結(jié)

    在本篇文章中小編給大家分享了關(guān)于Java管理對象方法以及相關(guān)代碼知識點,需要的朋友們跟著學習下。
    2019-05-05
  • idea中增強for循環(huán)提示unexpected token問題

    idea中增強for循環(huán)提示unexpected token問題

    這篇文章主要介紹了idea中增強for循環(huán)提示unexpected token問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解SpringBoot構(gòu)建Docker鏡像的3種方式

    詳解SpringBoot構(gòu)建Docker鏡像的3種方式

    這篇文章主要介紹了SpringBoot構(gòu)建Docker鏡像的3種方式,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • SpringBoot外部化配置示例解析

    SpringBoot外部化配置示例解析

    這篇文章主要介紹了SpringBoot外部化配置示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02

最新評論

南江县| 绍兴市| 五大连池市| 平南县| 紫云| 湛江市| 彭阳县| 鄂伦春自治旗| 久治县| 长武县| 漳浦县| 阜阳市| 建阳市| 九台市| 宝坻区| 广河县| 定安县| 额尔古纳市| 峨山| 开江县| 天柱县| 合川市| 宁陵县| 高雄县| 广安市| 新昌县| 德昌县| 大洼县| 乐东| 余姚市| 大荔县| 高平市| 广州市| 汽车| 新田县| 洛扎县| 绥化市| 红原县| 盐池县| 永清县| 鹰潭市|