MyBatis查询mysql数据返回null

Posted 墨丶熙儿

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MyBatis查询mysql数据返回null相关的知识,希望对你有一定的参考价值。

1.前提

确认数据库中可以查到数据

确认sql语句没有编写错误

2.问题产生原因:

我们一般在数据库中字段名使用 '_'连接,而在实体类中使用驼峰命名。但是这样查询之后使用的驼峰命名法的是映射不到实体类上的 。

3.解决方法

方法一:

起别名:在实体类的映射文件中编写如下sql片段:

    <!--sql片段 id="表名_column"-->
    <sql id="brand_column">
        id, brand_name as brandName, company_name as companyName, ordered
    </sql>
    <select id="selectAll" resultType="com.example.pojo.Brand">
        select
            <include refid="brand_column"/>
        from tb_brand;
    </select>

id填写要映射的表名_column

内部编写字段,将不一致的字段分别取别名:表中的字段名 as 实体类中的属性名

select 中的id对应Mapper接口中的方法名

resultType对应实体类全类名

sql语句中引用上面定义的sql片段

from 要查询的表名

ps:

*缺点:每次查询都要定义一次别名,sql片段使用起来不灵活

方法二:

在实体类的映射文件中编写resultMap

    <!--
        resultMap:
            1.定义<resultMap>标签
            2.在<select>标签中吗,使用resultMap属性  替换  resultType属性
        id:唯一标识
        type:映射的类型,支持别名
    -->
    <resultMap id="brandResultMap" type="com.example.pojo.Brand">
        <!--
            两个子标签,哪个不一样就写哪个
            id:完成主键字段的映射
                column:表的列名
                property:实体类的属性名
            result:完成一般字段的映射
                column:表的列名
                property:实体类的属性名
        -->
        <result column="brand_name" property="brandName"/>
        <result column="company_name" property="companyName"/>
    </resultMap>

    <select id="selectAll" resultMap="brandResultMap">
        select
            *
        from tb_brand;
    </select>

方法三:

只需要在mybatis配置文件mybatis-config.xml中添加以下配置:

内容是这样的:

<?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>

以上是关于MyBatis查询mysql数据返回null的主要内容,如果未能解决你的问题,请参考以下文章

使用mybatis写一个验证方法时,mysql数据库查询结果返回null,mybatis无法将其封装为boolean类型,怎么办?

mybatis返回自增主键的id,动态拼接查询语句,mysql创建新用户并授权相关表

使用mybatis查询mysql数据库 先调用存储过程,然后再inner join 存储过程返回的临时表出错 高手帮忙看下!

基于注解的mybatis插入一条数据如何返回这条数据的对象或者他的id?

mybatis自增主键返回

mybatis update返回值