Mybatis配置——自動使用駝峰命名 屬性映射字段(默認為false)


開發一個新項目,用的springboot,相關配置不太熟悉,導致一些配置沒配,到具體開發時問題就暴露出來了,記錄第一個配置問題————Mybatis配置—自動使用駝峰命名 屬性(userId)映射字段(user_id)。

實體類:

@Table(name = "bg_posting")
public class BgPosting {
    /**
     * 帖子id
     */
    @Id
    @Column(name = "posting_id")
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long postingId;

    /**
     * 帖子標題
     */
    @Column(name = "posting_title")
    private String postingTitle;

    /**
     * 發帖人id
     */
    @Column(name = "user_id")
    private Long userId;
    
    ...
    
    }

錯誤:實體類用了@Table和@Column等注解,以為在**Mapper.xml中做查詢等操作時,會自動映射,例如:posting_id ——> postingId,然而測試結果告訴我,如果沒有寫 手動映射,直接 到實體類,那么所有駝峰命名的屬性都為null,也就是說駝峰命名的沒有自動映射成功,這就是配置問題了,在網上查了資料,這個駝峰自動映射(默認為false)需要手動配置。

要在mybatis的配置文件中加上如下代碼:

@Bean
    public SqlSessionFactory sqlSessionFactoryBean(DataSource dataSource) throws Exception {
        SqlSessionFactoryBean factory = new SqlSessionFactoryBean();
        factory.setDataSource(dataSource);
        factory.setTypeAliasesPackage(MODEL_PACKAGE);
        
        ...
        
        org.apache.ibatis.session.Configuration configuration=new org.apache.ibatis.session.Configuration();
        configuration.setUseGeneratedKeys(true);//使用jdbc的getGeneratedKeys獲取數據庫自增主鍵值
        configuration.setUseColumnLabel(true);//使用列別名替換列名,如:select user as User
        configuration.setMapUnderscoreToCamelCase(true);//-自動使用駝峰命名屬性映射字段,如userId    user_id
        factory.setConfiguration(configuration);
        return factory.getObject();
    }

這樣即使實體類不加@Column等注解,依然可以根據駝峰規則,映射成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM