-
Notifications
You must be signed in to change notification settings - Fork 8
元数据映射
Nico edited this page Oct 12, 2018
·
2 revisions
Ourbatis的工作原理是用实体类去映射表字段作为模板渲染的基础元数据:
另一个角度可以将这个过程看成元数据的加工流水线,在这个流水线中还有两个重要的角色在工作:注解
和Wrapper(包装器)
,他们会辅助加工。Mapping加工对象是Class<? extends Object>
Domain类以及一个String类型的字段mapperLocations
Mapper接口所在包名,每次映射都将会产生一个Table对象,它包含着相关的元数据:
字段名 | 类型 | 含义 |
---|---|---|
tableName | String | 表名 |
allColumns | List | 表所有字段结合 |
normalColumns | List | 表普通字段集合 |
primaryColumns | List | 表主键字段集合 |
domainClassName | String | 类全名 |
domainSimpleClassName | String | 类名 |
mapperClassName | String | Mapper接口类名 |
这些元数据可以在ourbatis.xml
中作为渲染的参数,之后将会着重讲解。
在Mapping加工的过程中,我们的传入Class的ClassName及FieldName将分别映射为表名和表字段名,当然,这种过程并不是写死的,我们可以通过注解和Wrapper包装器去修改它,这将会为我们的加工过程带来足够的灵活性,例如:
- 自定义表名
- 自定义表字段名
- 自定义Mapper接口包名
- 自定义转义(也可以在模板中实现)
无论是注解还是Wrapper,最终的目的都是为元数据提供一个外界控制入口,当我们需要根据应用场景去自定义Mapper映射时,注解和Wrapper配置将会变得非常有用!下一节将会逐一介绍他们!
值得一提的是,元数据中有一个数据非常特殊:mapperClassName
Mapper接口类名,明确来说它并不属于Domain的范畴,但是Ourbatis是通过Domain的类名及mapperLocations
配合注解和Wrapper去装配Mapper接口类名。