mybatis动态sql之Map参数的讲解

 更新时间:2019年03月27日 10:56:33   作者:简乐君  
今天小编就为大家分享一篇关于mybatis动态sql之Map参数的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

mybatis 动态sql之Map参数

Mapper文件:

<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就够了

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语句:

<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参数类型:

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写上:

List<WeixinUserLocationList> findweixinUserLocations(@Param("params") Map<String, Object> map);

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

然后在xml中这样写:

<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之类的。

总结

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

相关文章

  • Springboot+MybatisPlus+Oracle实现主键自增的示例代码

    Springboot+MybatisPlus+Oracle实现主键自增的示例代码

    这篇文章主要介绍了Springboot+MybatisPlus+Oracle实现主键自增的示例代码,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-11-11
  • Springboot内嵌SQLite配置使用详解

    Springboot内嵌SQLite配置使用详解

    这篇文章主要介绍了Springboot内嵌SQLite配置使用详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • mybatis中返回主键一直为1的问题

    mybatis中返回主键一直为1的问题

    这篇文章主要介绍了mybatis中返回主键一直为1的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • springboot如何集成Swagger2

    springboot如何集成Swagger2

    这篇文章主要介绍了springboot集成Swagger2的方法,帮助大家更好的理解和使用springboot框架,感兴趣的朋友可以了解下
    2020-12-12
  • SpringBoot使用JSch操作Linux的方法

    SpringBoot使用JSch操作Linux的方法

    JSch是一个Java库,它提供了SSH(Secure Shell)的Java实现,允许Java程序通过SSH协议连接到远程系统(如Linux),这篇文章主要介绍了SpringBoot使用JSch操作Linux,需要的朋友可以参考下
    2023-11-11
  • Spring之底层架构核心概念Environment及用法详解

    Spring之底层架构核心概念Environment及用法详解

    这篇文章主要介绍了Spring之底层架构核心概念-Environment,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • JAVA代码设置selector不同状态下的背景颜色

    JAVA代码设置selector不同状态下的背景颜色

    这篇文章主要介绍了JAVA代码设置selector不同状态下的背景颜色,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-05-05
  • Java实现大文件的切割与合并操作示例

    Java实现大文件的切割与合并操作示例

    这篇文章主要介绍了Java实现大文件的切割与合并操作,结合实例形式分析了java基于io及util操作大文件按指定个数分割与合并相关操作技巧,需要的朋友可以参考下
    2018-07-07
  • Java客户端通过HTTPS连接到Easysearch实现过程

    Java客户端通过HTTPS连接到Easysearch实现过程

    这篇文章主要为大家介绍了Java客户端通过HTTPS连接到Easysearch实现过程详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • JAVA调用JavaScript的方法示例

    JAVA调用JavaScript的方法示例

    本文主要介绍了JAVA调用JavaScript的方法示例,主要介绍了两种方式,一种是使用Java的ScriptEngine接口,另一种是使用Java的URLConnection类来获取JS文件,具有一定的参考价值,感兴趣的可以了解一下
    2024-01-01

最新评论