数据库表里面的字段求和数据库实体类的字段不一致问题
一, 前言:
在实际项目中,因为 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;