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 存储过程返回的临时表出错 高手帮忙看下!