MyBatis-parameterType 取出入参值
SQL 映射文件的几种入参情况
一、单个基本类型参数
public MyUser selectMyUser(Integer id);
<!-- #{参数名或任意名}:取出参数值 -->
<select id="selectMyUser" resultType="myUser" parameterType="integer">
select * from myuser where id = #{id}
</select>
二、多个基本类型参数
多个参数会被封装成 一个Map,Key 为 param1...paramN,或者参数的索引 (0开始):arg0...argN,Value 为传入的参数值
public MyUser selectMyUserIdAndAge(Integer id,Integer age);
<!-- #{arg0}/#{param1}:取出参数值 -->
<select id="selectMyUserIdAndAge" resultType="myUser">
select * from myuser where id = #{param1} and age = #{arg1}
</select>
使用 @Param 注解
public MyUser selectMyUserIdAndAge(@Param("id") Integer id, @Param("age") Integer age);
<!-- #{@Param标识值}:取出参数值 -->
<select id="selectMyUserIdAndAge" resultType="myUser">
select * from myuser where id = #{id} and age = #{age}
</select>
封装成 Map 对象
public MyUser selectMyUserIdAndAgeOfMap(Map<String,Object> map);
<!-- #{key}:取出map中对应的值 -->
<select id="selectMyUserIdAndAgeOfMap" resultType="myUser">
select * from myuser where id = #{id} and age = #{age}
</select>
封装成一个类,例直接使用 POJO 对象
public Integer updateMyUser(MyUser user);
<!-- #{属性名}:取出传入pojo的属性值 -->
<update id="updateMyUser" parameterType="myUser">
update myuser set name=#{name},age=#{age} where id=#{id}
</update>
三、Collection 集合类型
public MyUser selectMyUserByList(List<Integer> ids);
<!-- #{collection[0]}:取出参数值,若为 List 还可使用 #{list[0]} -->
<select id="selectMyUserByList" resultType="myUser">
select * from myuser where id = #{list[0]}
</select>
四、Array 数组类型
public MyUser selectMyUserByArray(Integer[] integers);
<!-- #{array[0]}:取出参数值 -->
<select id="selectMyUserByArray" resultType="myUser">
select * from myuser where id = #{array[0]}
</select>
五、多种参数类型
public MyUser selectMyUserIdAndAge(Integer id, @Param("user") MyUser user);
<select id="selectMyUserIdAndAge" resultType="myUser">
select * from myuser where id = #{arg0} and age = #{user.age}
</select>
附上 MyBatis 封装集合的方法
org.apache.ibatis.session.defaults.DefaultSqlSession
public class DefaultSqlSession implements SqlSession {
private Object wrapCollection(final Object object) {
if (object instanceof Collection) {
StrictMap<Object> map = new StrictMap<>();
map.put("collection", object);
if (object instanceof List) {
map.put("list", object);
}
return map;
} else if (object != null && object.getClass().isArray()) {
StrictMap<Object> map = new StrictMap<>();
map.put("array", object);
return map;
}
return object;
}
如果传入的是 Collection(List、Set)集合类型或者是 Array 数组类型,会把传入的 Collection 集合或者 Array 数组封装在 Map 中。
MyBatis-parameterType 取出入参值的更多相关文章
- MyBatis 从浅入深 随笔整理
MyBatis? archetypeCatalog = internal 本文档单独出现的_parameter都标识为变量名 一.三个基本要素: 核心接口和类 MyBatis 核心配置文件 SQL映射 ...
- 关于用mybatis调用存储过程时的入参和出参的传递方法
一.问题描述 a) 目前调用读的存储过程的接口定义一般是:void ReadDatalogs(Map<String,Object> map);,入参和出参都在这个map里 ...
- springMVC使用map接收入参 + mybatis使用map 传入查询参数
测试例子: controllel层 ,使用map接收请求参数,通过Debug可以看到,请求中的参数的值都是字符串形式,如果将这个接收参数的map直接传入service,mybatis接收参数时会报错, ...
- Mybatis调用PostgreSQL存储过程实现数组入参传递
注:本文来源于 < Mybatis调用PostgreSQL存储过程实现数组入参传递 > 前言 项目中用到了Mybatis调用PostgreSQL存储过程(自定义函数)相关操作,由于Pos ...
- python学习笔记(九)函数返回多个值,列表生成式,循环多个变量,入参格式声明
一.函数返回多个值 1.函数如果返回多个值的话,它会把这几个值放到一个元组里面2.函数如果返回多个值的话,也可以用多个变量来接收 def say(): num1 = num2 = num3 = ret ...
- mybatis入参方式和缓冲
1.mybatis入参方式 @Param注解参数(注解) 封装成对象入参 public int updatePassword(@Param("id")int id,@Param(& ...
- JMeter使用JSON Extractor插件实现将一个接口的JSON返回值作为下一个接口的入参
##补充## 接口响应数据,一般为JSON,HTML格式的数据. 对于HTML的响应结果提取,可以使用正则表达式,也可以通过XPath来提取:对于JSON格式的数据,可以用正则表达式,JSON Ext ...
- mybatis框架之多参数入参--传入Map集合
需求:查询出指定性别和用户角色列表下的用户列表信息 实际上:mybatis在入参的时候,都是将参数封装成为map集合进行入参的,不管你是单参数入参,还是多参数入参,都是可以封装成map集合的,这是无可 ...
- postman 上一个接口的返回值作为下一个接口的入参
在使用postman做接口测试的时候,在多个接口的测试中,如果需要上一个接口的返回值作为下一个接口的入参,其基本思路是: 1.获取上一个接口的返回值 2.将返回值设置成环境变量或者全局变量 3.设置下 ...
随机推荐
- Codeforces Round #470 Div. 1
A:暴力枚举x2的因子,由此暴力枚举x1,显然此时减去其最大质因子并+1即为最小x0. #include<iostream> #include<cstdio> #include ...
- 第四十天 并发编程之io模型
一.今日内容 1.网络IO的两个阶段 waitdata copydata 2阻塞IO模型 之前写的都是阻塞 无论多线程 多进程 还是 进程池 线程池 3.非阻塞IO模型 在非阻塞IO中 需要不断循环询 ...
- 洛谷P2084 进制转换
题目背景 无 题目描述 今天小明学会了进制转换,比如(10101)2 ,那么它的十进制表示的式子就是 : 1*2^4+0*2^3+1*2^2+0*2^1+1*2^0, 那么请你编程实现,将一个M进制的 ...
- CODEFORCES掉RATING记 #2
比赛:Codeforces Round #425 (Div. 2) 时间:2017.7.25晚 先orz zjt rank4 一场加300rating A:傻题,判断\(\lfloor\frac{n} ...
- windows刷新本机DNS缓存
ipconfig /flushdns
- ElasticSearch5.4.1 搜索引擎搭建文档
安装配置JDK环境JDK安装(不能安装JRE)JDK下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-download ...
- 【BZOJ3874】[AHOI&JSOI2014]宅男计划(贪心,三分)
[BZOJ3874][AHOI&JSOI2014]宅男计划(贪心,三分) 题面 BZOJ 洛谷 题解 大力猜想一最长的天数和购买外卖的总次数是单峰的.感性理解一下就是买\(0\)次是\(0\) ...
- 故障排错-ping dup!
ping DUP! ping一个vc中虚拟机的地址发现如下,出现了DUP! . 解决方式如下: 1.根据mac地址找到虚拟机网卡的端口组 然后编辑绑定和故障切换,切换负责平衡
- 压缩JS,CSS的工具
目标: 压缩项目中的JS,CSS文件. 方法一:使用uglifyjs uglifycss 压缩JS: 1.安装NODEJS.是一个在服务端运行的JS语言.下载地址https://nodejs.org/ ...
- centos7下安装vnc更改vnc默认端口号
应用场景:某些情景下,需要用的linux的桌面环境,Ubuntu的桌面性能在linux发行版中算是数一数二的,如果不熟悉Debian系统,Centos/RHEL系列也行: 我这里的场景是开发人员不 ...