mybatisplus解決駝峰命名映射問(wèn)題詳解
問(wèn)題的提出
今天我在測(cè)試mybatis的時(shí)候,發(fā)現(xiàn)查詢(xún)出來(lái)的一些字段為null,而且這些字段都是駝峰命名了的。所以我首先就想到了是數(shù)據(jù)庫(kù)表字段和類(lèi)映射出了問(wèn)題。
解決辦法
一、理解spring-mybatis.xml中關(guān)于駝峰命名的配置
mybatisplus是mybatis的升級(jí)版,所以配置還是有點(diǎn)兒差別,如果是mybatis的話(huà),直接在configuration中配置就行了,如下:
<?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>
<!--開(kāi)啟駝峰命名-->
<setting name="mapUnderscoreToCamelCase" value="true" />
<setting name="cacheEnabled" value="false"/>
<setting name="lazyLoadingEnabled" value="false"/>
<setting name="aggressiveLazyLoading" value="true"/>
<setting name="logImpl" value="LOG4J2"/>
</settings>
</configuration>
但是mybatisplus的駝峰命名配置是在MP全局配置中完成的
廢話(huà)不說(shuō),直接上代碼
<!-- MP 全局配置 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 全局的主鍵策略 -->
<property name="idType" value="0"/>
<!--映射數(shù)據(jù)庫(kù)下劃線(xiàn)字段名到數(shù)據(jù)庫(kù)實(shí)體類(lèi)的駝峰命名的映射-->
<property name="dbColumnUnderline" value="true"/>
</bean>
二、在xml代碼中正確的映射類(lèi)和表
1、使用resultType直接映射到實(shí)體類(lèi)
直接上代碼:
<resultMap id="userVoResultMap" type="com.ranqing.model.vo.UserVo">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="login_name" property="loginName" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="password" property="password" jdbcType="VARCHAR"/>
<result column="sex" property="sex" jdbcType="TINYINT"/>
<result column="age" property="age" jdbcType="TINYINT"/>
<result column="user_type" property="userType" jdbcType="TINYINT"/>
<result column="status" property="status" jdbcType="TINYINT"/>
<result column="organization_id" property="organizationId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="phone" property="phone" jdbcType="VARCHAR"/>
<result column="organizationName" property="organizationName" jdbcType="VARCHAR"/>
<collection property="rolesList" ofType="Role">
<id column="roleId" property="id"/>
<result column="roleName" property="name"/>
</collection>
</resultMap>
<!-- 通用查詢(xún)結(jié)果列-->
<sql id="Base_Column_List">
id, login_name AS loginName, name, password, salt, sex, age, phone, user_type AS userType, status, organization_id AS organizationId, create_time AS createTime
</sql>
<!--驗(yàn)證用戶(hù)登錄-->
<select id="selectUserByLoginNameAndPwd" resultType="com.ranqing.model.vo.UserVo">
SELECT
<include refid="Base_Column_List"/>
from user
where login_name=#{loginName} and password=#{password}
</select>
注意:
1、凡是需要駝峰的字段都要用“as”取別名,然后直接resultType到UserVo上
2、這種方法不用駝峰命名也沒(méi)關(guān)系,
<!-- MP 全局配置 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 全局的主鍵策略 -->
<property name="idType" value="0"/>
<!--映射數(shù)據(jù)庫(kù)下劃線(xiàn)字段名到數(shù)據(jù)庫(kù)實(shí)體類(lèi)的駝峰命名的映射-->
<property name="dbColumnUnderline" value="false"/>
</bean>
dbColumnUnderline為true或false都可以
2、使用駝峰命名映射
先上代碼:
<resultMap id="userVoResultMap" type="com.ranqing.model.vo.UserVo">
<id column="id" property="id" jdbcType="BIGINT"/>
<result column="login_name" property="loginName" jdbcType="VARCHAR"/>
<result column="name" property="name" jdbcType="VARCHAR"/>
<result column="password" property="password" jdbcType="VARCHAR"/>
<result column="sex" property="sex" jdbcType="TINYINT"/>
<result column="age" property="age" jdbcType="TINYINT"/>
<result column="user_type" property="userType" jdbcType="TINYINT"/>
<result column="status" property="status" jdbcType="TINYINT"/>
<result column="organization_id" property="organizationId" jdbcType="INTEGER"/>
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
<result column="phone" property="phone" jdbcType="VARCHAR"/>
<result column="organizationName" property="organizationName" jdbcType="VARCHAR"/>
<collection property="rolesList" ofType="Role">
<id column="roleId" property="id"/>
<result column="roleName" property="name"/>
</collection>
</resultMap>
<!-- 通用查詢(xún)結(jié)果列-->
<sql id="Base_Column_List">
id, login_name , name, password, salt, sex, age, phone, user_type , status, organization_id , create_time
</sql>
<!--驗(yàn)證用戶(hù)登錄-->
<select id="selectUserByLoginNameAndPwd" resultMap="userVoResultMap">
SELECT
<include refid="Base_Column_List"/>
from user
where login_name=#{loginName} and password=#{password}
</select>
注意:
1、這種方法是使用了駝峰命名了的,所有一定要在MP中設(shè)置駝峰命名
<!-- MP 全局配置 -->
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!-- 全局的主鍵策略 -->
<property name="idType" value="0"/>
<!--映射數(shù)據(jù)庫(kù)下劃線(xiàn)字段名到數(shù)據(jù)庫(kù)實(shí)體類(lèi)的駝峰命名的映射-->
<property name="dbColumnUnderline" value="true"/>
</bean>
dbColumnUnderline必須為true
2、既然使用了駝峰命名,就自然不能再數(shù)據(jù)庫(kù)字段上用“as”了。
到此這篇關(guān)于mybatisplus解決駝峰命名映射問(wèn)題詳解的文章就介紹到這了,更多相關(guān)mybatisplus 駝峰命名映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Java實(shí)現(xiàn)簡(jiǎn)易GUI貪吃蛇小游戲
這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)易GUI貪吃蛇小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
Spring加載properties文件的兩種方式實(shí)例詳解
這篇文章主要介紹了Spring加載properties文件的兩種方式,需要的朋友可以參考下2018-02-02
如何解決springmvc文件下載,內(nèi)容損壞的問(wèn)題
這篇文章主要介紹了解決springmvc文件下載,內(nèi)容損壞的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
Idea安裝及涉及springboot詳細(xì)配置的圖文教程
這篇文章主要介紹了Idea安裝及涉及springboot詳細(xì)配置,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-10-10
Java中的MapStruct知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了Java中的MapStruct知識(shí)點(diǎn)總結(jié),MapStruct是一個(gè)Java注解處理器,用于生成類(lèi)型安全的映射代碼,它可以自動(dòng)處理源對(duì)象和目標(biāo)對(duì)象之間的映射,減少了手動(dòng)編寫(xiě)重復(fù)的映射代碼的工作量,需要的朋友可以參考下2023-10-10
Netty分布式ByteBuf使用的底層實(shí)現(xiàn)方式源碼解析
這篇文章主要為大家介紹了Netty分布式ByteBuf使用底層實(shí)現(xiàn)方式源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-03-03
解析Arthas協(xié)助排查線(xiàn)上skywalking不可用問(wèn)題
這篇文章主要為大家介紹了解析Arthas協(xié)助排查線(xiàn)上skywalking不可用的問(wèn)題詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-02-02
MyBatis Plus 將查詢(xún)結(jié)果封裝到指定實(shí)體的方法步驟
這篇文章主要介紹了MyBatis Plus 將查詢(xún)結(jié)果封裝到指定實(shí)體的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-09-09
idea編譯報(bào)錯(cuò)-代碼沒(méi)問(wèn)題IDEA編譯不通過(guò)的處理方案
這篇文章主要介紹了idea編譯報(bào)錯(cuò)-代碼沒(méi)問(wèn)題IDEA編譯不通過(guò)的問(wèn)題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-12-12

