【Mybatis】数据封装时数据库表字段和POJO中实体类属性命名不一致的几种解决方案

#【Mybatis】数据封装时数据库表字段和POJO中实体类属性命名不一致的几种解决方案

解决方案一:命名一致

我们可以把POJO中的实体类命名和数据库表中字段的命名调整一致,但是数据库表字段的命名方式并不是驼峰式命名方式,不符合Java中对于类属性的命名规则,因此不推荐使用。

【Mybatis】数据封装时数据库表字段和POJO中实体类属性命名不一致的几种解决方案_第1张图片

【Mybatis】数据封装时数据库表字段和POJO中实体类属性命名不一致的几种解决方案_第2张图片

解决方案二:给表中字段取别名

我们可以通过在表对应的mapper.xml配置文件中通过标签给字段取别名的方式,使得重新命名的表字段别名与实体类中的属性名保持一致,再通过标签引入sql代码块,这样也可以达到数据正常封装的效果。


    
        p_id as pid,
        p_name as pname,
        pg_id as pgid
    

    

以下是通过在mybatis配置文件中加入中的logImpl设置为STDOUT_LOGGING是为了使日志输出mybatis生产的sql语句,这样就可以通过日志输出看到在list中拿到了正常封装的数据对象。

    
        
    

【Mybatis】数据封装时数据库表字段和POJO中实体类属性命名不一致的几种解决方案_第3张图片

解决方案三:通过resultMap来调整字段名与属性名映射一致

我们可以通过标签来将数据库表中字段映射到对应的实体类属性上,完成数据库查询数据的封装,如果实体类的属性中存在自定义类属性,那么也可以通过resultMap进行数据的层层映射,封装到对应自定义类中的基本类型数据中。

    
        
        
        
    
    

解决方案四:使用Mybatis特殊设置

在Mybatis配置文件标签内设置mapUnderscoreToCamelCase属性的值为true,那么数据库就会将表字段的分割式命名(例如:p_id)自动映射到实体类的驼峰式命名(例如:pId)上,且不区分驼峰式命名的大小写。

    
        
    

 

你可能感兴趣的:(Mybatis相关问题汇总,springboot,aop,mybatis,java,后端,面试,mysql)