文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Java中MyBatis传入参数parameterType问题

2022-12-21 12:00

关注

parameterType:MyBatis的传入参数

参数类型主要分为两种

(1)基本数据类型:int,string,long,Date

(2)复杂数据类型:类和Map

获取参数中的值

(1)基本数据类型:#{参数} 获取参数中的值

(2)复杂数据类型:#{属性名}  ,map中则是#{key}

首先说说单参数基本数据类型,如:String,Long

一、单参数

//根据name查询
public List<XXBean> getXXBeanList(String name);  
 
<select id="getXXBeanList" parameterType="java.lang.String" resultType="XXBean">
  select * from User u where u.name = #{name}  
</select>  
 
 
//根据主键id查询
public List<XXBean> getXXBeanList(Long beanId);
 
<select id="getXXBeanList" parameterType="java.lang.String" resultType="XXBean">
  select * from User u where u.userId = #{beanId}  
</select>

其中方法名和ID一致,#{}中的参数名与方法中的参数名一致, 上面采用的是XXXBean,是采用的短名字,

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

二、多参数

1、索引 #{index}

public List<XXBean> getXXBeanList(String beanId, String name);  
 
<select id="getXXBeanList" resultType="XXBean">
  select * from user u where u.userId = #{0} and name = #{1}  
</select>  

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

#{0}代表接收的是dao层中的第一个参数,#{1}代表dao层中第二参数,更多参数一致往后加即可

2、Map封装多参数

        Map<String, Object> hashmap = new HashMap<String, Object>();
        params.put("userId", userId);
        params.put("userName", userName);
 
public List<XXBean> getXXBeanList(HashMap <String, Object> hashmap);  
 
<select id="getXXBeanList" parameterType="hashmap" resultType="XXBean">
  select * from user u where u.userId=#{userId} name = #{userName}  
</select>  

其中hashmap是mybatis自己配置好的直接使用就行。map中key的名字是那个就在#{}使用那个

3、List封装in

public List<XXBean> getXXBeanList(List<String> list);  
 
<select id="getXXBeanList" resultType="XXBean">
  select * from user where userId in
  <foreach item="userId" collection="array" open="(" separator="," close=")">
         #{userId}
   </foreach>
</select>   

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

4、注解方式

public User getUser(@Param("userId")Long userId, @Param("name")String name);

Mapper.xml配置:

<select id="getUser" resultMap="com.xxx.xxx.User">
       SELECT * FROM user u 
    where u.userId=#{userId} and u.name=#{name}
</select>

5、多类型参数

selectList()只能传递一个参数,但实际所需参数既要包含String类型,又要包含List类型时的处理方法;将参数放入Map,再取出Map中的List遍历

List<String> list = new ArrayList<String>();
Map<String, Object> map2 = new HashMap<String, Object>();
 
list.add("1");
list.add("2");
map2.put("list", list); 
 
map2.put("roleCode", "0101");

mapper.xml

<select id="getUser" parameterType="java.util.Map" resultMap="User">
  select u,userId, u.name, u.code 
   from user u
   left join role r on r.role_userId = u.userId
   WHERE r.code = #{roleCode} 
   and r.roleId not in 
   <foreach item="roleId" collection="array" open="(" separator="," close=")">
         #{roleId}
   </foreach>
 </select>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯