您好,欢迎来到化拓教育网。
搜索
您的当前位置:首页正文

MyBatis动态SQL使用,传入参数Map中的Key判断

2023-11-10 来源:化拓教育网

select id="" parameterType="Map" resultMap="commodityResultMap" > SELECT c.id c_id,c.variety_id,c.nickName c_nickName,c.description c_description,c.ordinaryPrice c_ordinaryPrice,c.memberPrice c_memberPrice,c.path c_path,v.id v_id,v.nickName v_nickName FROM commodity c INNER JOIN variety v ON c.variety_id=v.id where 1=1 <!-- _parameter.containsKey(‘键‘) 作用:判断键是否存在返回值boolean #{键}取对应的值 !必须三处键值对应,否则取不到值--> <if test="_parameter.containsKey(‘varietyID‘)"> and v.id=#{varietyID} </if> </select>

  • 此做法的好处,可做多条件查询。
  •  

    MyBatis动态SQL使用,传入参数Map中的Key判断

    标签:

    小编还为您整理了以下内容,可能对您也有帮助:

    java中mybatis动态传值,Map中的key与sql语句大小写差一个,但是并不报错,只是不出数据,这是为什么?

    翻了一下mybatis源码,

    1、当你的传的参数类型是map的时候,sql入参的时候根据你写的key去找value,如果找不到mybatis并不会报异常,而是直接返回一个null作为value

    2、如果传入的是bean参数,此时mybatis通过反射取值,此时如果没有那个参数,mybatis会抛出异常告诉你在当前对象里面没有你提供的参数

    mybatis里怎么获取传进去的map集合中的key

    Map<String, String> cateXml = cateXmls.get(i);
    Map<String, String> tempMap=new LinkedCaseInsensitiveMap<String>();
    tempMap.putAll(cateXml);
    cateXml=tempMap;

    用的是LinkedCaseInsensitiveMap这个sping提供的key大小写不敏感的类处理了一下。

    mybatis里怎么获取传进去的map集合中的key

    Map<String, String> cateXml = cateXmls.get(i);
    Map<String, String> tempMap=new LinkedCaseInsensitiveMap<String>();
    tempMap.putAll(cateXml);
    cateXml=tempMap;

    用的是LinkedCaseInsensitiveMap这个sping提供的key大小写不敏感的类处理了一下。

    MyBatis传递map参数时,key值为空的处理

    MyBatis传递map参数时,如果传递参数中没有对应的key值,在执行sql语句时默认取的是null
    例如:map中没有put “name”这个key,在sql中使用#{name}时,默认赋值null

    MyBatis传递map参数时,key值为空的处理

    MyBatis传递map参数时,如果传递参数中没有对应的key值,在执行sql语句时默认取的是null
    例如:map中没有put “name”这个key,在sql中使用#{name}时,默认赋值null

    MyBatis 中SQL语句怎么样使用两种类型的参数带条件查询

    最简单的直接设置resultType=“map”,得到的就是一个List<Map<String,Object>>

    每一个Map的key就是查询结果的列名,也就是表的字段名。当然sql语句中最好as一下

    复杂一点可以自定义一个resultMap标签

    <resultMap id="result" type="java.util.Map">

    <result property="c1" column="column1"/>

    <result property="c2" column="column2"/>

    </resultMap>

    其中result可以自定义,select标签中的resultMap="result",和上面的resultMap标签的id对应

    property设置的是自定义的字段名称,也就是结果集中每一个Map的key

    column设置查询结果的字段名称

    然后通过

    for(List<Map<String,Object> map:list){

    map.get("c1");//获取c1对应的字段的值

    。。。

    }

    使用mybatis返回一个Map时,如果sql语句查询没有记录,如何让sql中的字段为Map中的key

    从你的层传值过来。因为是多个变量,所以要用map传。\r\nibatis配置文件中写:\r\nselect * from eadept ea where ea.deptid in (#id1#,#id2#,#id3#,#id4#)。\r\n层里面用map封装:\r\nmap.put("id1","001008");\r\nmap.put("id2","001009");\r\nmap.put("id3","001010");\r\nmap.put("id4","001007");\r\n然后把map传过去就行。试试把!希望对你有帮助!