【MyBatis】解决数据库字段名称与Java实体类属性名称不一致问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Mr_EvanChen/article/details/82590102

问题描述:

      有时候在项目中会遇到数据库字段名称与实体类属性名称取得不一样的情况,如下:

     数据库里的数据为:

      此时,如果我们查询该表的某条数据,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'}

猜你喜欢

转载自blog.csdn.net/Mr_EvanChen/article/details/82590102