• #{}:可以获取map中的值或者pojo对象属性的值
  • ${}:可以获取map中的值或者pojo对象属性的值
    • 区别:

      • #{}:是以预编译的形式,将参数设置到sql语句中,相当于原生jdbc的PreparedStatement;防止sql注入
      • ${}:取出的值直接拼接在sql语句中;会有安全问题;
      • 大多情况下,我们取参数的值都应该去使用#{};

DEBUG 01-23 09:00:50,805 ==>  Preparing: select * from tb1_employee where id = 1 and last_name = ?   (BaseJdbcLogger.java:159)
DEBUG 01-23 09:00:50,835 ==> Parameters: Tom(String)  (BaseJdbcLogger.java:159)
DEBUG 01-23 09:00:50,852 <==      Total: 0  (BaseJdbcLogger.java:159)

原生jdbc不支持占位符的地方,我们就可以使用${}进行取值
比如分表:按照年份分表拆分,排序等

select * from 2017_salary where xxx;

写成:

select * from ${year}_salary where xxx;
select * from tb1_employee order by ${f_name} ${order}
  • example
    <!--public Employee getEmpByMap(Map<String,Object> map);--><select id="getEmpByMap" resultType="com.atguigu.mybatis.bean.Employee">select * from ${tableName} where id = #{id} and last_name = #{lastName}</select>
 @Testpublic void test03() throws IOException {SqlSessionFactory sqlSessionFactory = getSqlSessionFactory();SqlSession sqlSession = sqlSessionFactory.openSession();try{EmployeeMapper mapper = sqlSession.getMapper(EmployeeMapper.class);Map<String,Object> map = new HashMap<>();map.put("id",1);map.put("lastName","Tom");map.put("tableName","tb1_employee");Employee employee = mapper.getEmpByMap(map);System.out.println(employee);}finally {sqlSession.close();}}

[mybatis]映射文件_参数处理_#和$取值区别相关推荐

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

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

  2. MyBatis映射文件3(参数处理Map)

    参数命名 POJO 如果多个参数,正好是业务逻辑的数据模型,那么我们就可以直接传入POJO,这样#{}中就可以直接使用属性名 Map 如果多个参数不是业务逻辑的数据模型,没有对应的POJO,为了方便, ...

  3. MyBatis映射文件(一)

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

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

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

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

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

  6. 3 了解MyBatis映射文件

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

  7. R语言使用rnorm函数生成正太分布数据、使用plot函数可视化散点图、使用ylim参数自定义Y轴取值范围

    R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用ylim参数自定义Y轴取值范围 目录 R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用ylim参 ...

  8. R语言使用rnorm函数生成正太分布数据、使用plot函数可视化散点图、使用xlim参数自定义X轴取值范围

    R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用xlim参数自定义X轴取值范围 目录 R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用xlim参 ...

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

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

最新文章

  1. 支付和清算就是信息流和资金流
  2. 收集Java面试题知识点(Java基础部分三)
  3. python 中爬虫的运用
  4. vivado不识别HLS生成的IP解决方法
  5. java设计模式懒汉_java设计模式-懒汉设计模式
  6. 收集常用电路基础公式换算
  7. 一份关于.NET Core云原生采用情况调查
  8. 通过日志恢复MSSQL数据例子
  9. pytorch 模型可视化_【深度学习】高效使用Pytorch的6个技巧:为你的训练Pipeline提供强大动力...
  10. BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】
  11. CRC-16的原理和实现
  12. android 谷歌输入法切换,ANDROID谷歌拼音 输入法肿么切换?
  13. VOC 2007数据集结构
  14. 药品质量检测的方法之一:质谱分析法
  15. 安卓投屏软件_安卓投屏下载-安卓投屏下载v7.7.3
  16. 一文解读时间序列基本概念
  17. controller(控制器)
  18. seaborn绘图基础介绍
  19. 金融计算机次方的计算,金融理财计算器使用方法CASIOFC100,200.pdf
  20. mysql不包含模糊查询

热门文章

  1. 【ArcGIS遇上Python】Python批量将多个文件夹下的多个影像数据镶嵌至新栅格
  2. ArcGIS 10.7 模型构建器Model Builder空间建模流程化作业案例----影像拼接与掩膜裁剪
  3. Java Eclipse开发环境搭建及注意事项
  4. Matlab图形绘制
  5. LeetCode之Search Insert Position
  6. 看得懂的外观设计模式 python3 实现
  7. ad域管理与维护_AD域管理员账号下发
  8. 快速掌握MATLAB应用,只要从这一步开始!
  9. mysql查找最高分最低分_sql查询最高分、最低分和平均分语句
  10. mysql字段简索引_MySQL优化看这一篇就够了