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