1. 程式人生 > >【MyBatis】解決資料庫欄位名稱與Java實體類屬性名稱不一致問題

【MyBatis】解決資料庫欄位名稱與Java實體類屬性名稱不一致問題

問題描述:

      有時候在專案中會遇到資料庫欄位名稱與實體類屬性名稱取得不一樣的情況,如下:

     資料庫裡的資料為:

      此時,如果我們查詢該表的某條資料,ProjectMapper.xml程式碼為

    <select id="findProjectById" resultType="com.yealink.ptms.pojo.Project">
        SELECT * FROM project d WHERE d.id = #{id}
    </select>

      打印出來的結果為,可以發現productSeriesId、createdBy、startTime、endTime這幾個欄位都是null,completeness為null是因為我本身資料庫裡面就是null。

2018-09-10T15:24:11.306+0800 WEBDEBUG 7400 --- [           main] c.y.p.m.ProjectMapper.findProjectById    : ==>  Preparing: SELECT * FROM project d WHERE d.id = ? 
2018-09-10T15:24:11.307+0800 WEBDEBUG 7400 --- [           main] c.y.p.m.ProjectMapper.findProjectById    : ==> Parameters: 46accd8e77e1480fad1fb8fb726d47a1(String)
2018-09-10T15:24:11.311+0800 WEBDEBUG 7400 --- [           main] c.y.p.m.ProjectMapper.findProjectById    : <==      Total: 1
Project{id='46accd8e77e1480fad1fb8fb726d47a1', name='專案測試2', description='專案描述描述描述sdacvsacdas...', productSeriesId='null', version='1.0.1', createdBy='null', startTime=null, endTime=null, state='normal', completeness='null'}

解決辦法:

     在ProjectMapper.xml加上如下程式碼:

<resultMap id="ProjectMap" type="com.yealink.ptms.pojo.Project">
        <id property="id"  column="id"/>
        <result property="name" column="name"/>
        <result property="description" column="description"/>
        <result property="productSeriesId" column="product_series_id"/>
        <result property="version" column="version"/>
        <result property="createdBy" column="created_by"/>
        <result property="startTime" column="start_time"/>
        <result property="endTime" column="end_time"/>
        <result property="state" column="state"/>
        <result property="completeness" column="completeness"/>
</resultMap>

      修改原先的查詢語句即可:

   <select id="findProjectById" resultMap="ProjectMap">
        SELECT * FROM project d WHERE d.id = #{id}
   </select>

執行結果:

      可以看到資料均正常展示了。

2018-09-10T15:11:37.559+0800 WEBDEBUG 9708 --- [           main] c.y.p.m.ProjectMapper.findProjectById    : ==>  Preparing: SELECT * FROM project d WHERE d.id = ? 
2018-09-10T15:11:37.559+0800 WEBDEBUG 9708 --- [           main] c.y.p.m.ProjectMapper.findProjectById    : ==> Parameters: 46accd8e77e1480fad1fb8fb726d47a1(String)
2018-09-10T15:11:37.566+0800 WEBDEBUG 9708 --- [           main] c.y.p.m.ProjectMapper.findProjectById    : <==      Total: 1
Project{id='46accd8e77e1480fad1fb8fb726d47a1', name='專案測試2', description='專案描述描述描述sdacvsacdas...', productSeriesId='1efe6d6bbc02414f8ae3f10a1b5184b8', version='1.0.1', createdBy='admin', startTime=Mon Oct 01 00:00:00 CST 2018, endTime=Wed Oct 10 00:00:00 CST 2018, state='normal', completeness='null'}