#### ResultMap
ResultMap作用: 结果集映射,将从数据库查询的内容 和pojo类的属性进行一一映射,mybatis就能对查询结果自动赋值。
```xml
<resultMap id="BaseResultMap" type="com.icss.mybatis.dept.pojo.Dept">
<!--主键列映射-->
<id column="dept_id" jdbcType="INTEGER" property="deptId" />
<!--普通列映射-->
<result column="dept_name" jdbcType="VARCHAR" property="deptName" />
<result column="dept_loc" jdbcType="VARCHAR" property="deptLoc" />
</resultMap>
```
通过id来使用ResultMap
eg:<select id="get" resultMap="BaseResultMap">,相当于标签里的一个属性。
在<insert>等标签中 可以通过 resultMap="resultMapId" 来使用结果集映射
#### mybatis返回值的几种情况:
- resultMap: 代表使用一个已经定义好了的<font color="red"><ResultMap></font>结果集映射
(查询的时候需要有返回值结果)(查询表里本来就有的列)
- resultType: 共有3中情况:
- 返回一个单一类型,例如 查询公司中一共有多少个部门。
```xml
<select id="getCount" resultType="java.lang.Integer">
SELECT COUNT(dept_id) FROM dept
</select>
```
- 返回一个组合类型,例如返回pojo类的情况
```xml
<!--如果直接在resultType中声明pojo类 必须保证查询结果的列名和pojo类的属性名完全一致 才能够通 过mybatis自动赋值-->(不建议使用)
<select id="get2" resultType="Dept">
select DEPT_ID AS deptId, DEPT_NAME deptName , DEPT_LOC AS deptLoc
from dept where DEPT_ID=#{deptId}
</select>
```
- 返回一个复杂数据类型,例如统计分析结果,可以通过resultType="Map"解决
```xml(例如松散结构查询)(不是数据库表里原来有点的东西)
<select id="getCountByLoc" resultType="java.util.HashMap">
SELECT dept_loc, COUNT(*)
FROM dept
GROUP BY dept_loc
</select>
```
(List套map)List<Dept> queryById(HashMap<String,Integer> map);
#### paramenterType的几种情况:
- 传入一个单一类型:例如传入删除部门的ID
- 写不写paramenterType #{}中写具体哪个参数 不限制
- 传入一个组合类型: 例如增加部门
- #{} 此时代表的是 传入的pojo类的属性
- 传入一个松散的结构: Map集合
- #{}此时代表的时 传入的map中的key
```java
List<Dept> queryById(HashMap<String,Integer> map);
```
- 如果希望方法能通同时传入多个参数,那么可以通过@Param注解给接口的方法参数起名字
```java
List<Dept> queryById(@Param("start")Integer start , @Param("end")Integer end);
```
- ```xml
<select id="queryById" parameterType="java.util.HashMap" resultMap="BaseResultMap">
SELECT * FROM dept
WHERE DEPT_ID BETWEEN #{start} AND #{end}
</select>
```