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
hashmap = new HashMap(); - params.put("userId", userId);
- params.put("userName", userName);
-
- public List<XXBean> getXXBeanList(HashMap
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
list = new ArrayList(); - Map
map2 = new HashMap(); -
- 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>