1、单个参数:
非自定义对象
传参:getStuById(Integer id);
取值:#{id}
单个基本类型参数,随便取值都行;#{ok}
对象:
传参:saveStudent(Student student)
取值:#{属性名}

2、多个参数:
传参:getStudentByLastNameAndAge(String lastName,Integer age)
取值:#{参数名}不好使;报错提示可用的参数是[0,1,param1,param2]
可用的取值方式:
1)#{参数索引} #{0} #{1}
2)#{param参数第几个} #{param1} #{param2}
原因:一但方法传入了多个参数以后,mybatis会进行一个处理;把这些参数全部放在一个map中;
map中的key就是参数的索引,或者是param1...N

3、命名参数:我们可以使用@Param注解来指定mybatis在给多个参数封装map的时候,这个参数使用的key;默认参数索引或者paramx
传参:public Student getStudentByLastNameAndAge(@Param("lastName")String lastName,@Param("age")Integer age);
取值:#{命名的参数名}或者#{paramx}

什么时候用基本类型传参:不将参数封装成pojo直接传给mybatis;很少用到;
有些方法的参数是业务无关的;

4、POJO:我们这么建议;如果我们传递的参数正好是业务逻辑定义的pojo,就用pojo;
传参:saveStudent(Student student);
取值:#{属性名}

5、Map(集合);
传参:public Student getStuByLastNameAndAge(Map<String, Object> map);
取值:#{key}

不管传什么?如果单个参数,mybatis直接就拿来用,如果多个参数,mybatis会将多个参数封装进一个map中,
封装参数用的key默认是0,1,paramx。。。,我们可以使用@Param("key")为这个参数指定一个新的key

传参: getStudent(@Param("stu")Student stu,@Param("map")Map<String,Object> hahamap,@Param("lastName")String lastName);
取值:
取值student对象中的age值:#{param1.age}===#{stu.age}
取值hahamap中的email:#{param2.email}===#{map.email}
取值lastName:#{param3}===#{lastName}

POJO,Map怎么选择?
业务逻辑中定义的POJO我们就使用它,有比较多临时的参数,并不是某个javaBean的,可以为了方便将其封装一个map传递。

TO:(Transfer Object)(专门用它来传递数据的)
POJO:(普通的java类)
DO:(Domain Object)对象模型
DTO:Data Transfer Object:数据传输对象
DAO:Data Access Object:数据访问对象
VO:Value Object:值对象;

传参在mybatis的sql映射文件中正确获取的更多相关文章

  1. 关于Mybatis的SQL映射文件中in关键字的用法

    有一个需求是可以选择多个设备进行删除,于是想到将多个设备id拼成字符串作为参数,以逗号隔开,如:"123,234,456". SQL如下: <delete id=" ...

  2. Mybatis(二) SQL映射文件

    SQL映射文件 单条件查询 1. 在UserMapper接口添加抽象方法 //根据用户名模糊查询 List<User> getUserListByName(); 2. 在UserMappe ...

  3. 初始MyBatis、SQL映射文件

    MyBatis入门 1.MyBatis前身是iBatis,是Apache的一个开源项目,2010年这个项目迁移到了Google Code,改名为MyBatis,2013年迁移到GitHub.是一个基于 ...

  4. mybatis的sql映射文件—增删改查

    前提:需要的包log4j.jar,mybatis-3.4.1.jar,mysql-connector-java-5.1.37-bin.jar 1.基本类 员工类 package com.hand.my ...

  5. Mybatis 的 Xml 映射文件中,不同的 Xml 映射文件,id 是否可以重复?

    不同的 Xml 映射文件,如果配置了 namespace,那么 id 可以重复:如果没有配 置 namespace,那么 id 不能重复: 原因就是 namespace+id 是作为 Map<S ...

  6. mybatis的sql映射文件不能打包进目录解决办法

    方法二: <build> <finalName>qwe</finalName> <plugins> <plugin> <groupId ...

  7. mybatis 传参为 Integer 时 ,Mapper 文件 中判断 条件 问题。

    <if test="valiStatus==null || valiStatus=='' || valiStatus==4 "> b.work_permit_card_ ...

  8. MyBatis 的基本要素—SQL 映射文件

    MyBatis 真正的强大在于映射语句,相对于它强大的功能,SQL 映射文件的配置却是相当简单.对比 SQL 映射配置和 JDBC 代码,发现使用 SQL 映射文件配置可减少 50% 以上的代码,并且 ...

  9. Mybatis SQL映射文件详解

    Mybatis SQL映射文件详解 mybatis除了有全局配置文件,还有映射文件,在映射文件中可以编写以下的顶级元素标签: cache – 该命名空间的缓存配置. cache-ref – 引用其它命 ...

随机推荐

  1. Oracle11g链接提示未“在本地计算机注册“OraOLEDB.Oracle”解决方法

    当 用,Provider=OraOLEDB.Oracle方式访问ORACLE11g数据库.出现 未在本地计算机注册“OraOLEDB.Oracle”提供程序提示.解决方案如下: 客户端环境:Win7 ...

  2. 检測iPhone/iPad设备方向的三种方法

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/iefreer/article/details/24210391 使用meta tag "v ...

  3. P3265 [JLOI2015]装备购买(高斯消元+贪心,线性代数)

    题意; 有n个装备,每个装备有m个属性,每件装备的价值为cost. 小哥,为了省钱,如果第j个装备的属性可以由其他准备组合而来.比如 每个装备属性表示为, b1, b2.......bm . 它可以由 ...

  4. WIN10安装时msxml4.0提示2502、2503解决办法

    原文地址:https://jingyan.baidu.com/album/b87fe19e54535552183568f5.html?picindex=1 在Win10中,在安装msi安装包的时候常常 ...

  5. ethereum/EIPs-1078 Universal login / signup using ENS subdomains

    https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1078.md eip title author discussions-to status ...

  6. 《OKR工作法》读书笔记(转)

    文章转自https://www.jianshu.com/p/c694363d5213

  7. JavaScript高级程序设计学习(六)之设计模式

    每种编程语言都有其自己的设计模式.不禁让人疑惑设计模式是用来做什么?有什么用? 简单的说,设计模式是为了让代码更简洁,更优雅,更完美. 同时设计模式也会让软件的性能更好,同时也会让程序员们更轻松.设计 ...

  8. Linux Kernel 4.21已更新:优化AMD 7nm Zen2架构

    导读 AMD 7nm Zen2处理器预计将于明年第一季推出,采用下一代7nm EPYC. Linux Kernel 4.21已经更新,以优化AMD 7nm EPYC Rome(罗马)处理器. AMD ...

  9. <<Linux kernel development>> Process Management

    The Process On modern operating systems,processes provide two virtualizations:a virtualized processo ...

  10. 软概(lesson 1):Javaweb实现用户登录界面

    一.问题描述 二.网站系统开发所需要的技术 网站界面开发:html 后台所需要的技术:java基本内容,数据库语句,连接数据库实现增删改查 本题所用技术:数据库链接以及增加功能,基本html语句 技术 ...