天天看点

数据库表里面的字段求和数据库实体类的字段不一致问题

数据库表里面的字段求和数据库实体类的字段不一致问题

一, 前言:
在实际项目中,因为 sql语法规范和java语法规范不同,所以 会存在数据库表里面的字段是xx_xx,而java中的实体类的字段为xxXxx驼峰型,导致了数据不一致问题; 这样如果不做处理的话 后台 根本就获取不到值;
二, 解决办法:
1. 在sql里使用别名:
public class User {
    private Integer id;
    private String userName;
    private String password;
    private String userInformation;
 
    public User() {
    }
 
// 根据用户id查询出一条用户记录
public abstract User queryUserById(User user);
 
<select id="queryUserById" resultType="com.mybatis.domain.User">
        SELECT ID,PASSWORD,USER_NAME userName,USER_INFORMATION AS userInformation FROM tbl_user
        <where>
            ID = #{id}
        </where>
</select>
           

不推荐使用(如果是有很多不同的字段的话, 别名就要写很多在里面, 而且 如果很多方法都用到,那不是每个都要写,太浪费时间了)

2. 使用resultMap 集合
<resultMap id="xxx" type="com.mybatis.domain.User">
    <id property="id" column="ID"></id>
    <result property="userName" column="USER_NAME"></result>
    <result property="password" column="PASSWORD"></result>
    <result property="userInformation" column="USER_INFORMATION"></result>
</resultMap>
 
<select id="queryUserById" resultMap="xxx">
    SELECT ID,PASSWORD,USER_NAME,USER_INFORMATION FROM tbl_user
        <where>
            ID = #{id}
        </where>
</select>
           

(推荐使用) 它把所有的字段做了表盒实体类之间的映射, 做了封装, 以后每个方法在使用时,只需要调用此id即可;

3. 如果是mybatis,并且java的实体类为驼峰,而数据库表也复合规范,那么可以开启驼峰命名规则
<configuration>
<!--设置启用数据库字段下划线映射到java对象的驼峰式命名属性,默认为false--> 
    <settings>
        <setting name="mapUnderscoreToCamelCase" value="true"/>
    </settings>
</configuration>
           
如果为springboot那么在application.yml中 要填入:
mybatis:
  configuration:
    map-underscore-to-camel-case: true #是否启动驼峰标识
  mapper-locations: classpath:mapper/*.xml #定义mapper映射文件的位置
  type-aliases-package: com.itluam.springboot.entity #定义别名包的位置
           

具体的springboot整个mybatis 等 ,请点击:springboo的相关整合

通过注解@Column
@Column(name = "f_schema")
private String schema;
           

继续阅读