Java--MyBatis传入参数parameterType

Posted MinggeQingchun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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--MyBatis传入参数parameterType的主要内容,如果未能解决你的问题,请参考以下文章

java mybatis 框架下多种类型的参数传入到xml问题

mybitas 传入单个参数_parameter

jmeter_parameter不同传入方法

Kettle位置参数(Argument)命名参数(Parameter)变量(Variable)

Kettle位置参数(Argument)命名参数(Parameter)变量(Variable)

java 传入多个参数时报"Parameter 'XXX' not found. Available parameters are [arg1, arg0, param1,.