Java编程之MyBatis框架sql中变量引用方式#{}与${}的区别

编程教程 > Java (2591) 2024-11-26 14:39:04
Java编程之MyBatis框架sql中变量引用方式#{}与${}的区别

#{}和 ${}传参的区别如下:
1.使用#传入参数是,sql语句解析变量时候将添加""包裹变量,当成字符串来解析,$则不会用""包裹;
2.#能使用PreparedStatement语句提高一定的效率;
3.#{}传参能防止sql注入,如果你传入的参数为 单引号',那么如果使用${},这种方式 那么是会报错的;
4.如果要做动态的排序,动态查询某个字段比如 order by column,这个时候务必要用${},select * from table order by 'name' ,这样是没用
5.从安全角度出发,能用#就不要用$;

总结:
简单来说#{} 解析的是占位符?可以防止SQL注入, 比如打印出来的语句 
select * from table where id=?

然而${} 则是不能防止SQL注入打印出来的语句 
select * from table where id=2 

实实在

评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
Java编程之MyBatis框架sql中变量引用方式#{}与${}的区别
在Java编程中,ORM框架MyBatis处理@Select注解中的动态sql处理方法
spring boot mybatis 整合使用讲解介绍,spring boot与MyBatis的使用讲解介绍。spring boot mybatis xml mapper方式的入门和通过一个简...
引言    通过之前spring boot mybatis 整合的讲解: spring boot mybaties整合  (spring boot mybaties 整合 基于Java注解方式写...
Java编程软件有哪些?常用Java编程软件下载、安装和使用说明
spring boot框架整合MyBatis数据库暂时选用MySQL
idea Mybatis generator插件的配置和使用,在eclipse中,我们可以在eclipse的插件市场安装一个Mybatis generator的插件。然后对Mybatis gen...
mybatis plus 逻辑删除使用说明全局逻辑值配置,application.properties# 逻辑已删除值(默认为 1) mybatis-plus.global-config.db...
MyBatis generator 表名/字段名下划线转驼峰,Spring Boot 2.0 整合MyBatis generator 表名/字段名下划线转驼峰 idea上的配置
Java编程中Spring Boot整合RabbitMQ实现消息中间件RabbitMQ的使用 1 主要用spring-boot-starter-amqp来整合R
mybatis 开启自动驼峰转换默认情况下,mybatis需要在mapper xml文件中编写一堆的ResultMap来对应Java Bean和数据库字段的关系。在开启驼峰转换后就不需要resu...
某些情况下,我们使用mybaties时需要使用IN(虽然IN数据多了效率不高,但是少量还是可以用得)条件查询,这时候我们就需要传递参数了,下面是mybaties处理IN条件得参数使用方法首先Ma...
MyBatis Insert插入数据返回主键的几种模式支持,包括@Insert注解,mapper.xml sql语句。mybatis insert插入数据返回i
       本文主要讲解在使用MyBatis 中通过mybaties generator生成基本操作代码,然后通过 MyBatis mapper 继承机制来解决某些情况下经常改表导致改mapp...