zoukankan      html  css  js  c++  java
  • 【Mybatis-Plus】Spring整合 驼峰命名设置失效问题

    查询时发现这个问题:

    DEBUG [main] - Creating a new SqlSession
    DEBUG [main] - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4ef74c30] was not registered for synchronization because synchronization is not active
    DEBUG [main] - Fetching JDBC Connection from DataSource
    DEBUG [main] - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/oa?serverTimezone=GMT]
    DEBUG [main] - JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@319bc845] will not be managed by Spring
    DEBUG [main] - ==>  Preparing: SELECT user_id,user_name,user_password,user_status,user_is_del FROM sys_user WHERE user_id=? 
    DEBUG [main] - ==> Parameters: 3(Integer)
    DEBUG [main] - <==      Total: 1
    DEBUG [main] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@4ef74c30]
    null

    我们的User实体类完全符合表字段名称,一模一样

    到这里我就多半猜到是驼峰自动匹配了,数据库表字段是ab_cdef_ghij这样的命名规范的

    Mybatis-Plus直接给Java转换成abCdefGhij这样了

    找不到关于MybatisPlus在Spring中是如何取消驼峰配置的,可以做的是改变实体类属性为驼峰符合的命名:

    再次测试的结果:

    DEBUG [main] - Creating a new SqlSession
    DEBUG [main] - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7d61eb55] was not registered for synchronization because synchronization is not active
    DEBUG [main] - Fetching JDBC Connection from DataSource
    DEBUG [main] - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/oa?serverTimezone=GMT]
    DEBUG [main] - JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@58ffcbd7] will not be managed by Spring
    DEBUG [main] - ==>  Preparing: SELECT user_id,user_name,user_password,user_status,user_is_del FROM sys_user WHERE user_id=? 
    DEBUG [main] - ==> Parameters: 3(Integer)
    DEBUG [main] - <==      Total: 1
    DEBUG [main] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7d61eb55]
    User(userId=3, userName=user02, userPassword=123456, userStatus=1, userIsDel=0)

    终于在百度各种博客帖子查不到我想要的答案之后,直奔官方文档的解释查看:

    https://mp.baomidou.com/config/#configuration

    也就是说我需要使用原生Mybatis的XML文件来配置

    上面的注解@TableField也不需要

    然后再往上翻,基本配置中找到了:

    可是我就算这样配置了也照样没用啊???

    <?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:context="http://www.springframework.org/schema/context"
    
           xsi:schemaLocation="
           http://www.springframework.org/schema/beans
           http://www.springframework.org/schema/beans/spring-beans.xsd
    
           http://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd
    "
    >
        <!--
            dao层的配置:核心是要产生
            Mapper代理类对象
            1.引入数据库配置信息
            2.数据源配置
            3.SqlSessionFactory
            4.产生Mapper接口的代理类对象
        -->
    
        <!-- 1.引入数据库配置信息 -->
        <context:property-placeholder location="classpath:db.properties" system-properties-mode="FALLBACK" />
    
        <!--2.数据源配置 -->
        <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
            <property name="driverClassName" value="${jdbc.driverClassName}" />
            <property name="url" value="${jdbc.url}" />
            <property name="username" value="${jdbc.username}" />
            <property name="password" value="${jdbc.password}" />
        </bean>
    
        <!-- 3.SqlSessionFactory -->
        <bean id="sqlSessionFactory" class="com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean">
    
            <property name="dataSource" ref="dataSource" />
            <property name="globalConfig" ref="globalConfig" />
            <property name="configuration" ref="configuration" />
    
            <!-- 加载xxMapper.xml -->
            <property name="mapperLocations">
                <array>
                    <value>classpath:mybatis/mapper/*Mapper.xml</value>
                </array>
            </property>
    
            <!-- 配置分页插件 -->
            <property name="plugins">
                <array>
                    <bean class="com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor"/>
                </array>
            </property>
        </bean>
    
        <bean id="configuration" class="com.baomidou.mybatisplus.core.MybatisConfiguration">
           <property name="mapUnderscoreToCamelCase" value="false" />
        </bean>
    
        <!-- 声明全局配置 -->
        <bean id="globalConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig">
            <!-- 指定主键自动增长类型 -->
            <property name="dbConfig" ref="dbConfig" />
        </bean>
    
        <bean id="dbConfig" class="com.baomidou.mybatisplus.core.config.GlobalConfig.DbConfig">
            <property name="idType" value="AUTO" />
        </bean>
    
        <!-- 4.产生Mapper接口的代理类对象 -->
        <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
            <!-- 需要生成代理类对象的mapper接口包 -->
            <property name="basePackage" value="cn.echo42.mapper" />
            <!-- sqlSessionFactory 的name 用于为代理类中生成SqlSession -->
            <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory" />
        </bean>
    </beans>

    测试结果:

    DEBUG [main] - Creating a new SqlSession
    DEBUG [main] - SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7d61eb55] was not registered for synchronization because synchronization is not active
    DEBUG [main] - Fetching JDBC Connection from DataSource
    DEBUG [main] - Creating new JDBC DriverManager Connection to [jdbc:mysql://localhost:3306/oa?serverTimezone=GMT]
    DEBUG [main] - JDBC Connection [com.mysql.cj.jdbc.ConnectionImpl@58ffcbd7] will not be managed by Spring
    DEBUG [main] - ==>  Preparing: SELECT user_id,user_name,user_password,user_status,user_is_del FROM sys_user WHERE user_id=? 
    DEBUG [main] - ==> Parameters: 3(Integer)
    DEBUG [main] - <==      Total: 1
    DEBUG [main] - Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@7d61eb55]
    null

    暂时使用驼峰规则来使用了。。。

  • 相关阅读:
    Centos7 安装RabbitMQ 3.6.1
    面向对象编程(类的绑定方法与非绑定方法)
    面向对象编程(封装、封装的意义、封装与扩展性、@property)
    函数式编程(__slots__)
    面向对象编程(实例属性、类属性)
    面向对象编程(获取对象信息)
    面向对象编程(继承、多态)
    函数式编程(访问限制)
    面向对象编程(类与实例)
    面向对象编程(基础简介)
  • 原文地址:https://www.cnblogs.com/mindzone/p/13443967.html
Copyright © 2011-2022 走看看