注解开发mybatis的mapper属性和字段不对应问题@Results—resultMap

注解开发—mybatis的mapper属性和字段不对应问题@Results—resultMap

Mybatis给我们提供了一种映射方式,如果属性的命名是遵从驼峰命名法的,数据列名遵从下划线命名。MyBatis支持使用注解来配置映射语句,不再需要在XML配置文件中配置。

学习内容

  • @Results对应resultMap
  • @Result对应result 
    这两个注解是应用在方法的级别上的,也就是在mapper方法。

@Results结果映射

mybatis不能通过@Column注解或者直接使用实体类的属性名作为数据列名,而是需要自己指定实体类属性和数据表中列名之间的映射关系

解决方案

我们可以将查询结果通过别名与JavaBean属性映射起来。当然使用@Results注解也可以将指定列与指定JavaBean属性映射起来 
执行SELECT查询的:

@Select("SELECT * FROM `wx_message_config` WHERE `content_key_words` IS NOT NULL AND LENGTH(content_key_words) > 0")
    @Results({
            @Result(property = "msgType", column = "msg_type"),
            @Result(property = "eventType", column = "event_type"),
            @Result(property = "eventKey",column = "event_key"),
            @Result(property = "contentKeyWords",column = "content_key_words")
    })
    List<WxMessageConfig> queryAllKeyWords();

    @Select("SELECT * FROM `wx_message_config` WHERE `id` = #{id}")
    @Results({
            @Result(property = "msgType", column = "msg_type"),
            @Result(property = "eventType", column = "event_type"),
            @Result(property = "eventKey",column = "event_key"),
            @Result(property = "contentKeyWords",column = "content_key_words")
    })
    WxMessageConfig queryKwById(int id);

由于注解是针对方法的,对于Mapper中的每个操作数据库的方法都必须有相同的注解完成映射关系的建立,导致很多是重复的。

共用@Results——resultMap

为了解决重复使用,那就要让他变成一个有id的整体,其他地方要用就直接调用 
@ResultMap(“id”) 
@Result中通过id属性引用这个resultMap

@Select("SELECT id, name, password FROM user WHERE id = #{id}")
    @Results(id = "userMap", value = { @Result(column = "id", property = "id", javaType = Integer.class),
            @Result(column = "name", property = "name", javaType = String.class),
            @Result(column = "password", property = "password", javaType = String.class) })
    User findById(Integer id);

    @Select("SELECT * FROM user")
    @ResultMap("userMap")
    List<User> fingAll();

这个本地测试好像没有成功

通过使用在SQL语句中定义别名完成映射

@Select("select user_name as userName, user_id as userId from t_user where user_name = #{userName}")
    User getUserByName(@Param("userName") String userName);

 

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值