一、接口中只有一个参数

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映射文件中的参数传递的更多相关文章

  1. Mybatis映射文件中#取值时指定参数相关规则

    Mybatis映射文件中#取值时指定参数相关规则 在#{}中,除了需要的数值外,还可以规定参数的一些其他规则. 例如:javaType,jdbcType,mode(存储过程),numericScale ...

  2. Mybatis映射文件中数据库表列名称和POJO成员域的联系

    下面是Mybatis的SQL映射文件. <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE ma ...

  3. Mybatis映射文件中的标签的使用

    <foreach> <!-- foreach --> <delete id="delMulti" parameterType="java.u ...

  4. Mybatis映射文件

    Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...

  5. MyBatis映射文件的resultMap如何做表关联

    MyBatis的核心是其映射文件,SqlMap文件,里面配置了项目中用到了什么SQL语句,和数据库相关的逻辑都在这个映射文件里.顾名思义,映射文件就是对Java对象和SQL的映射.这里简单介绍一下映射 ...

  6. Mybatis --- 映射文件、参数处理、参数值的获取、select元素

    映射文件:指导着MyBatis如何进行数据库增删改查, 有着非常重要的意义:   - cache   命名空间的二级缓存配置 - cache-ref   其他命名空间缓存配置的引用. - result ...

  7. Mybatis映射文件的自动映射与手动映射问题

    Mapper XML 文件 MyBatis 的真正强大在于它的映射语句,也是它的魔力所在.由于它的异常强大,映射器的 XML 文件就显得相对简单.如果拿它跟具有相同功能的 JDBC 代码进行对比,你会 ...

  8. MyBatis映射文件1(增删改、insert获取自增主键值)

    增删改 Mybatis为我们提供了<insert>.<update>.<delete>标签来对应增删改操作 在接口中写增删改的抽象方法 void addEmp(Em ...

  9. mybatis xml 文件中like模糊查询

    1.直接传参法 直接传参法,就是将要查询的关键字keyword,在代码中拼接好要查询的格式,如%keyword%,然后直接作为参数传入mapper.xml的映射文件中. 2.CONCAT()函数 My ...

随机推荐

  1. drozer源码学习:app

    源码下载:https://github.com/mwrlabs/drozer:模块的源码位于src.drozer.modules,根据模块名来划分文件夹: app.auxiliary.exploit. ...

  2. 0901-生成对抗网络GAN的原理简介

    0901-生成对抗网络GAN的原理简介 目录 一.GAN 概述 二.GAN 的网络结构 三.通过一个举例具体化 GAN 四.GAN 的设计细节 pytorch完整教程目录:https://www.cn ...

  3. 测开之Python自动化全栈工程师+性能专项(送思维导图)

    测开之Python自动化全栈工程师+性能专项 功能测试基础 接口测试基础接口的通信原理与本质cookie.session.token详解接口测试的意义与测试方法接口测试用例的设计 app测试 app流 ...

  4. 仅用 CSS 实现多彩、智能的阴影

    背景 有没有想过如何创建从前景元素中继承某些颜色的阴影效果?阅读本文并找出如何实现方法吧! 前几天我经过家得宝(Home Depot,美国家得宝公司,全球领先的家居建材用品零售商),他们正在大规模展销 ...

  5. Educational Codeforces Round 96 (Rated for Div. 2)

    A. Number of Apartments 题意:求方程的解 思路:直接模拟就行 代码: #include<iostream> #include<cstdio> #incl ...

  6. react+antd 使用脚手架动态修改主题色

    最近做了一个需求,后台管理系统添加一个可以动态修改ant-design主题色.查询了大多数的文章,发现基本都是抄来抄去,而且文章记录的也一点也不详细.刚刚把这个功能做完了,顺便记录一下如何去修改主题色 ...

  7. UI设计师、平面设计师常用的网站大全,初学者必备,大家都在用!

    UI设计师.平面设计师常用的网站大全,初学者必备,大家都在用! 国外的花瓣--Pinterest • The world's catalog of ideas 颜格视觉--app界面设计大全--电商. ...

  8. 【Web前端HTML5&CSS3】06-盒模型

    笔记来源:尚硅谷Web前端HTML5&CSS3初学者零基础入门全套完整版 目录 盒模型 1. 文档流(normalflow) 2. 块元素 3. 行内元素 4. 盒子模型 盒模型.盒子模型.框 ...

  9. 使用 CSS perfer-* 规范,提升网站的可访问性与健壮性

    文本将介绍 CSS 媒体查询中新增的几个特性功能: prefers-reduced-motion prefers-color-scheme prefers-contrast prefers-reduc ...

  10. jQuery清空元素和克隆元素

    1.清空 $(function () { $('#btn').click(function () { $('#ul1').html('') $('#ul1').empty() $('#ul1').re ...