MyBatis探究-----接口类映射XML文件中符号$和#的区别

   1. $和#的区别

  • #{}和${}都可以获取map中的值或者pojo对象属性的值
  • #{}:是以预编译的形式,将参数设置到sql语句中,防止sql注入
  • ${}:取出的值直接拼装在sql语句中;会有安全问题

   2. $和#的用法

2.1 表名、排序作为变量时,必须使用 ${ }

select * from ${year}_salary where xxx;

select * from tbl_employee order by ${f_name} ${order}

2.2 能使用 #{ } 的地方就用 #{ }

接口映射文件中SQL语句:select * from t_employee where empId=${empId} and empName=#{empName}
执行的预编译SQL语句:select * from t_employee where empId=2 and empName=?

原文地址:https://www.cnblogs.com/fengfuwanliu/p/10596965.html

时间: 2024-10-08 20:34:52

MyBatis探究-----接口类映射XML文件中符号$和#的区别的相关文章

mybatis.xml文件中#与$符号的区别以及数学符号的处理

1.#{}表示一个占位符号,通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,#{}可以有效防止sql注入. #{}可以接收简单类型值或pojo属性值. 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称. 使用#传入参数是,sql语句解析是会加上"",比如  select * from table where name = #{name} ,传入的name为小李,那么最后打印出来的就是

阿里面试题:Mybatis中的Dao接口和XML文件里的SQL是如何建立关系的?

一.解析XML首先,Mybatis在初始化SqlSessionFactoryBean的时候,找到mapperLocations路径去解析里面所有的XML文件,这里我们重点关注两部分.1.创建SqlSourceMybatis会把每个SQL标签封装成SqlSource对象.然后根据SQL语句的不同,又分为动态SQL和静态SQL.其中,静态SQL包含一段String类型的sql语句:而动态SQL则是由一个个SqlNode组成. 假如我们有这样一个SQL: <select id="getUserB

【MyBatis学习05】SqlMapConfig.xml文件中的配置总结

经过上两篇博文的总结,对mybatis中的dao开发方法和流程基本掌握了,这一节主要来总结一下mybatis中的全局配置文件SqlMapConfig.xml在开发中的一些常用配置,首先看一下该全局配置文件中都有哪些可以配置的东西: 配置内容 作用 <properties> 用来加载属性文件 <settings> 用来设置全局参数 <typeAliases> 用来设置类型的别名 <typeHandlers> 用来设置类型处理器 <objectFactor

MyBatis Mapper.xml文件中 $和#的区别

MyBatis Mapper.xml文件中 $和#的区别 网上有很多,总之,简略的写一下,作为备忘.例子中假设参数名为 paramName,类型为 VARCHAR . 1.优先使用#{paramName,jdbcType=VARCHAR} 写法,除了可以防止sql注入以外,它还能在参数里含有单引号的时候自动转义, 而${paramName}由于是类似于拼接sql的写法,不具备此功能. 2.注意,使用 #{paramName,jdbcType=VARCHAR} 写法的时候,模糊查询的写法为:'%'

struts.xml文件中action配置、OGNL的投影映射、OGNL表达式的符号

在struts.xml文件中不同的action配置,请求的路径是不一样的 1.请求 path = user!query.action; 配置如下: <action name="user" class="com.bwf.code.action.UserAction"> <result name="queryUser">/query.jsp</result> </action> 2.请求path = u

事务配置在applicationContext.xml文件中不起作用,控制不了异常回滚

一.博主在学习到整合ssm框架的时候,遇到一个奇葩的问题就是将 事务的控制 ,写在在applicationContext.xml文件中不起作用,在事务控制的方法中,即使出现了异常,但是事务不会回滚的坑,按道理说,我们配置了事务,在异常发生是,运行时期的异常被我们的框架捕获到,就会为我们做出回滚的操作,但是就是没有,比如博主写的一个简单的转帐的事务,第一个账户的钱被扣除了,但是在执行完扣钱之后发生了异常但是我们在数据库中却发现,钱仍然被扣了, 博主也试过网上的大多数的方法,都是只说原因,并不能解决

Android - SpannableString或SpannableStringBuilder以及string.xml文件中的整型和string型代替

背景介绍 在开发应用过程中经常会遇到显示一些不同的字体风格的信息犹如默认的LockScreen上面的时间和充电信息.对于类似的情况,可能第一反应就是用不同的多个TextView来实现,对于每个TextView设置不同的字体风格以满足需求. 这里推荐的做法是使用android.text.*;和 android.text.style.*;下面的组件来实现RichText:也即在同一个TextView中设置不同的字体风格.对于某些应用,比如文本编辑,记事本,彩信,短信等地方,还必须使用这些组件才能达到

XML文件中关键字自动提示和不全配置

一.获得mybatis-3-config.dtd.mybatis-3-mapper.dtd 这两个文件. 建立一个Maven的项目 在Pom.xml文件中的Mybatis jar包的下载设置(也可以从网上直接找到需要的两个dtd文件).     步骤阅读 2 得到mybatis-3.1.1. jar包的位置 步骤阅读 3 找到mybatis-3.1.1. jar所在的文件夹 步骤阅读 4 将其复制到D:\MyBatis代码自动提示 文件夹下 步骤阅读 5 然后解压,得到mybatis-3-con

web.xml文件中的7个错误的安全配置

关于Java的web.xml文件中配置认证和授权有大 量 的 文章.本文不再去重新讲解如何配置角色.保护web资源和设置不同类型的认证,让我们来看看web.xml文件中的一些常见的安全错误配置. (1) 自定义的错误页面没有配置 默认情况下,Java Web应用在发生错误时会将详细的错误信息展示出来,这将暴露服务器版本和详细的堆栈信息,在有些情况下,甚至会显示Java代码的代码片段.这些信息对为他们的病毒需找更多信息的黑客来说是一种恩惠.幸运的是,通过配置web.xml文件来展示自定义的错误页面