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>
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Netty分布式从recycler对象回收站获取对象过程剖析
这篇文章主要为大家介绍了Netty分布式从recycler获取对象的过程源码剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2022-03-03Java微服务Filter过滤器集成Sentinel实现网关限流过程详解
这篇文章主要介绍了Java微服务Filter过滤器集成Sentinel实现网关限流过程,首先Sentinel规则的存储默认是存储在内存的,应用重启之后规则会丢失。因此我们通过配置中心Nacos保存规则,然后通过定时拉取Nacos数据来获取规则配置,可以做到动态实时的刷新规则2023-02-02Spring Boot使用profile如何配置不同环境的配置文件
,springboot支持通过不同的profile来配置不同环境的配置,下面就大致介绍一下yml配置文件跟properties配置文件怎么使用profile配置不同环境的配置文件2018-01-01springboot下ueditor上传功能的实现及遇到的问题
这篇文章主要介绍了springboot下ueditor上传功能的实现及遇到的问题,本文分步骤通过实例截图给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下2019-11-11
最新评论