resultType
resultType: 执行 sql 得到 ResultSet 转换的类型,使用类型的完全限定名或别名。 注意如果返回的是集合,那应该设置为集合包含的类型,而不是集合本身。resultType 和 resultMap,不能同时使用。
resultType
简单类型
接口方法:
1 | int countStudent(); |
mapper文件:
1 | <select id="countStudent" resultType="int"> |
测试方法:
1 |
|
对象类型
接口方法:
1 | Student selectById(int id); |
mapper文件:
1 | <select id="selectById" resultType="com.bjpowernode.domain.Student"> |
Map
sql 的查询结果作为 Map 的 key 和 value。推荐使用 Map。 注意:Map 作为接口返回值,sql 语句的查询结果最多只能有一条记录。大于一条记录是错误。
接口方法:
1 | Map<Object,Object> selectReturnMap(int id); |
mapper文件:
1 | <select id="selectReturnMap" resultType="java.util.HashMap"> |
测试方法:
1 |
|
resultMap
resultMap 可以自定义 sql 的结果和 java 对象属性的映射关系。更灵活的把列值赋值给指定属性。 常用在列名和 java 对象属性名不一样的情况。
使用方式:
1.先定义 resultMap,指定列名和属性的对应关系。
2.在
接口方法
1 | List<Student> selectUseResultMap(QueryParam param); |
mapper文件
1 | <!-- 创建 resultMap |
测试方法
1 |
|
实体类属性名和列名不同的处理方式
使用列别名和
- 创建新的实体类 PrimaryStudent
1 | package com.bjpowernode.domain; |
接口方法
1
2List<PrimaryStudent> selectUseFieldAlias(QueryParam param);
Mapper文件
1 | <select id="selectUseFieldAlias" |
测试方法
1
2
3
4
5
6
7
8
9
public void testSelectUseFieldAlias(){
QueryParam param = new QueryParam();
param.setQueryName("李力");
param.setQueryAge(20);
List<PrimaryStudent> stuList;
stuList = studentDao.selectUseFieldAlias(param);
stuList.forEach( stu -> System.out.println(stu));
}
使用
接口方法
1
List<PrimaryStudent> selectUseDiffResultMap(QueryParam param);
- mapper文件
1 | <!-- 创建 resultMap |
测试方法
1
2
3
4
5
6
7
8
9
public void testSelectUseDiffResultMap(){
QueryParam param = new QueryParam();
param.setQueryName("李力");
param.setQueryAge(20);
List<PrimaryStudent> stuList;
stuList = studentDao.selectUseDiffResultMap(param);
stuList.forEach( stu -> System.out.println(stu));
}
模糊like
模糊查询的实现有两种方式, 一是 java 代码中给查询数据加上“%” ; 二是在 mapper 文件 sql 语句的条件位置加上“%”。