MyBatis动态SQL使用,传入参数Map中的Key判断
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传过去就行。试试把!希望对你有帮助!