MyBatis - 参数传递

一、单个参数

public List<XXBean> getXXBeanList(@param("id")String id);  
<select id="getXXXBeanList" parameterType="java.lang.String" resultType="XXBean"> 
    select t.* from tableName t where t.id= #{id} 
</select> 
  • 方法名和ID一致
  • #{}中的参数名与方法中的参数名一致, 这里采用的是@Param这个参数,实际上@Param这个最后会被Mabatis封装为map类型的。
  • select 后的字段列表要和bean中的属性名一致, 如果不一致的可以用 as 来补充。

二、多参数

2.1 按注解(推荐)

public List<XXXBean> getXXXBeanList(@Param("id")String id, @Param("code")String code); 
<select id="getXXXBeanList" resultType="XXBean"> 
select t.* from tableName where id = #{id} and name = #{code} 
</select> 

由于是多参数那么就不能使用parameterType, 这里用@Param来指定哪一个

2.2 按序号

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开始

2.3 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的名字是那个就在#{}使用那个

2.4 List封装in

注意:这里的collection是你集合的字段名。

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')

mybatis接受的参数分为:

• 基本类型

• 对象

• List

• 数组

• Map

<foreach>标签的用法:

  • collection:要循环的集合
  • index:循环索引
  • item:集合中的一个元素(item和collection,按foreach循环理解)
  • open:以什么开始
  • close:以什么结束
  • separator:循环内容之间以什么分隔

2.5 数组

List<User> selectByUserIdList(@Param("userIds")String[] userIds);

注意:这里的collection是你集合的字段名。​​​​​​​

<select id="selectByRoleIdList" resultMap="user" >
SELECT * FROM user
    <if test="userIds!= null">
        where user_id in
            <foreach collection="userIds" item="userId" index="index" open="(" separator="," close=")" >  
                #{userId,jdbcType=INTEGER} 
            </foreach>
          
    </if>

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

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

List<String> list_3 = new ArrayList<String>();
list.add("1"); 
list.add("2");

Map<String, Object> map2 = new HashMap<String, Object>(); 
map.put("list", list); //网址id
map.put("siteTag", "0");//网址类型
<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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值