3.1 认识映射文件:
介绍:
MyBatis的映射文件主要用于定义业务操作命令,实现对象与数据表字段的映射,并控制对最终结果的封装.MyBatis是针对SQL构建,相对具有相同功能的JDBC代码,减少了95%的代码量
说明:
- 映射文件名称和位置任意,不要求必须与POJO类在同一位置
- MyBatis未提供源码和案例,配置和映射内容参考官网或使用指南
- MyBatis映射文件顶层结构如下:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
基本格式:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="匿名空间">
<select/insert/update/delete等等 id="业务标识名" resultType="封装结果的对象[实体类全名]" parameterType="占位符的来源">
SQL命令
</select/insert/update/delete等等>
</mapper>
说明:
- namespace: 表示命名空间,类似Java包的作用.[在旧版中可选,在新版中必须配置]
- id: 设置业务操作匿名,方便程序中调用.
- parameterType: 指出将要传入SQL命令中的占位符的类型,可以是普通类型或自定义类.
- resultType: 指出SQL命令执行结果的类型.若结果为集合,该属性值为元素的类型名.
- statementType: 设置SQL执行对象的类型: STATEMENT,PREPARED[默认值],CALLABLE.
- SQL命令末尾后的分号,可选
3.2 占位符:
介绍:
Mybatis映射文件中的SQL命令,支持以占位符方式设置字段的值.同JDBC那样,当执行SQL命令时需要额外指出占位符的值.
格式:
#{占位符名}
说明:
- 占位符的值可以来自实体对象,Map集合,普通数据
- 若占位符的值来自普通数据,占位符名 任意. [仅1个占位符,比如 id]
- 若占位符的值来自实体对象,占位符名 必须为对象的属性名
- 若占位符的值来自Map集合,占位符名 必须为键名
3.3 结果映射
介绍:
MyBatis自动将POJO对象的属性与查询结果集中字段名或添加/修改/删除中占位符名映射,实现对象与表的映射关系.
同时,MyBatis提供了手动设置POJO对象属性与执行结果映射的方式: <resultMap>.
解决字段名与属性名不同,无法映射:
方式1: 设置字段匿名——as
select id,username as name,sex,age,address from user
方式2: 自定义映射——<resultMap>
<select id="" resultType="" resultMap="resultMap匿名A">
SQL命令
</select>
<!--自定义映射规则-->
<resultMap id="resultMap匿名A" type="实体类全名">
<id property="主键属性" column="主键字段名" />
<result property="普通属性" column="字段名" />
</resultMap>