#{}
表示一个占位符号 通过#{}可以实现preparedStatement向占位符中设置值,自动进行java类型和jdbc类型转换,可以有效防止sql注入。
可以接收简单类型值或pojo属性值。 如果parameterType传输单个简单类型值,#{}括号中可以是value或其它名称。
${}
:
表示拼接sql串,通过${}可以将parameterType 传入的内容拼接在sql中且不进行jdbc类型转换
可以接收简单类型值或pojo属性值,如果parameterType传输单个简单类型值,${}括号中只能是value
#{}中内容的写法
例如:我们保存方法的参数是一个User对象,此处要写User对象中的属性名称。 它用的是ognl表达式。
ognl表达式: 它是apache提供的一种表达式语言,全称是: Object Graphic Navigation Language(对象图导航语言)
它是按照一定的语法格式来获取数据的。
语法格式: #{对象.对象}的方式
#{user.username}它会先去找user对象,然后在user对象中找到username属性,并调用getUsername()方法把值取出来。但是我们在parameterType属性上指定了实体类名称,所以可以省略user.而直接写username。