但行好事
莫论前程❤

Mybatis查询时部分字段无法映射到对象中

重要的事情说三遍:

对象属性字段要使用驼峰命名法

对象属性字段要使用驼峰命名法

对象属性字段要使用驼峰命名法

报错代码如下:

List<PtUserApplication> ptUserApplications = sqlSessionTemplate.selectList(NAMESPACE + "selectApplications",uid);
private Long uid;
private String app_name;
private short service_type;

public String getapp_name() {
        return applicationName;
    }

    public void setApp_name(String applicationName) {
        this.applicationName = applicationName;
    }

    public short getService_type() {
        return serviceType;
    }

    public void setService_type(short serviceType) {
        this.serviceType = serviceType;
    }

原因:

对象属性字段没有使用驼峰命名法

​ 导致mybatis自动注入时不能够找到对应的setXXX()方法.

修改后的代码为:

    private Long uid;
    private String applicationName;
    private short serviceType;

    public String getApplicationName() {
        return applicationName;
    }

    public void setApplicationName(String applicationName) {
        this.applicationName = applicationName;
    }

    public short getServiceType() {
        return serviceType;
    }

    public void setServiceType(short serviceType) {
        this.serviceType = serviceType;
    }
<select id="selectApplications" parameterType="Long" resultType="PtUserApplication">
       SELECT uid,
             app_name      AS  applicationName,
             service_type  AS  serviceType 
       from user_app 
       where uid = #{uid}
    </select>

现在Mybatis支持属性使用驼峰命名

需要开启一个配置:

源码
public class Configuration {  

  protected Environment environment;  

  protected boolean safeRowBoundsEnabled = true;  
  protected boolean mapUnderscoreToCamelCase = false;  
  protected boolean lazyLoadingEnabled = false;  

  • mapUnderscoreToCamelCase:是否启用下划线与驼峰式命名规则的映射(如first_name => firstName)

使用:

  • spring配置:
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">  
          <property name="mapperLocations" value="classpath:sqlMapper/*" />  
          <property name="dataSource" ref="dataSource" />  
          <property name="configLocation" value="classpath:mybatis-config.xml"></property>  
</bean>  
  • mybatis-config.xml:
<configuration>  
     <settings>  
          <setting name="mapUnderscoreToCamelCase" value="true" />  
     </settings>  
</configuration>

数据库字段:
is_man

bean:
private Integer isMan;

**mapper配置不需要写字段与属性的配置,会自动映射。 **

赞(1) 打赏
未经允许不得转载:刘鹏博客 » Mybatis查询时部分字段无法映射到对象中
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏