MyBatis框架
4.4.3 参数处理
- 参数位置支持的属性:
javaType、jdbcType、mode、numericScale、resultMap、typeHandler、jdbcTypeName、expression
- 实际上通常被设置的是:可能为空的列名指定 jdbcType ,例如:
insert into orcl_employee(id,last_name,email,gender) values(employee_seq.nextval,#{lastName, ,jdbcType=NULL },#{email},#{gender}) |
4.4.4 参数的获取方式
- #{key}:获取参数的值,预编译到SQL中。安全。
- ${key}:获取参数的值,拼接到SQL中。有SQL注入问题。ORDER BY ${name}
4.5 select查询的几种情况
- 查询单行数据返回单个对象
public Employee getEmployeeById(Integer id ); |
- 查询多行数据返回对象的集合
public List<Employee> getAllEmps(); |
- 查询单行数据返回Map集合
public Map<String,Object> getEmployeeByIdReturnMap(Integer id ); |
- 查询多行数据返回Map集合
@MapKey("id") // 指定使用对象的哪个属性来充当map的key public Map<Integer,Employee> getAllEmpsReturnMap(); |
4.6 resultType自动映射
- autoMappingBehavior默认是PARTIAL,开启自动映射的功能。唯一的要求是列名和javaBean属性名一致
- 如果autoMappingBehavior设置为null则会取消自动映射
- 数据库字段命名规范,POJO属性符合驼峰命名法,如A_COLUMNaColumn,我们可以开启自动驼峰命名规则映射功能,mapUnderscoreToCamelCase=true
4.7 resultMap自定义映射
- 自定义resultMap,实现高级结果集映射
- id :用于完成主键值的映射
- result :用于完成普通列的映射
- association :一个复杂的类型关联;许多结果将包成这种类型
- collection : 复杂类型的集
4.7.1 id&result
<select id="getEmployeeById" resultMap="myEmp"> select id, last_name,email, gender from tbl_employee where id =#{id} </select>
<resultMap type="com.atguigu.mybatis.beans.Employee" id="myEmp"> <id column="id" property="id" /> <result column="last_name" property="lastName"/> <result column="email" property="email"/> <result column="gender" property="gender"/> </resultMap> |