一、接口中只有一个参数

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. Win64 驱动内核编程-5.内核里操作文件

    内核里操作文件 RING0 操作文件和 RING3 操作文件在流程上没什么大的区别,也是"获得文件句柄->读/写/删/改->关闭文件句柄"的模式.当然了,只能用内核 A ...

  2. Win64 驱动内核编程-30.枚举与删除线程回调

    枚举与删除线程回调 进程回调可以监视进程的创建和退出,这个在前面的章节已经总结过了.某些游戏保护的驱动喜欢用这个函数来监视有没有黑名单中的程序运行,如果运行则阻止运行或者把游戏退出.而线程回调则通常用 ...

  3. (2) arm 指令条件码

    条件码助记符 标志 含义 EQ Z=1 相等 NE Z=0 不相等 CS/HS C=1 无符号数大于或等于 CC/LO C=0 无符号数小于 MI N=1 负数 PL N=0 正数或0 VS V=1 ...

  4. MFC ListControl用法合集

    以下未经说明,listctrl 默认view 风格为report ------------------------------------------------------------------- ...

  5. druid-spring-boot-starter的配置

    #数据源基本信息 spring: datasource: druid: username: root password: 123456 url: jdbc:mysql://localhost:3306 ...

  6. ArrayList初步使用

    ️Practice the usage of ArrayList all of String with a exampe of NoteBook. ArrayList all of String的部分 ...

  7. 【c#】 使用Directory.GetFiles获取局域网中任意电脑指定文件夹下的文件

    本文为老魏原创,如需转载请留言 格式如下: // 获取IP地址为10.172.10.167下D盘下railway下的所有文件 string[] picArray = Directory.GetFile ...

  8. 『政善治』Postman工具 — 8、Postman中Pre-request Script的使用

    目录 1.Pre-request Script介绍 2.常用SNIPPETS(片段)说明 (1)获取变量脚本: (2)设置变量脚本: (3)清空变量脚本: (4)Send a request代码片段 ...

  9. Python正则表达式的七个使用范例

    本文由 伯乐在线 - 左手的灵魂 翻译.未经许可,禁止转载!英文出处:thegeekstuff.欢迎加入翻译组.http://blog.jobbole.com/74844/ 作为一个概念而言,正则表达 ...

  10. 技能Get·BOM头是什么?

    阅文时长 | 0.26分钟 字数统计 | 472.8字符 主要内容 | 1.引言&背景 2.BOM头是什么? 3.如何创建或取消BOM头? 4.如何判断文件是否包含BOM头? 5.声明与参考资 ...