热门标签 | HotTags
当前位置:  开发笔记 > Android > 正文

Mybatis有查询结果但存不进实体类的解决方案

这篇文章主要介绍了Mybatis有查询结果但存不进实体类的解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

问题描述

使用Mybatis查询得到实体类

表定义如下

成员ID 成员姓名
member_id member_name

对应的实体类如下

public class Member {
  private Integer memberId;
  private String memberName;
  // 省略getter和setter
}

对应的Mapper.xml如下

通过以下代码得到的member居然是null,这是为什么呢?

Member member = memberMapper.selectMemberByMemberName(memberName);

在日志我启用了DEBUG模式,发现查询结果集是有返回数据的,但是写不进去Member实体类中,最后发现是因为数据库与Java命名的规范是不一样的,需要转换,Mybatis也提供了相对应的驼峰命名转换法。

例如member_id对应memberId,但是默认是不启用的,所以需要手动启动。

解决方法

如果使用Mybatis配置文件,则可以按如下配置:

<&#63;xml version="1.0" encoding="UTF-8"&#63;>



  
    
    
  

如果是springboot集成的,则可以做如下配置

mybatis:
 configuration:
  mapUnderscoreToCamelCase: true # 开启驼峰命名转换法

按照以上配置后重新访问则可以获得一个查询后的实体类。

补充知识:mybatis查询参数中既有 实体类参数又有基本类型参数 解决方案

这个方法真实有效,直接上代码

DAO中的查询方法

public LogisticNodes findFirstNode(

@Param("ln")LogisticNodes ln,@Param("stringId")String stringId);

第一个参数为实体类,需要加上@param()注解

xml中的写法

SELECT
      
    FROM
      order_logistic_nodes a
               
        
           AND a.id = #{ln.id,jdbcType=VARCHAR}
        
        
           AND a.node_name = #{ln.nodeName,jdbcType=VARCHAR}
        
        
           AND a.node_sort = #{ln.nodeSort,jdbcType=DECIMAL}
        
    
    and
      a.logistic_type IN (
        SELECT
          s.logistic_type
        FROM
          order_logistic_nodes s
                 
        
           s.id = #{stringId,jdbcType=VARCHAR}
        
      
    )
    order by a.node_sort
    limit 1

xml中,取实体类的属性前面要加上类的引用

以上这篇Mybatis有查询结果但存不进实体类的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。


推荐阅读
author-avatar
707282400_de0c8b
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有