服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|JavaScript|易语言|

服务器之家 - 编程语言 - Java教程 - mybatis动态sql之Map参数的讲解

mybatis动态sql之Map参数的讲解

2021-07-26 10:54简乐君 Java教程

今天小编就为大家分享一篇关于mybatis动态sql之Map参数的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

mybatis 动态sql之map参数

mapper文件:

?
1
2
3
4
5
6
7
8
9
10
11
12
<mapper namespace="com.cn.shoje.oa.modules.logistics.dao.purcdao">
 <select id="findall" parametertype="map" resulttype="purchase">
 select * from prod_purchase where 1=1
 <if test="purc_id!=''"> and purc_id=#{purc_id}</if>
 <if test="prod_id!=''"> and prod_id=#{prod_id}</if>
 <if test="ch_id!=''"> and ch_id=#{ch_id}</if>
 <if test="ch_name!=''"> and ch_id in ( select ch_id from channel where ch_name
  like '%#{ch_name}%')</if>
 <if test="purc_time!=''"> and purc_time=#{purc_time} order by #{purc_time} desc
 </if>
 </select>
</mapper>

test表达式中不用再加#,$之类的取值符了,就直接这样写就可以取到map中key所对应的值,而其他地方需要有#{map中的key}来取得map中该key所对应的值

<pre name="code" class="html">

后台传递到mybatis的map参数,不要深究函数含义,知道下面这个map最终是传递到mybatis中的parametertype就够了

?
1
2
3
4
5
6
7
8
9
public map<string,string> parsemap(httpservletrequest req){
 map<string,string> map=new hashmap<string,string>();
 map.put("prod_id", prod_id);
 map.put("purc_id", purc_id );
 map.put("ch_name", ch_name );
 map.put("ch_id", ch_id);
 map.put("purc_time", purc_time);
 return map;
}

mybatis传入参数类型为map

方式一:

mybatis更新sql语句:

?
1
2
3
4
5
6
7
8
9
<update id="publisht00_notice" parametertype="map">
update test
set createdate = #{createdate},
creator = #{creator}
where id in
<foreach collection="ids" item="ids" separator="," open="(" close=")">
#{ids}
</foreach>
</update>

传入map参数类型:

?
1
2
3
4
5
hashmap<string,object> map = new hashmap<string, object>();
map.put("creator", "creator");
map.put("createdate", "createdate");
string[] ids = {"1","2"};
map.put("ids", ids );

方式二:

第一步在你的mapper写上:

?
1
list<weixinuserlocationlist> findweixinuserlocations(@param("params") map<string, object> map);

注意就是注解@param 这个,是mybatis的

然后在xml中这样写:

?
1
2
3
4
5
6
7
8
9
10
11
12
<if test="params.accountid!=null">
      and a.accountid=#{params.accountid}
    </if>
    <if test="params.nickname!=null and params.nickname !=''">
      and a.nickname like '%${params.nickname}%'
    </if>
    <if test="params.begindate!=null and params.begindate!=''">
      and date_format(a.createtime,'%y-%m-%d')>=${params.begindate}
    </if>
    <if test="params.enddate!=null and params.enddate!=''">
    <![cdata[  and date_format(a.createtime,'%y-%m-%d')<=${params.enddate} ]]>  
    </if>

${params.nickname}这种写法参数默认是传字符串,#{params.accountid}可以取long,integer之类的。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接

原文链接:https://blog.csdn.net/u012557538/article/details/50978371

延伸 · 阅读

精彩推荐
  • Java教程Java正则表达式_动力节点Java学院整理

    Java正则表达式_动力节点Java学院整理

    什么是正则表达式,正则表达式的作用是什么?这篇文章主要为大家详细介绍了Java正则表达式的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参...

    动力节点1582020-09-24
  • Java教程SpringMVC用JsonSerialize日期转换方法

    SpringMVC用JsonSerialize日期转换方法

    下面小编就为大家带来一篇SpringMVC用JsonSerialize日期转换方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起 小编过来看看吧 ...

    java教程网3022020-07-07
  • Java教程Spring Boot中如何使用断路器详解

    Spring Boot中如何使用断路器详解

    这篇文章主要给大家介绍了关于Spring Boot中如何使用断路器的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价...

    只喝牛奶的杀手3912021-05-28
  • Java教程Java 1.0和Java 1.1 的IO类的比较

    Java 1.0和Java 1.1 的IO类的比较

    Java库的IO分为输入/输出两部分。早期的Java 1.0版本的输入系统是InputStream及其子类,输出系统是OutputStream及其子类。后来的Java 1.1版本对IO系统进行了重新设...

    java技术网3282019-10-18
  • Java教程java 遍历Map及Map转化为二维数组的实例

    java 遍历Map及Map转化为二维数组的实例

    这篇文章主要介绍了java 遍历Map及Map转化为二维数组的实例的相关资料,希望通过本文能帮助到大家,实现这样的功能,需要的朋友可以参考下...

    chs01133732020-12-19
  • Java教程java实现Z字形扫描程序

    java实现Z字形扫描程序

    这篇文章主要为大家详细介绍了java实现Z字形扫描程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Stupid_Wind8612021-07-18
  • Java教程java 中ThreadLocal本地线程和同步机制的比较

    java 中ThreadLocal本地线程和同步机制的比较

    这篇文章主要介绍了java 中ThreadLocal本地线程和同步机制的比较的相关资料,需要的朋友可以参考下...

    Java之家4542020-08-31
  • Java教程Java中实现可拖放图片剪裁入门教程

    Java中实现可拖放图片剪裁入门教程

    这篇文章主要介绍了Java中实现可拖放图片剪裁入门教程,本文写给新手,分步骤讲解如何实现图片裁剪,并对每步的代码作注释,需要的朋友可以参考下 ...

    junjie4162019-12-08