取值形式的不同:#{ } :是以预编译的形式,将参数设置到sql语句中;PrepareStatement,防止sql注入
${ }:取出的值直接拼装在sql语句中:会有安全问题
大多数情况下,我们取参数的值都应该去使用#{ };
原生JDBC不支持占位符的地方我们就可以使用${ }进行取值
#{ }:更丰富的地方,规定参数的一些规则:javaType、jdbcType、mode(存储过程)、numericScale、resultMap、TypeHandler、jdbcTypeName、expression(未来支持表达式)
jdbcType通常需要在某种特定的条件下被设置:在我们数据为null的时候,有些数据库可能不能识别mybatis对null的默认设置
Select查询
自动映射:1、全局setting设置 autoMappingBehavior默认不是Partial,开启自动映射的功能(唯一要求是列名和javaBean属性名一致)
如果autoMappingBehavior设置为null则会自动取消自动映射
数据库字段命名规范,POJO属性符合驼峰命名法
开启自动驼峰命名规则映射功能,mapUnderscoreToCamelCase=true;
2、自定义resultMap,实现高级结果集映射。