Mybatis有查询结果但存不进实体类的解决方案
问题描述
使用Mybatis查询得到实体类
表定义如下
成员ID | 成员姓名 |
---|---|
member_id | member_name |
对应的实体类如下
public class Member { private Integer memberId; private String memberName; // 省略getter和setter }
对应的Mapper.xml如下
<select id="selectMemberByMemberName" resultType="Member"> SELECT * FROM member WHERE member_name = #{memberName} </select>
通过以下代码得到的member居然是null,这是为什么呢?
Member member = memberMapper.selectMemberByMemberName(memberName);
在日志我启用了DEBUG模式,发现查询结果集是有返回数据的,但是写不进去Member实体类中,最后发现是因为数据库与Java命名的规范是不一样的,需要转换,Mybatis也提供了相对应的驼峰命名转换法。
例如member_id对应memberId,但是默认是不启用的,所以需要手动启动。
解决方法
如果使用Mybatis配置文件,则可以按如下配置:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <settings> <!-- 开启驼峰命名转换 --> <setting name="mapUnderscoreToCamelCase" value="true"/> </settings> </configuration>
如果是springboot集成的,则可以做如下配置
mybatis: configuration: mapUnderscoreToCamelCase: true # 开启驼峰命名转换法
按照以上配置后重新访问则可以获得一个查询后的实体类。
补充知识:mybatis查询参数中既有 实体类参数又有基本类型参数 解决方案
这个方法真实有效,直接上代码
DAO中的查询方法
public LogisticNodes findFirstNode(
@Param("ln")LogisticNodes ln,@Param("stringId")String stringId);
第一个参数为实体类,需要加上@param()注解
xml中的写法
SELECT <include refid="logisticNodesColumns"/> FROM order_logistic_nodes a <where> <if test="ln.id != null and ln.id !=''"> AND a.id = #{ln.id,jdbcType=VARCHAR} </if> <if test="ln.nodeName != null and ln.nodeName !=''"> AND a.node_name = #{ln.nodeName,jdbcType=VARCHAR} </if> <if test="ln.nodeSort != null"> AND a.node_sort = #{ln.nodeSort,jdbcType=DECIMAL} </if> </where> and a.logistic_type IN ( SELECT s.logistic_type FROM order_logistic_nodes s <where> <if test="stringId != null and stringId !=''"> s.id = #{stringId,jdbcType=VARCHAR} </if> </where> ) order by a.node_sort limit 1
xml中,取实体类的属性前面要加上类的引用
以上这篇Mybatis有查询结果但存不进实体类的解决方案就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java 8 lambda表达式list操作分组、过滤、求和、最值、排序、去重代码详解
java8的lambda表达式提供了一些方便list操作的方法,主要涵盖分组、过滤、求和、最值、排序、去重,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2024-01-01ArrayList和JSONArray边遍历边删除到底该如何做
这篇文章主要介绍了ArrayList和JSONArray边遍历边删除到底该如何做,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-12-12java synchronized加载加锁-线程可重入详解及实例代码
这篇文章主要介绍了java synchronized加载加锁-线程可重入详解及实例代码的相关资料,需要的朋友可以参考下2017-02-02基于Java Springboot + Vue + MyBatis实现音乐播放系统
这篇文章主要介绍了一个完整的音乐播放系统是基于Java Springboot + Vue + MyBatis编写的,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下2021-08-08Spring实战之XML与JavaConfig的混合配置详解
大家都知道Spring的显示配置方式有两种,一种是基于XML配置,一种是基于JavaConfig的方式配置。那么下这篇文章主要给大家分别介绍如何在JavaConfig中引用XML配置的bean以及如何在XML配置中引用JavaConfig,需要的朋友可以参考下。2017-07-07一文讲解如何解决Java中的IllegalArgumentException异常
这篇文章主要给大家介绍了关于如何解决Java中IllegalArgumentException异常的相关资料,IllegalArgumentException是Java中的一个标准异常类,通常在方法接收到一个不合法的参数时抛出,需要的朋友可以参考下2024-03-03
最新评论