【SpringBoot教程】SpringBoot 快速整合Mybatis(去XML化+注解进阶)

作者简介:大家好,我是撸代码的羊驼,前阿里巴巴架构师,现某互联网公司CTO

联系v:sulny_ann(17362204968),加我进群,大家一起学习,一起进步,一起对抗互联
网寒冬

序言:使用MyBatis3提供的注解可以逐步取代XML,例如使用@Select注解直接编写SQL完成数据查询,使用@SelectProvider高级注解还可以编写动态SQL,以应对复杂的业务需求。

# 基础注解

MyBatis 主要提供了以下CRUD注解:

  • @Select

  • @Insert

  • @Update

  • @Delete

增删改查占据了绝大部分的业务操作,掌握这些基础注解的使用还是很有必要的,例如下面这段代码无需XML即可完成数据查询:
 

@Mapperpublic interface UserMapper {
      @Select("select * from t_user")    List<User> list();}
 

使用过Hibernate的同学可能会好奇,这里为什么没有配置映射关系也能完成属性注入?在传统项目中使用过Mybatis的童鞋可能很快就反应过来,是因为在配置文件中开启了全局驼峰映射,SpringBoot中同样能够做到,并且更为简单快捷。

虽然开启了全局驼峰映射,但你可能还会质疑,如果不符合下划线转驼峰规则的字段,拿查询回来的实体对象属性将获取为null,比如上述User对象属性mobileNum和对应的数据库字段phoneNum,则查询结果为:

​​​​​​​

[  {
      "userId": "1",    "username": "admin",    "password": "admin",    "mobileNum": null  },  {
      "userId": "2",    "username": "roots",    "password": "roots",    "mobileNum": null  }]
 

为了解决对象属性和字段驼峰不一致的问题,我们可以使用映射注解@Results来指定映射关系。

#  映射注解

Mybatis主要提供这些映射注解:

  • @Results  用于填写结果集的多个字段的映射关系.

  • @Result  用于填写结果集的单个字段的映射关系.

  • @ResultMap 根据ID关联XML里面<resultMap>.

例如上面的list方法,我们可以在查询SQL的基础上,指定返回的结果集的映射关系,其中property表示实体对象的属性名,column表示对应的数据库字段名。

​​​​​​​

    @Results({
              @Result(property = "userId", column = "USER_ID"),            @Result(property = "username", column = "USERNAME"),            @Result(property = "password", column = "PASSWORD"),            @Result(property = "mobileNum", column = "PHONE_NUM")    })    @Select("select * from t_user")    List<User> list();
 

查询结果如下,:

​​​​​​​

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值