我是靠谱客的博主 长情猫咪,最近开发中收集的这篇文章主要介绍MyBatis接收多个参数,其中一个参数是集合,另一个参数是字符串的解决办法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

周报 2020-09-14

上周我按照详细设计编写代码,在这个过程中,我碰到了一个关于MyBatis框架的问题。当接口中抽象方法有两个参数,并且其中一个参数是集合,另一个参数是字符串,这种情况下,在xml文件中的parameterType应该如何写才能正确接收到参数。我在互联网上查询了之后又问了前辈,最终解决了问题,那就是将他们封装到HashMap中,在parameterType中接受Map类型的参数,然后使用Map的key来取出数据,使用动态SQL的foreach标签对list进行遍历。

接口

public List<XXXBean> getXXXBeanList(HashMap map);

<select id="getXXXBeanList" parameterType="hashmap" resultType="XXBean">
  select 字段... from XXX where id=#{xxId} code = #{xxCode}
</select>
其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就放在#{}中。
具体例子

封装一个 list 和 一个字符串到map中

List<String> list = new ArrayList<>();
//网址
list.add("https://www.baidu.com");
list.add("https://www.bilibili.com");
//网址类型
String siteTag = "https";
HashMap<String,Object> map = new HashMap<>();
//封装map,一会需要使用这里定义的key进行数据接收
map.put("list", list);
map.put("siteTag",siteTag)

接口方法

public List<SysWeb> getSysInfo(Map<String, Object>);

mapper.xml

以下xml代码意思是查询网络类型是https,但是除了百度和bilibili两个网站的其他网站。

<select id="getSysInfo" parameterType="java.util.Map" resultType="SysWeb">
SELECT
  
t.sysSiteId, t.siteName, t1.mzNum as siteTagNum, t1.mzName as siteTag, t.url, t.iconPath
FROM
TD_WEB_SYSSITE t
LEFT JOIN
TD_MZ_MZDY t1 on t1.mzNum = t.siteTag and t1.mzType = 10
WHERE
t.siteTag = #{siteTag} and t.sysSiteId not in
<foreach collection="list" item="item" index="index" open="(" close=")" separator=",">
#{item}
</foreach>
</select>

最后

以上就是长情猫咪为你收集整理的MyBatis接收多个参数,其中一个参数是集合,另一个参数是字符串的解决办法的全部内容,希望文章能够帮你解决MyBatis接收多个参数,其中一个参数是集合,另一个参数是字符串的解决办法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(46)

评论列表共有 0 条评论

立即
投稿
返回
顶部