在Spring-Mybatis.xml中配置的驼峰转换如下
<bean id="globalConfig" class="com.baomidou.mybatisplus.entity.GlobalConfiguration">
<!--
AUTO->`0`("数据库ID自增")
INPUT->`1`(用户输入ID")
ID_WORKER->`2`("全局唯一ID")
UUID->`3`("全局唯一ID")
-->
<property name="idType" value="2" />
<!-- 驼峰转换 true -->
<property name="dbColumnUnderline" value="true" />
</bean>
当sql语句为:
<select id="selectAllUser" resultType="UsersEntity">
select u.user_id,u.name,u.phone,u.sex,u.id_card,u.email,u.country,u.integral,u.state,u.create_time
from users u
</select>
发现所有有下划线的列名不对对应到实体的属性名。除非将有下划线的属性名写成类似 u.user_id as userId,才能映射出来。
如果有设置resultMap,直接将sql改为下面这样也行。
<select id="selectAllUser" resultMap="usersMap">
select u.user_id,u.name,u.phone,u.sex,u.id_card,u.email,u.country,u.integral,u.state,u.create_time
from users u
</select>
不使用resultMap的解决方法如下:
在mybatis-config.xml文件里配置:
<configuration>
<!-- 全局配置 -->
<settings>
<!--是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN 到经典Java 属性名 aColumn 的类似映射。 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
在Spring-Mybatis.xml中配置SqlSessionFactory:
<!-- 3.配置SqlSessionFactory对象 -->
<bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean">
<!-- 注入数据库连接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBaties全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- 扫描pojo包 使用别名 -->
<property name="typeAliasesPackage" value="com.jc.JunJian.backend.*.entity"/>
<!-- 扫描sql配置文件:mapper需要的xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*/*/*Dao.xml"/>
<property name="plugins">
<array>
<!-- 分页插件配置 -->
<bean id="paginationInterceptor" class="com.baomidou.mybatisplus.plugins.PaginationInterceptor">
<property name="dialectType" value="mysql"/>
</bean>
</array>
</property>
<!-- 全局配置注入 -->
<property name="globalConfig" ref="globalConfig" />
</bean>
疑问:mybatis的全局配置设置了驼峰转换,为什么不生效呢?有大佬知道原因吗?