前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速学习-Mybatis 的输出结果封装

快速学习-Mybatis 的输出结果封装

作者头像
cwl_java
发布2020-04-01 19:31:34
6840
发布2020-04-01 19:31:34
举报
文章被收录于专栏:cwl_Javacwl_Java

第4章 Mybatis 的输出结果封装

4.1 resultType 配置结果类型

resultType 属性可以指定结果集的类型,它支持基本类型和实体类类型。我们在前面的 CRUD 案例中已经对此属性进行过应用了。

需要注意的是,它和 parameterType 一样,如果注册过类型别名的,可以直接使用别名。没有注册过的必须使用全限定类名。例如:我们的实体类此时必须是全限定类名(今天最后一个章节会讲解如何配置实体类的别名)

同时,当是实体类名称是,还有一个要求,实体类中的属性名称必须和查询语句中的列名保持一致,否则无法 实现封装。

4.1.1 基本类型示例

4.1.1.1 Dao 接口
代码语言:javascript
复制
/**
* 查询总记录条数
* @return
*/
int findTotal();
4.1.1.2 映射配置
代码语言:javascript
复制
<!-- 查询总记录条数 -->
<select id="findTotal" resultType="int"> 
	select count(*) from user;
</select>

4.1.2 实体类类型示例

4.1.2.1 Dao 接口
代码语言:javascript
复制
/**
* 查询所有用户
* @return
*/
List<User> findAll();
4.1.2.2 映射配置
代码语言:javascript
复制
<!-- 配置查询所有操作 -->
<select id="findAll" resultType="com.itheima.domain.User"> 
	select * from user
</select>

4.1.3 特殊情况示例

4.1.3.1 修改实体类
代码语言:javascript
复制
public class User implements Serializable {

    private Integer id;
    private String username;
    private String address;
    private String sex;
    private Date birthday;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Date getBirthday() {
        return birthday;
    }

    public void setBirthday(Date birthday) {
        this.birthday = birthday;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", username='" + username + '\'' +
                ", address='" + address + '\'' +
                ", sex='" + sex + '\'' +
                ", birthday=" + birthday +
                '}';
    }
}
4.1.3.2 Dao 接口
代码语言:javascript
复制
/**
* 查询所有用户
* @return
*/
List<User> findAll();
4.1.3.3 映射配置
代码语言:javascript
复制
<!-- 配置查询所有操作 -->
<select id="findAll" resultType="com.itheima.domain.User"> 
	select * from user
</select>
4.1.3.4 测试查询结果
代码语言:javascript
复制
@Test public void testFindAll() {
	List < User > users = userDao.findAll();
	for (User user: users) {
		System.out.println(user);
	}
}
在这里插入图片描述
在这里插入图片描述
4.1.3.5 修改映射配置
在这里插入图片描述
在这里插入图片描述

4.2 resultMap 结果类型

resultMap 标签可以建立查询的列名和实体类的属性名称不一致时建立对应关系。从而实现封装。

在 select 标签中使用 resultMap 属性指定引用即可。同时 resultMap 可以实现将查询结果映射为复杂类型的 pojo,比如在查询结果映射对象中包括 pojo 和 list 实现一对一查询和一对多查询。

4.2.1 定义resultMap

代码语言:javascript
复制
<!-- 建立 User 实体和数据库表的对应关系
```type 属性:指定实体类的全限定类名
id 属性:给定一个唯一标识,是给查询 select 标签引用用的。
-->
<resultMap type="com.itheima.domain.User" id="userMap">
    <id column="id" property="userId"/>
    <result column="username" property="userName"/>
    <result column="sex" property="userSex"/>
    <result column="address" property="userAddress"/>
    <result column="birthday" property="userBirthday"/>
</resultMap>
id 标签:用于指定主键字段
result 标签:用于指定非主键字段
column 属性:用于指定数据库列名
property 属性:用于指定实体类属性名称

4.2.2 映射配置

代码语言:javascript
复制
<!-- 配置查询所有操作 -->
<select id="findAll" resultMap="userMap"> 
	select * from user
</select>

4.2.3 测试结果

代码语言:javascript
复制
@Test public void testFindAll() {
	List < User > users = userDao.findAll();
	for (User user: users) {
		System.out.println(user);
	}
} 
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-03-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 第4章 Mybatis 的输出结果封装
    • 4.1 resultType 配置结果类型
      • 4.1.1 基本类型示例
      • 4.1.2 实体类类型示例
      • 4.1.3 特殊情况示例
    • 4.2 resultMap 结果类型
      • 4.2.1 定义resultMap
      • 4.2.2 映射配置
      • 4.2.3 测试结果
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档