Mybatis映射文件中的参数传递
一、接口中只有一个参数
1.参数是基本类型or基本类型的包装类or字符串类型
这种情况下映射文件中#{}里的内容可以是任意的,你可以使用#{xxx} 或 #{abc} .....因为此时#{}相当于一个占位符。

public interface EmployeeMapper {
public Employee getEmpById(Integer id);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmpById" resultType="com.xj.domain.Employee">
select * from employee where id = #{xxx}
</select>
</mapper>
映射文件
2.参数是对象类型
这种情况下直接通过 #{对象属性名} 即可取值。

public interface EmployeeMapper {
public void saveEmp();
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<insert id="saveEmp">
INSERT INTO employee(id,lastName,email,gender,d_id) values(#{id},#{lastName},#{email},#{gender},#{dId})
</insert>
</mapper>
映射文件
3.参数是Map类型
这种情况下可以直接跟据map的key进行取值。

public interface EmployeeMapper {
public Employee getEmp(Map<String,Object> map);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmp" resultType="com.xj.domain.Employee">
SELECT * FROM employee WHERE id = #{id} AND lastName = #{lastName}
</select>
</mapper>
映射文件
4.参数是Conlection、数组类型的
方式一:使用mybatis默认提供的方式
这种情况下mybatis也会帮我们对参数进行特殊处理,mybtis同样把Conlection、数组类型的参数封装为Map,如果是Collection类型则Map的key为collection,如果是Array类型则Map的key为array。特殊的如List,他的key为list,但是由于List也属于Collection,所以key也可以用collection。

public interface EmployeeMapper {
public Employee getEmpById(List<Integer> ids);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmpById" resultType="com.xj.domain.Employee">
select * from employee where id = #{list[0]}
</select>
</mapper>
映射文件
方式二:使用@Param注解
我们可以在接口的参数上标注@Param注解,指定参数的名称,然后映射文件中就可以直接通过#{注解指定的参数名}进行取值

public interface EmployeeMapper {
public Employee getEmpById(@Param("idList") List<Integer> ids);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmpById" resultType="com.xj.domain.Employee">
select * from employee where id = #{idList[0]}
</select>
</mapper>
映射文件
二、接口中有两个及两个以上参数
1.多个参数都是基本类型or基本类型的包装类orString类型
方式一:使用mybatis默认提供的方式
有多个参数时,mybatis会把这多个参数封装为Map类型,这个Map中的key为param1,param2,....,paramN。所以我们要取出第一个参数就可以用#{param1}取出,要取第N个参数就用#{paramN}。

public interface EmployeeMapper {
public Employee getEmp(String lastName,Integer id);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmp" resultType="com.xj.domain.Employee">
SELECT * FROM employee WHERE id = #{param2} AND lastName = #{param1}
</select>
</mapper>
映射文件
方式二:使用@Param注解
我们可以在接口的参数上标注@Param注解,指定参数的名称,然后映射文件中就可以直接通过#{注解指定的参数名}进行取值

public interface EmployeeMapper {
public Employee getEmp(@Param("name") String lastName,@Param("id") Integer id);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmp" resultType="com.xj.domain.Employee">
SELECT * FROM employee WHERE id = #{id} AND lastName = #{name}
</select>
</mapper>
映射文件
2.多个参数中既有对象类型,又有参数是基本类型or基本类型的包装类or字符串类型

public interface EmployeeMapper {
public Employee getEmp(@Param("id") Integer id,@Param("emp") Employee employee);
}
接口

<mapper namespace="com.xj.mapper.EmployeeMapper">
<select id="getEmp" resultType="com.xj.domain.Employee">
SELECT * FROM employee WHERE id = #{id} AND lastName = #{emp.lastName}
</select>
</mapper>
映射文件
Mybatis映射文件中的参数传递的更多相关文章
- Mybatis映射文件中#取值时指定参数相关规则
Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...
- Mybatis映射文件中数据库表列名称和POJO成员域的联系
下面是Mybatis的SQL映射文件. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ma ...
- Mybatis映射文件中的标签的使用
<foreach> <!-- foreach --> <delete id="delMulti" parameterType="java.u ...
- Mybatis映射文件
Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...
- MyBatis映射文件的resultMap如何做表关联
MyBatis的核心是其映射文件,SqlMap文件,里面配置了项目中用到了什么SQL语句,和数据库相关的逻辑都在这个映射文件里.顾名思义,映射文件就是对Java对象和SQL的映射.这里简单介绍一下映射 ...
- Mybatis --- 映射文件、参数处理、参数值的获取、select元素
映射文件:指导着MyBatis如何进行数据库增删改查, 有着非常重要的意义: - cache 命名空间的二级缓存配置 - cache-ref 其他命名空间缓存配置的引用. - result ...
- Mybatis映射文件的自动映射与手动映射问题
Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...
- MyBatis映射文件1(增删改、insert获取自增主键值)
增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...
- mybatis xml 文件中like模糊查询
1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. 2.CONCAT()函数 My ...
随机推荐
- [CTF]跳舞的小人
[CTF]跳舞的小人 来自夏洛克福尔摩斯在<归来记>中侦探案件使用的一种加密方式. 对应的明文是 AT ELRIGES (住在埃尔里奇) COME ELSIE (来吧 埃尔茜) NEVER ...
- svn客户端访问失败,错误“请求的名称有效,但是找不到请求的类型”的解决
1.问题描述:visualSVN客户端在其他机子访问出现以下问题(服务端装在我的电脑上,我本机客户端可以正常访问) 2. 原因分析:SVN客户端访问服务器需要输入URL地址,URL地址分为两种方式.一 ...
- 【Tavern】1.tavern测试框架介绍
目录 1. Tavern 和 Postman 2. 安装Python 3. 安装Tavern 4. 第一个测试用例 1. Tavern 和 Postman Tavern是一个用Python实现的接口自 ...
- MySQL8.0大表秒加字段,是真的吗?
前言: 很早就听说 MySQL8.0 支持快速加列,可以实现大表秒级加字段.笔者自己本地也有8.0环境,但一直未进行测试.本篇文章我们就一起来看下 MySQL8.0 快速加列到底要如何操作. 1.了解 ...
- Ubuntu切换到root账户
使用命令sudo su或sudo -i然后输入密码就可以切换到root帐号,exit可以退出.
- lua编译为二进制方式
当不想使用户看到lua源码,文本文件可以通过luac,把lua文本文件"编译"成二进制的文件. lc@lc-virtual-machine:~/lua$ luac -o redis ...
- [bug] eclipse 点击new菜单后没有新建java project或class选项
参考 https://blog.csdn.net/u013001763/article/details/54405758
- Deepin/Uos系统更新源失败。提示:E: 仓库 “http://packages.chinauos.cn/uos eagle InRelease” 没有数字签名
Deepin/Uos系统更新源失败.提示:E: 仓库 "http://packages.chinauos.cn/uos eagle InRelease" 没有数字签名 n大橘为重n ...
- Docker创建镜像以及私有仓库
Docker的安装及镜像.容器的基本操作详见博客https://blog.51cto.com/11134648/2160257下面介绍Docker创建镜像和创建私有仓库的方法,详细如下: 创建镜像 创 ...
- Ubuntu 16.04 Bridge配置
Ubuntu 16.04 Bridge配置 一.安装网桥拓展包 bridge-utils root@ubuntu:~# apt-get install bridge-utils 二.创建网桥设备 // ...