专栏名称: ImportNew
伯乐在线旗下账号,专注Java技术分享,包括Java基础技术、进阶技能、架构设计和Java技术领域动态等。
目录
相关文章推荐
芋道源码  ·  SpringBoot + minio + ... ·  昨天  
芋道源码  ·  强类型查询:Java 的全能 ORM 神器 ·  3 天前  
Java编程精选  ·  32岁华为女员工自曝:已婚已育,211本98 ... ·  1 周前  
Java基基  ·  Controller 层编码规范 ·  1 周前  
51好读  ›  专栏  ›  ImportNew

Mybatis 处理列名—字段名映射(一) :驼峰式命名映射

ImportNew  · 公众号  · Java  · 2017-07-28 13:16

正文

(点击上方公众号,可快速关注)


来源:岑凯伦(微信公号 - 凯伦说,ID:KailunTalk),

my.oschina.net/kailuncen/blog/909278

如有好文章投稿,请点击 → 这里了解详情


在之前的博客-《 [JDBC] 处理ResultSet,构建Java对象 》中提到,我们需要分析Mybatis在转换Result到需要的Java业务对象时做的三件事,如下:


 [JDBC] 处理ResultSet,构建Java对象

https://my.oschina.net/kailuncen/blog/906992


  1. 解决了数据库列名到Java列名的映射。

  2. 解决了数据库类型到Java类型的转换工作。

  3. 在转换过程中具备一定的容错能力。


其实核心就是:


  1. 数据库中的列名怎么和对象中的字段对应起来。

  2. 数据库中的列的类型怎么转换到合适的Java类型,不引起转换失败。


今天我们先来看第一点,数据库中的列名怎么和对象中的字段对应起来。首先是日常PO(Persistant Object) CityPO,里面有五个字段。


public class CityPO {

    Integer id;

    Long cityId;

    String cityName;

    String cityEnName;

    String cityPyName;


本次要查询的数据库中的列名如下所示。


mysql> mysql> desc SU_City;

+--------------+-------------+------+-----+-------------------+-----------------------------+

| Field        | Type        | Null | Key | Default           | Extra                       |

+--------------+-------------+------+-----+-------------------+-----------------------------+

| id           | int(11)     | NO   | PRI | NULL              | auto_increment              |

| city_id      | int(11)     | NO   | UNI | NULL              |                             |

| city_name    | varchar(20) | NO   |     |                   |                             |

| city_en_name | varchar(20) | NO   |     |                   |                             |

| city_py_name | varchar(50) | NO   |     |                   |                             |

| create_time  | datetime    | NO   |     | CURRENT_TIMESTAMP |                             |

| updatetime   | datetime    | NO   | MUL | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |

+--------------+-------------+------+-----+-------------------+-----------------------------+

7 rows in set (0.01 sec)


我们是按照驼峰式命名,把数据库中的列名对应到了对象的字段名。如下是Mybatis的接口类和映射文件。


public interface CityMapper {

 

    CityPO selectCity(int id);

}


/span>

        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"

        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">