Spring Boot 使用Oracle集成Mybatis,驼峰映射(下划线)问题

来源:互联网 发布:鲁迅体 知乎 编辑:程序博客网 时间:2024/06/05 15:15
问题描述:

数据库字段为USER_ID,实体类为userId,在application.xml做如下配置,可以自动进行映射:

mybatis.configuration.mapUnderscoreToCamelCase=true
或新建mybatis.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>
进行以上配置后,并没有映射成功,查出来的数据都为null。

问题分析:
1、把项目整体迁移到MySQL数据库上,可以正常查出数据,能够正常映射,那么可以证明是Oracle数据库的问题,或者是Mybatis的设置问题,排除代码逻辑问题。
2、为实体类加入映射规则:

<resultMap type="com.bocom.protemp.common.shiro.entity.UserEntity" id="userMap">        <result property="userId" column="USER_ID"/></resultMap>
问题依旧,查出的数据还是null值。
3、使用最简单的例子做测试,如果数据库字段是这样USERID,没有下划线,那么Mybatis是可以映射成功的。也就是说,Mybatis在使用Oracle数据库时,字段带上下划线不能映射。

解决方式:
1、将实体类改为和数据库字段一模一模,即也加上下划线,但这样又不符合JAVA的驼峰命名规范,但如果不能修改数据库,这也是权宜之计。
2、修改数据库字段,将下划线去除,如USER_ID改为USERID,这个方式对于数据库来说并不友好,因为单词间没有分割,单看字段名很难一目了然的明白字段的意义。

最后,附上官方的配置说明 mybatis-spring-boot-autoconfigure – MyBatis Sring-BootStarter | Reference Documentation  http://www.mybatis.org/spring-boot-starter/mybatis-spring-boot-autoconfigure/#Configuration

原创粉丝点击