MyBatis – 参数传递

导读:本篇文章讲解 MyBatis – 参数传递,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

一、单个参数

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>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/117207.html

(0)
seven_的头像seven_bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!