是
P
r
o
p
e
r
t
i
e
s
文
件
中
的
变
量
占
位
符
,
他
可
以
用
于
标
签
属
性
值
和
S
Q
L
内
部
,
属
于
静
态
文
本
替
换
,
比
如
{}是Properties文件中的变量占位符,他可以用于标签属性值和SQL内部,属于静态文本替换,比如
是Properties文件中的变量占位符,他可以用于标签属性值和SQL内部,属于静态文本替换,比如{driver}就会被静态替换成com.mysql.jdbc.Driver。#{}是参数占位符,MyBatis会将SQL中的#{}替换为?号,在SQL执行前会使用PreparedStatement的参数设置方法,按需给sql的?号占位符设置参数值,比如ps.setInt(0, parameterValue),#{item.name}的取值方式为使用反射从参数对象中获取item对象的name属性值,相当于paran.getItem().getName()。
第一种使用ResultMap标签,逐一定义列名和对象属性名之间的映射关系。第二种是使用SQL列的别名功能,将列别名写为对象属性名,比如T_NAME AS NAME,对象属性名一般是name,mybatis会忽略大小写,智能找到与之对应的对象属性名,T_NAME AS NaMe,mybatis一样正常工作。