1、#{}和${}的区别是什么?
注:这道题是面试官面试我同事的。
答:${}是Properties
文件中的变量占位符
,它可以用于标签属性值和
sql内部,属于静态文本替换,比如
${driver}
会被静态替换为
com.mysql.jdbc.Driver
。#{}是sql的参数占位符
,Mybatis
会将sql中的#{}替换为?号,在sql执行前会使用
PreparedStatement
的参数设置方法,按序给
sql的?号占位符设置参数值,比如
ps.setInt(0, parameterValue)
,#{item.name}
的取值方式为使用反射从参数对象中获取
item
对象的name
属性值,相当于
param.getItem().getName()
。2、Xml映射文件中,除了常见的
select|insert|updae|delete
标签之外,还有哪些标签?
注:这道题是京东面试官面试我时问的。
答:还有很多其他的标签,
<resultMap>
、<parameterMap>
、<sql>
、<include>
、<selectKey>
,加上动态
sql的9 ...
附件列表