MyBatis输出结果封装竟如此简单

MyBatis输出结果封装竟如此简单

1.前言

​ 有时候我们会发现,实体类中的属性和数据库表的列名不一致了,这个时候我们还是按照之气前的模式写,会发现访问不到数据库中的数据了,这个时候我们就需要将输出结果进行封装了。

​ 之前我们都是用resultType配置结果类型,可以是基本类型也可以是实体类型。

​ 今天我要介绍的是resultMap结结果类型。它可以实现查询的列名和实体类属性名不一致时建立对应关系,从而实现封装。你以为它就这个功能吗?它的功能远不止如此,还可以实现查询结果映射为复杂类型的pojo,可以将多表联系起来,这个是没有设置外键的,使用外键的话,会大大降低查询效率,这个刚好解决了这个。

2.举个例子

  • domain下

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Getter
    @Setter
    public class User implements Serializable {
        private Integer user_id;
        private String user_username;
        private Integer user_age;
    }
    

    这里数据库中是id,username,age,可以看到实体类中字段对应不一样

  • mapper下

    public interface UserMapper {
        //查询所有
        List<User> findAll();
    }
    
  • UserMapper.xml

    <?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="com.wang.mapper.UserMapper">
        <select id="findAll" resultMap="findUser">
            select * from user
        </select>
        
        <resultMap id="findUser" type="com.wang.domain.User">
            <id column="id" property="user_id"></id>
            <result column="username" property="user_username"></result>
            <result column="age" property="user_age"></result>
        </resultMap>
    </mapper>
    
    • id属性:给定唯一标识,查询的select标签引用正是通过这个
    • type属性:指定实体类的全限定类名
    • id标签:用于主键字段
    • result标签:用于非主键字段
    • column属性:用于指定数据库的字段名
    • property属性:用于指定实体类中的属性名称

3.总结

通过上面的一个小小的demo,是不是感觉这个竟如此简单,这个在开发中用的极其多。除了在xml文件中配置,那么还有注解版的使用方法,关注我,让你学习更多新知识,下次更新注解版如何实现结果集的封装。

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值