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_COLUMNaColumn,我们可以开启自动驼峰命名规则映射功能,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>