MyBatis基础知识点
一. 配置文件的加载顺序
如果属性在不只一个地方进行了配置,那么 MyBatis 将按照下面的顺序来加载:
- 在 properties 元素体内指定的属性首先被读取。
- 然后根据 properties 元素中的 resource 属性读取类路径下属性文件或根据 url 属性指定的路径读取属性文件,并覆盖已读取的同名属性。
- 最后读取作为方法参数传递的属性,并覆盖已读取的同名属性。
因此,通过方法参数传递的属性具有最高优先级,resource/url 属性中指定的配置文件次之,最低优先级的是 properties 属性中指定的属性。
二. 查询结果resultType返回值类型
- 一般数据类型:
mapper接口:
String getEmpNameById(Integer id);
SQL映射文件:
<select id="getEmpNameById" resultType="string">
select username from t_employee where id = #{id}
</select>
- JavaBean 类型
mapper接口:
Employee getEmpById(Integer id);
SQL映射文件:
<select id="getEmpById" resultType="employee">
select * from t_employee where id = #{id}
</select>
- List类型
mapper接口:
List<Employee> getAllEmps();
SQL映射文件:
<select id="getAllEmps" resultType="employee">
select * from t_employee
</select>
- Mapper类型
如果查询的结果是一条,我们可以把查询的数据以{表字段名, 对应的值}方式存入到Map中。
mapper接口:
Map<String, Object> getEmpAsMapById(Integer id);
SQL映射文件:
<select id="getEmpAsMapById" resultType="map">
select * from t_employee where id = #{id}
</select>
如果查询的结果是多条数据,我们也可以把查询的数据以{表中某一字段名, JavaBean}方式来封装成Map。
mapper接口:
@MapKey("id")
Map<Integer, Employee> getAllEmpsAsMap();
SQL映射文件:
<select id="getAllEmpsAsMap" resultType="employee">
select * from t_employee
</select>