[mybatis]映射文件_参数处理_#和$取值区别
- #{}:可以获取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]映射文件_参数处理_#和$取值区别相关推荐
- Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项
Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...
- MyBatis映射文件3(参数处理Map)
参数命名 POJO 如果多个参数,正好是业务逻辑的数据模型,那么我们就可以直接传入POJO,这样#{}中就可以直接使用属性名 Map 如果多个参数不是业务逻辑的数据模型,没有对应的POJO,为了方便, ...
- MyBatis映射文件(一)
目录 一.MyBatis映射文件 1.insert.update.delete元素 2.主键生成方式 3.参数(Parameters)传递 (1)单个参数 (2)多个参数 (3)命名参数 (4)POJ ...
- Mybatis映射文件!CDATA[[]] 转义问题
有没有觉得在mybatis映射文件写>(大于),<(小于)的时候贼麻烦,还得把"<",">"换位为"<", & ...
- MyBatis映射文件如何给数据库的int类型字段“插入”string类型记录
MyBatis映射文件如何给数据库的int类型字段"插入"string类型记录. 数据库中对应字段名称和类型如下: 给数据库的int类型字段"插入"string ...
- 3 了解MyBatis映射文件
3.1 认识映射文件: 介绍: MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC ...
- R语言使用rnorm函数生成正太分布数据、使用plot函数可视化散点图、使用ylim参数自定义Y轴取值范围
R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用ylim参数自定义Y轴取值范围 目录 R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用ylim参 ...
- R语言使用rnorm函数生成正太分布数据、使用plot函数可视化散点图、使用xlim参数自定义X轴取值范围
R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用xlim参数自定义X轴取值范围 目录 R语言使用rnorm函数生成正太分布数据.使用plot函数可视化散点图.使用xlim参 ...
- [mybatis]映射文件_参数处理
参数处理 单个参数:mybatis不会做特殊处理 #{参数名}:取出参数值 多个参数:mybatis会做特殊处理 多个参数会被封装成一个map key:param1-paramN,或者参数的索引 va ...
最新文章
- 支付和清算就是信息流和资金流
- 收集Java面试题知识点(Java基础部分三)
- python 中爬虫的运用
- vivado不识别HLS生成的IP解决方法
- java设计模式懒汉_java设计模式-懒汉设计模式
- 收集常用电路基础公式换算
- 一份关于.NET Core云原生采用情况调查
- 通过日志恢复MSSQL数据例子
- pytorch 模型可视化_【深度学习】高效使用Pytorch的6个技巧:为你的训练Pipeline提供强大动力...
- BZOJ 1607 [Usaco2008 Dec]Patting Heads 轻拍牛头:统计 + 筛法【调和级数】
- CRC-16的原理和实现
- android 谷歌输入法切换,ANDROID谷歌拼音 输入法肿么切换?
- VOC 2007数据集结构
- 药品质量检测的方法之一:质谱分析法
- 安卓投屏软件_安卓投屏下载-安卓投屏下载v7.7.3
- 一文解读时间序列基本概念
- controller(控制器)
- seaborn绘图基础介绍
- 金融计算机次方的计算,金融理财计算器使用方法CASIOFC100,200.pdf
- mysql不包含模糊查询
热门文章
- 【ArcGIS遇上Python】Python批量将多个文件夹下的多个影像数据镶嵌至新栅格
- ArcGIS 10.7 模型构建器Model Builder空间建模流程化作业案例----影像拼接与掩膜裁剪
- Java Eclipse开发环境搭建及注意事项
- Matlab图形绘制
- LeetCode之Search Insert Position
- 看得懂的外观设计模式 python3 实现
- ad域管理与维护_AD域管理员账号下发
- 快速掌握MATLAB应用,只要从这一步开始!
- mysql查找最高分最低分_sql查询最高分、最低分和平均分语句
- mysql字段简索引_MySQL优化看这一篇就够了