参数命名

POJO

如果多个参数,正好是业务逻辑的数据模型,那么我们就可以直接传入POJO,这样#{}中就可以直接使用属性名

Map

如果多个参数不是业务逻辑的数据模型,没有对应的POJO,为了方便,我们可以传入一个map,此时#{key}就是取出map的值

在接口中创建一个新方法:

Employee getEmpByMap(Map<String,Object> map);

创建新的<select>标签

  1. <select id="getEmpByMap" resultType="com.figsprite.bean.Employee">  
  2.     select id,last_name lastName,gender,email from tb_employee where id = #{id} and last_name = #{lastName}  
  3. </select>  

然后我们再做测试

  1. @Test  
  2. public void test7() throws IOException {  
  3.     SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();  
  4.     SqlSession openSession = sqlSessionFactory.openSession();  
  5.     try {  
  6.         EmployeeMapper mapper = openSession.getMapper(EmployeeMapper.class);  
  7.         Map<String,Object> map = new HashMap<>();  
  8.         map.put("id",3);  
  9.         map.put("lastName","Hello");  
  10.         Employee e = mapper.getEmpByMap(map);  
  11.         System.out.println(e);  
  12.     }finally {  
  13.         openSession.close();  
  14.     }  
  15. }  

TO

如果getEmpByMap方法调用频率很高,每次调用都需要重新创建一个map,这样的话,还是一件麻烦事,如果是这种情况,建议编写一个TO(Transfer Object),比如我们在查找分页记录时,需要多项内容:

Page{
int index;
int size;
}

思考题:

public Employee getEmp(@Param("id") Integet id,String lastName)

取值:idè#{id/param1} lastNameè#{param2}

public Employee getEmp(Integer id,@Param("e") Employee emp)

取值:idè#{param1} lastNameè#{param2.lastName/e.lastName}

public Employee getEmpById(List<Integer> ids)

如果是Collection类型或者是数组,也会特殊处理,封装在map,如果是Collection,那么key是Collection[i],如果是List,那么我们还可以使用list[i],至于数组,array[i]

取值:取第一个id值 idè#{list[0]}

转载于:https://www.cnblogs.com/figsprite/p/10735188.html

MyBatis映射文件3(参数处理Map)相关推荐

  1. [mybatis]映射文件_参数处理

    参数处理 单个参数:mybatis不会做特殊处理 #{参数名}:取出参数值 多个参数:mybatis会做特殊处理 多个参数会被封装成一个map key:param1-paramN,或者参数的索引 va ...

  2. [mybatis]映射文件_参数处理_#和$取值区别

    #{}:可以获取map中的值或者pojo对象属性的值 ${}:可以获取map中的值或者pojo对象属性的值 区别: #{}:是以预编译的形式,将参数设置到sql语句中,相当于原生jdbc的Prepar ...

  3. [mybatis]映射文件_参数处理_#取值时指定参数相关规则

    jdbcType通常需要在某种特定的条件下被设置: 在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认处理.比如Oracle(报错): jdbcType OTHER:无效 ...

  4. MyBatis映射文件(一)

    目录 一.MyBatis映射文件 1.insert.update.delete元素 2.主键生成方式 3.参数(Parameters)传递 (1)单个参数 (2)多个参数 (3)命名参数 (4)POJ ...

  5. 3 了解MyBatis映射文件

    3.1 认识映射文件: 介绍:     MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC ...

  6. Mybatis映射文件!CDATA[[]] 转义问题

    有没有觉得在mybatis映射文件写>(大于),<(小于)的时候贼麻烦,还得把"<",">"换位为"<", & ...

  7. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  8. MyBatis映射文件如何给数据库的int类型字段“插入”string类型记录

    MyBatis映射文件如何给数据库的int类型字段"插入"string类型记录. 数据库中对应字段名称和类型如下: 给数据库的int类型字段"插入"string ...

  9. mybatis 取查询值_Mybatis --- 映射文件、参数处理、参数值的获取、select元素

    这样就可以在insert函数中获取新添加的用户的 id主键,否则获取不到 select * from student where id = #{id} insert into student(name ...

最新文章

  1. 的拼音怎么改正_「我就退出家长群怎么了?」:多少中年父母的崩溃,从家长群开始...
  2. 软件构造学习笔记-第四周
  3. 【Elasticsearch】解决Elasticsearch HTTP方式查询报SocketTimeoutException的问题 Connection reset by peer
  4. java socket 实现 http_Java Socket编程 - 基于Socket实现HTTP下载客户端
  5. 查看sql_一键查看Oracle数据库当前SQL_WORKAREA_ACTIVE的相关操作
  6. java forkjoinpool_Java并发——Fork/Join框架与ForkJoinPool
  7. Hands-on C++ Game Animation Programming阅读笔记(八)
  8. 2022年聚合工艺特种作业证考试题库及在线模拟考试
  9. Linux补全命令分析,实现Linux下上下键和命令补全
  10. PS教程证件照底片更换颜色
  11. 九月十月百度人搜,阿里巴巴,腾讯华为小米搜狗笔试面试八十题(2012年度笔试面试八十题)
  12. 搬家公司怎么收费 搬家收费标准
  13. placement delete
  14. 腾讯——云计算从业者认证系列1
  15. 测试打呼噜的软件,打呼噜人群福音!这款app能检测鼾声并提供一站式止鼾方案...
  16. 【全国数据】八大植被区划矢量数据(带坐标)
  17. 中国市场迎来AR-HUD元年
  18. 【学术相关】顶级论文创新点怎么找?中国高校首次获CVPR最佳学生论文奖有感...
  19. 融合AI技术的视频监控,为行业带来了哪些创新和突破?
  20. 自动生成单据编码方法

热门文章

  1. Java开发技术大杂烩(三)之电商项目优化、rabbitmq、Git、OSI、VIM、Intellj IDEA、HTTP、JS、Java...
  2. 控制器(下) -运维笔记
  3. SoftGrid教程系列
  4. 为你的Web程序加个启动画面
  5. Netflix的Hystrix使用教程
  6. [老生常谈] Linux 下读取windows共享目录
  7. VC98\mfc\lib' specified in 'LIB environment variable' 系统找不到指定路径
  8. OpenWrt的主Makefile工作过程-转
  9. 五种最常见的开源路由器第三方固件测评-转
  10. mysql group by cube_SparkSQL 中group by、grouping sets、rollup和cube方法详解