-
resultMap
和resultType
当配置resultType
时,就不需要配置resultMap
,看似resultType
方便,但是会被受限制,没有resultMap
开放多。- 相同点:都是表示查询结果集的类型。
- 不同点:
resultMap
需要手动配置映射关系,而resultType
是直接指定java类型或者自定义的实体类型,查询结果集的列名必须和实体属性名称一致(实体类:名称大小写可以忽略;java
类型,如Map
集合的key
大小写要一致,尽量都大小写规范,如果不放心可以select ID id,...
)。
优缺点: -
resultType
结果集列名要与java属性名一样,但是resultMap
不受限制,因为resultMap
有column
来规定。 - 由于
SQL
类型与Java
中类型部分不匹配,resultMap
可以通过typeHandler=""
来匹配(如:SQL中的0和1来表示java
中的false
和true
;Date
类型的转换),但是resultType
无能为力。
-
parameterMap
和patameterType
表示传入参数的对应关系,前者不推荐使用,只是mybatis
为了适应以前的版本。
提示:看到Map
字眼的想到映射关系,看到Type
字眼的想到类型。 -
#{}
和${}
相同点:都是用来作为占位符。
不同点:#{}
在预编译的时候会被替换为?,而${}
在预编译的时候直接将变量的值替换进去,而且没有引号(所以还要加上“${...}
”),故一般都是用前者,个别情况会使用后者:如需进行排序,且排序字段为参数时可以使用${} order by
后面不喜欢被预编译,所以使用${}
更为恰当)。 -
#{}
和ognl
在#{}
中如果是基本类型,其中的名称可以随便写(不推荐),但一般都用_parameter
,因为值唯一,而ognl
中必须写成_parameter
的方式
网友评论