在数据库中,$和#代表什么意思?
模糊查询,select*fromteacherwhereteacher_namelike'%${dim}%'为什么是$而不是#?模糊查询中,想要即可以查名字,又可以查性别...
模糊查询,select * from teacher where teacher_name like '%${dim}%' 为什么是$而不是#? 模糊查询中,想要即可以查名字,又可以查性别等等,该怎么修改牧户查询语句
展开
1个回答
展开全部
${} 这是你的编程语言定义参数的写法吧,和数据库没有太大的关系
追问
我用的是ssm框架,在mapper.xml文件里,其他的参数都是#{},唯独模糊查询#不被允许,查不出来,只能是$符号
追答
#{}与${}
1. #{}实现向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符。
<select id="findUserById" parameterType="int" resultType="User">
SELECT * FROM USER WHERE id = #{value}
</select>
使用占位符可以防止sql的注入,在使用时不需要关心参数的类型,mybatis会自动的进行Java与jdbc的转换。#{} 可以接受简单类型和pojo的属性值。如果parameterType中指定的是单个的简单类型,#{}中可以使用value或是其他值。
2. #{}与${}的不同:
通过${}可以将parameterType传入的内容拼接在sql中,并且不进行jdbc类型转换,${}可以接受简单类型和pojo的属性值,若parameterType为单个简单类型时,${}中必须使用value。使用${}不能防止sql注入,但有时会很方便,例如:
<select id="findUserByUsername" parameterType="java.lang.String" resultType="User">
SELECT * FROM USER WHERE username LIKE '%${value}%'
</select>
3. 再比如order by排序,如果将列名通过参数传入sql,根据传的列名进行排序,应该写为:
ORDER BY${columnName}
如果使用#{}将无法实现此功能。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询