Java中MyBatis传入参数parameterType问题

 更新时间:2022年12月21日 10:35:05   作者:MinggeQingchun  
这篇文章主要介绍了Java中MyBatis传入参数parameterType问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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>

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 代码详解Java猴子选王问题(约瑟夫环)

    代码详解Java猴子选王问题(约瑟夫环)

    本篇文章通过实例给大家分析了java约瑟夫环这个经典内容,有兴趣的跟着小编一起学习下吧。
    2018-02-02
  • Java两大工具库Commons和Guava使用示例详解

    Java两大工具库Commons和Guava使用示例详解

    这篇文章主要为大家介绍了Java两大工具库Commons和Guava使用示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • Java图像处理教程之正片叠底效果的实现

    Java图像处理教程之正片叠底效果的实现

    正片叠底效果是我们平时在Photoshop中会见到的一种效果,下面这篇文章主要给大家介绍了关于利用Java如何实现正片叠底的效果,分享出来供大家参考学习,文中给出了详细的示例代码供大家参考学习,需要的朋友可以参考借鉴,下面来一起看看详细的介绍吧。
    2017-09-09
  • Netty分布式从recycler对象回收站获取对象过程剖析

    Netty分布式从recycler对象回收站获取对象过程剖析

    这篇文章主要为大家介绍了Netty分布式从recycler获取对象的过程源码剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • Java微服务Filter过滤器集成Sentinel实现网关限流过程详解

    Java微服务Filter过滤器集成Sentinel实现网关限流过程详解

    这篇文章主要介绍了Java微服务Filter过滤器集成Sentinel实现网关限流过程,首先Sentinel规则的存储默认是存储在内存的,应用重启之后规则会丢失。因此我们通过配置中心Nacos保存规则,然后通过定时拉取Nacos数据来获取规则配置,可以做到动态实时的刷新规则
    2023-02-02
  • Spring Boot使用profile如何配置不同环境的配置文件

    Spring Boot使用profile如何配置不同环境的配置文件

    ,springboot支持通过不同的profile来配置不同环境的配置,下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件
    2018-01-01
  • springboot下ueditor上传功能的实现及遇到的问题

    springboot下ueditor上传功能的实现及遇到的问题

    这篇文章主要介绍了springboot下ueditor上传功能的实现及遇到的问题,本文分步骤通过实例截图给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-11-11
  • SpringBoot全局异常与数据校验的方法

    SpringBoot全局异常与数据校验的方法

    这篇文章主要介绍了SpringBoot全局异常与数据校验的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Java的RocketMq水平扩展及负载均衡详解

    Java的RocketMq水平扩展及负载均衡详解

    这篇文章主要介绍了Java的RocketMq水平扩展及负载均衡详解,RocketMQ是一个分布式具有高度可扩展性的消息中间件,本文旨在探索在broker端,生产端,以及消费端是如何做到横向扩展以及负载均衡的,需要的朋友可以参考下
    2024-01-01
  • Java  Object类中的常用API介绍

    Java  Object类中的常用API介绍

    这篇文章主要介绍了Java  Object类中的常用API介绍,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11

最新评论