我们在查询数据库时经常会碰到数据库的字段名与实体类的字段名不一致的情况,例如报如下的错误
使用mybatisplus可以使用以下几种方式进行字段名的匹配:
把实体类的字段名改成和数据库的字段名一致,当然这种方法还是比较低级的。
如果是自定以mapper.xml文件中手写的sql查询语句,可以给字段起一个别名。
<selectid="getXXX"resultType="XXX" resultType="XXX(实体类名)">select ..., 数据库字段名 as 实体字段名 from XXX;</select>
手写的sql查询语句也可以在在mapper.xml 文件中设置结果集的property属性,
<select id="selectAll" resultMap="map">select * from 数据库表名</select><resultMap id="map" type="com.itheima.doman.实体类名"><result column="数据库字段名" property="实体类字段名"></result></resultMap>
在实体类中使用注解@tablefield
package com.itheima.doman;import com.baomidou.mybatisplus.annotation.TableField;import com.baomidou.mybatisplus.annotation.TableName;import lombok.Data;@Data@TableName("tb_user")public class TbUser {private long id;@TableField(value = "username")private String userName;private String gender;private String password;private String addr;}
如果只是单纯的下划线,可以在mybatis的核心配置文件中使用setting标签设置开启驼峰命名规则,例如:数据库字段user_name_name,实体类userName。
<settings><!--开启驼峰命名规则,可以将数据库字段的下划线映射为驼峰命名--><settingname="mapUnderscoreToCamelCase"value="true"/></settings>
如果是springboot项目可以在yml的配置文件中开启mybatiplus中的驼峰命名法功能
mybatis-plus:configuration:#在映射实体或者属性时,将数据库中表名和字段名中的下划线去掉,按照驼峰命名法映射map-underscore-to-camel-case: true
如果是springboot项目也可以在yml的配置文件中设定数据库表明的前缀,例如,我的数据库表明都有前缀tb_,那么我就可以在全局配置文件中像下面这样设定
table-prefix: tb_