07 sql映射之返回值自定义映射(resultMap)

文章目录

resultMap配置数据库和java对象的映射,之前都是自动映射:自动映射有个前提条件:

  • 数据库的列名和java实体的属性名要一致或者符合驼峰命名(并且开启驼峰命名)
  • 全局配置文件中开启自动映射,默认就是开的
<setting name="autoMappingBehavior" value="PARTIAL"/>

1 入门

  1. 数据表是这样的
CREATE TABLE `tb_user` (
 `id` bigint(20) NOT NULL AUTO_INCREMENT,
 `username` varchar(32) NOT NULL COMMENT '用户名',
 `password` varchar(60) NOT NULL COMMENT '密码,加密存储',
 `phone` varchar(11) DEFAULT NULL COMMENT '注册手机号',
 `create_time` timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
 `update_time` timestamp NULL DEFAULT NULL COMMENT '更新时间',
 PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COMMENT='用户表';
  1. 但是实体类属性名没有和表中字段名一致
@Data
@ToString
public class TbUser2 implements Serializable {

    private Long id;
    // ussername -->name
    private String name;
    private String password;
    // phone -->mobile
    private String mobile;
    private String createTime;
    private String updateTime;

}
    TbUser2 select1(@Param("id") Long id);
<!--
  配置映射规则
  id: 唯一标识
  type: 对应的实体的全类名,当然也可以配置别名,我个人不喜欢配置,这样更清晰
-->
<resultMap id="userMap" type="study.wyy.mybatis.sqlmapper.model.TbUser2">
  <!--
      指定主键列的映射,底层会有优化
          column: 列名
          property:java实体的属性名
          jdbcType:jdbc类型,可不指定
          javaType:java 类型,也可以不指定
  -->
  <id column="id" property="id"></id>
  <result column="username" property="name"></result>
  <result column="phone" property="mobile"></result>
</resultMap>

<!--
resultMap 指定映射规则的唯一标识
-->
<select id="select1" resultMap="userMap">
  select
      *
  from
      tb_user
  where
      id = #{id}
</select>

测试v

@Test
    public void test04() {
        TbUser2 tbUser2 = tbUserMapper.select1(1L);
        System.out.println(tbUser2);
    }

成功映射:

TbUser2(id=1, name=kobe, password=123456, mobile=13100001111, createTime=2019-04-04 22:58:26.0, updateTime=2019-04-04 22:58:26.0)

虽然resultMap可以只配置存在差异的列和属性,但是建议如果要配置resultMap,那么就全部字段都配置上去,方便查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值