mybatis中#{}和${}传参的区别

使用#传入参数是,sql语句解析是会加上‘‘,比如

select * from table where name = #{name} ,

传入的name为小李,那么最后打印出来的就是

select * from table where name = ‘小李’,

就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,

#{}传参能防止sql注入,如果在mapper文件中中,你用

select * from table where name = ${name}

那么解析出来的sql就是

select * from table where name = 小李,

这种语句在某些数据库是要报错的。

如果你传入的参数为 单引号‘那么如果使用${},这种方式 那么是会报错的,

相反,另一种场景,如果你要做动态的排序,比如  order by   column,这个时候务必要用${column},因为如果你使用了#{column},那么打印出来的将会是

select * from table order by  ‘name‘

这样的结果同样错误!!!!

时间: 2024-10-11 09:14:53

mybatis中#{}和${}传参的区别的相关文章

Mybatis中#{}和${}传参的区别及#和$的区别小结

最近在用mybatis,之前用过ibatis,总体来说差不多,不过还是遇到了不少问题,再次记录下, 比如说用#{},和 ${}传参的区别, 使用#传入参数是,sql语句解析是会加上"",比如 select * from table where name = #{name} ,传入的name为小李,那么最后打印出来的就是 select * from table where name = '小李',就是会当成字符串来解析,这样相比于$的好处是比较明显对的吧,#{}传参能防止sql注入,如果

Mybatis 中在传参时,${} 和#{} 的区别

介绍 MyBatis中使用parameterType向SQL语句传参,parameterType后的类型可以是基本类型int,String,HashMap和java自定义类型. 在SQL中引用这些参数的时候,可以使用两种方式#{parameterName}或者${parameterName}. #{} #将传入的数据都当成一个字符串,会对自动传入的数据加一个双引号. 例如:order by #{parameterName} //或取Map中的value#{Key}也是一样操作. 假设传入参数是“

Mybatis批量和传参

MyBatis中批量插入 方法一: <insert id="insertbatch" parameterType="java.util.List"> <selectKey keyProperty="fetchTime" order="BEFORE" resultType="java.lang.String"> SELECT CURRENT_TIMESTAMP() </selec

SQL存储过程中,传参获取指定条数的记录

假设传入参数 为 @TopCount 直接写 Select top @topcount * from table 是不行的. 可以考虑使用SET ROWCOUNT 示例如下 ALTER PROCEDURE [dbo].[P_CSM_SelectHandleResult] @TopCount int=50 AS BEGIN SET NOCOUNT ON; set rowcount @TopCount SELECT * from HandleResult order by HandleIndex d

params 和 query 传参的区别

很多人都知道params 和  query  都可以在页面跳转的时候传递参数. query更加类似于我们ajax中get传参,params则类似于post,说的再简单一点,前者在浏览器地址栏中显示参数,后者则不显示 最近有一个需求,比如详情页,要求按F5刷新完后数据还是能正常展示,详情页是在created后用ID请求. 如果是用query 传递过来的id,在this.$route,上会一直存在. 但是如果用params的时候,如果不做别的配置,直接在路由跳转的时间加params,F5刷新数据可能

vue路由传参query和params路由传参的区别?

相同点:router文件index.js 都是利用name属性. params传递时: params接收时利用this.$route.param进行接受: query路由传参: query接受利用this.$route.query 而展示上params路由传参像Ajax中post传参方式: query路由传参像get传参 原文地址:https://www.cnblogs.com/manban/p/12012567.html

mybatis中resultType和resultMap的区别

MyBatis中在查询进行select映射的时候,返回类型可以用resultType,也可以用resultMapresultType是直接表示返回类型的,而resultMap则是对外部ResultMap的引用但是resultType跟resultMap不能同时存在.在MyBatis进行查询映射的时候,其实查询出来的每一个属性都是放在一个对应的Map里面的,其中键是属性名,值则是其对应的值.当提供的返回类型属性是resultType的时候,MyBatis会将Map里面的键值对取出赋给resultT

MVC中的传参并在View中获取

首先action跳转的模式有如下: redirecttoaction("index");//一个参数时在本controller下,不传入参数. redirecttoaction(actionname,controllername) //可以直接跳到别的controller. redirecttoroute(new {controller="home",action="index"});//可跳到其他controller redirecttorou

WebForm中 页面传参的总结

1.Form表单传递(get/post)     前台: 1 姓名:<input id="TxtValue" name="TxtName" type="text" /><br /> 2 年龄:<input id="AgeValue" name="AgeValue" type="text" /><br /> 3 性别:<input ty