`

MyBatis传入多个参数的问题

 
阅读更多

一、单个参数:

public List<XXBean> getXXBeanList(String xxCode);  

<select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean">

  select t.* from tableName t where t.id= #{id}  

</select>  

其中方法名和ID一致,#{}中的参数名与方法中的参数名一直, 我这里采用的是XXXBean是采用的短名字,

select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。

二、多参数:

public List<XXXBean> getXXXBeanList(String xxId, String xxCode);  

<select id="getXXXBeanList" resultType="XXBean">

  select t.* from tableName where id = #{0} and name = #{1}  

</select>  

由于是多参数那么就不能使用parameterType, 改用#{index}是第几个就用第几个的索引,索引从0开始

三、Map封装多参数:  

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的名字是那个就在#{}使用那个,map如何封装就不用了我说了吧。 

 四、List封装in:

public List<XXXBean> getXXXBeanList(List<String> list);  

<select id="getXXXBeanList" resultType="XXBean">
  select 字段... from XXX where id in
  <foreach item="item" index="index" collection="list" open="(" separator="," close=")">  
    #{item}  
  </foreach>  
</select>  

foreach 最后的效果是select 字段... from XXX where id in ('1','2','3','4') 

五、多参数传递之注解方式示:    

例子:
 
public AddrInfo getAddrInfo(@Param("corpId")int corpId, @Param("addrId")int addrId);
 
xml配置这样写:
 
<select id="getAddrInfo"  resultMap="com.xxx.xxx.AddrInfo">
       SELECT * FROM addr__info 
    where addr_id=#{addrId} and corp_id=#{corpId}
</select>
 
以前在<select>语句中要带parameterType的,现在可以不要这样写。

六、selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法:

将参数放入Map,再取出Map中的List遍历。如下:

List<String> list_3 = new ArrayList<String>();
Map<String, Object> map2 = new HashMap<String, Object>();

list.add("1");
list.add("2");
map.put("list", list); //网址id

map.put("siteTag", "0");//网址类型
public List<SysWeb> getSysInfo(Map<String, Object> map2) {
  return getSqlSession().selectList("sysweb.getSysInfo", map2);
}
<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 动态sql及参数传递

    多个参数传递 传入单个实体(JavaBean/Map) 传入多个实体 传入集合 使用场景 在实际开发过程中,我们往往需要编写复杂的SQL语句,拼接稍有不注意就会导致错误,Mybatis给开发者提供了动态SQL,大大降低了拼接SQL导致的...

    总结--Mybatis传递参数的几种方法

    在 Mybatis 中,传递多个参数的一种常用做法是把多个参数都放在 Map 中,然后传递这个 Map 作为参数。例如: ```java public void insertAreaDivInfor(HashMap map); ``` 对应的 XML 代码为: ```xml insert into ...

    postgresql + mybatis传入时间参数的问题.md

    我们看到, 直接在可视化工具里用SQL写 ccf.last_update_timestamp between TIMESTAMP '2019-12-13' AND TIMESTAMP '2019-12-13' 甚至去掉 TIMESTAMP 都是可以的, pgSQL可以自动把字符串给你转换成日期格式, ...

    Mybatis传递多个参数的三种实现方法

    Mybatis是一款流行的持久化框架,它提供了多种方式来传递多个参数,在实际开发中,我们经常会遇到需要传递多个参数的情况,本文将介绍Mybatis传递多个参数的三种实现方法。 第一种实现方法:使用占位符 在Dao层的...

    Mybatis多参数查询与列表查询不同方式实现

    当我们需要传递多个参数时,可以使用Map对象。在Mapper XML文件中,可以通过`&lt;foreach&gt;`标签遍历Map的键值对。例如,查询用户根据用户名和年龄: ```xml SELECT * FROM user WHERE username = #{username} AND ...

    Mybatis传递多个参数的解决办法(三种)

    在MyBatis框架中,当需要传递多个参数时,通常有三种常见的解决办法。这些方法各有优缺点,选择哪种取决于个人喜好和项目需求。下面将详细阐述这三种解决方案。 **第一种方案:使用位置参数** 在DAO层,你可以定义...

    Mybatis传递多个参数进行SQL查询的用法

    当需要传递多个参数时,可以使用`Map, Object&gt;`作为方法的参数。在Java代码中,可以创建一个Map实例并将所有参数放入其中,然后将Map对象传递给Mapper接口的方法。例如: ```java Map, Object&gt; params = new ...

    详解mybatis中association和collection的column传入多个参数问题

    本篇文章将详细探讨如何在 `association` 和 `collection` 的 `column` 属性中传入多个参数,以实现更复杂的查询需求。 首先,`association` 用于表示一对一的关系,而 `collection` 用于表示一对多的关系。在映射...

    MyBatis3传递多个参数(Multiple Parameters)

    MyBatis3传递多个参数(Multiple Parameters) MyBatis3传递多个参数是MyBatis框架中的一种重要特性,它允许开发者在执行数据库查询时传递多个参数,有多种方式可以实现多个参数的传递,本文将详细介绍四种常见的方法...

    解析Mybatis连续传递多个参数的方法

    本文将深入探讨MyBatis如何连续传递多个参数,帮助开发者更好地理解和应用这一功能。 首先,MyBatis允许开发者通过XML或注解来定义SQL语句,这些语句可以包含多个动态参数。动态参数的处理方式有两种,一种是#{},...

    Mybatis中传递多个参数的4种方法总结

    Mybatis中传递多个参数的4种方法总结 Mybatis是当前最流行的持久层框架之一,广泛应用于各种项目中。使用Mybatis最大的特性就是sql需要自己写,而写sql就需要传递多个参数。面对各种复杂的业务场景,传递参数也是一...

    mybatis多个接口参数的注解使用方式(@Param)

    在 MyBatis 中,使用 @Param 注解可以实现多个接口参数的传递,这可以解决在实际开发中遇到的多个参数传递问题。本文将详细介绍 MyBatis 中多个接口参数的注解使用方式,并提供了实际的示例代码。 单参数 在 ...

    关于MyBatis参数传入#{index}的问题的解决方案【源码】

    在使用MyBatis进行数据库操作时,我们经常会遇到需要传递多个参数的情况。在这个问题中,开发者遇到了一个关于如何正确传入参数#{index}的问题。在MyBatis中,#{index}是参数占位符,它用于动态SQL的拼接,但具体...

    MyBatis传入集合 list 数组 map参数的写法

    使用Map参数的一个好处是,可以将多个参数封装在一起,通过Map的键来区分不同的参数。例如,你可以同时传入`departmentId`和`jobId`,并根据需求在映射文件中使用它们。 在实际应用中,MyBatis会自动将方法参数转换...

    mybatis动态sql及参数的传递

    MyBatis支持传入多个参数,可以通过`@Param`注解指定参数名。 1. Map参数示例: ```java Map, Object&gt; params = new HashMap(); params.put("username", "John"); params.put("age", 30); List&lt;User&gt; users = ...

    Mybatis参数传递1

    在MyBatis中,参数的传递方式有很多种,主要包括基本类型的参数、对象参数、多个参数以及使用注解的方式。下面将详细讲解这些方法及其注意事项。 1. 单个参数传入基本类型或直接传入类类型 当参数为基本类型如`...

    深入了解MyBatis参数

    3. 使用了@Param注解或有多个参数时,将参数转换为Map类型,并且还根据参数顺序存储了key为param1,param2等的参数名。 参数传递方式 ------------- 在MyBatis中,有两种使用参数的方式:接口形式和命名空间方式。...

    Mybatis框架 mapper.xml文件中parameterType传递参数常用的几种方式.pdf

    可以通过HashMap将多个参数作为键值对传递: ```java public User queryUser(Map, Object&gt; map); ``` 在XML中,可以使用键名来引用HashMap中的值: ```xml select * from user where user_name = #{...

    mybatis-demo9-方法多参数@Param.zip

    `@Param`注解就是为了解决这个问题而设计的,它提供了一种方式来标识和传递多个参数。 2. **使用方法** 在一个Mapper接口方法中,如果需要传入两个或更多参数,可以给每个参数添加`@Param`注解,并指定一个唯一的...

Global site tag (gtag.js) - Google Analytics