Spring Boot 使用Oracle集成Mybatis,駝峯映射(下劃線)問題

問題描述:

數據庫字段爲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
發佈了83 篇原創文章 · 獲贊 333 · 訪問量 68萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章