解决spring+mybaits配置文件中mybatis找不到xx字段问题或SpringBoot+Mybatis-plus的找不到xx_xx字段问题

spring+mybaits整合问题:解决可能出现数据库表字段名与实体不对应问题

没有整合之前,在Mybaits-config配置文件中只需简单设置即可。
<?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>
方法1.spring配置文件中mybatis开启驼峰命名(推荐做法 )

提示 自 1.3.0 版本开始,新增的 configuration 属性能够在没有对应的 MyBatis XML 配置文件的情况下,直接设置 Configuration 实例。

<bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="mapperLocations" value="classpath:mapper/*.xml"></property>
        <property name="configuration">
            <bean class="org.apache.ibatis.session.Configuration">
                <property name="mapUnderscoreToCamelCase" value="true"/>
            </bean>
        </property>
</bean>
方法2:只要在xxx.mapper.xml文件修改resultType换成resultMap类型,编写映射规则。

1.这里举个实体类SysUser
实体类
2.数据库表sys_user
数据库设计

3.SysUserMapper.xml

在编写映射规则时我们要主要注意数据库字段的属性对应的Java数据类型!

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.gk.childvaccine.dao.SysUserMapper" >
  <resultMap id="BaseResultMap" type="com.gk.childvaccine.po.SysUser" >
    <id column="user_id" property="userId" jdbcType="BIGINT" />
    <result column="user_name" property="userName" jdbcType="VARCHAR" />
    <result column="user_account" property="userAccount" jdbcType="VARCHAR" />
    <result column="user_password" property="userPassword" jdbcType="VARCHAR" />
    <result column="user_sex" property="userSex" jdbcType="VARCHAR" />
    <result column="user_iphone" property="userIphone" jdbcType="VARCHAR" />
    <result column="user_email" property="userEmail" jdbcType="VARCHAR" />
    <result column="user_salt" property="userSalt" jdbcType="VARCHAR" />
  </resultMap>
  <sql id="Base_Column_List" >
    user_id, user_name, user_account, user_password, user_sex, user_iphone, user_email, 
    user_salt
  </sql>
  <select id="selectByPrimaryKey" resultMap="BaseResultMap" parameterType="java.lang.Long" >
    select 
    <include refid="Base_Column_List" />
    from sys_user
    where user_id = #{userId,jdbcType=BIGINT}
  </select>
</mapper>

这里再补充一下 SpringBoot Mybatis 的驼峰命名 开启驼峰命名的方法

第一种方式:

可以在配置类中进行配置。配置的Demo如下:

 @Bean(name="sqlSessionFactory")
    public SqlSessionFactory sqlSessionFactory(@Qualifier("dataSource") DataSource dataSource) throws Exception {
        SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
        sqlSessionFactoryBean.setDataSource(dataSource);
        sqlSessionFactoryBean.setVfs(SpringBootVFS.class);
        sqlSessionFactoryBean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
        return sqlSessionFactoryBean.getObject();
 
    }

第二种方式:

在SpringBoot的application配置文件中进行设置,这里是properties的配置,配置的Demo如下:

  mybatis.configuration.mapUnderscoreToCamelCase=true

第三种方式:

第三种利用XML形式的配置,上面已经介绍过就不再举例了:

在使用到SpringBoot+Mybatis-plus时也需要注意的是mybatis-plus默认处理是通过下划线分隔;

如:当我们遇见我们的尸体类名与我们的表字段是驼峰写法时:
private String userName;
我们在数据库的字段名也是 userName
会出现它会提示你user_name字段不存在
解决方法:
appliction.yml 里设置关闭驼峰式编码

mybatis-plus:
  configuration:
    # 是否开启自动驼峰命名规则(camel case)映射,即从经典数据库列名 A_COLUMN(下划线命名) 到经典 Java 属性名 aColumn(驼峰命名) 的类似映射
    map-underscore-to-camel-case: false
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值