3 Star 22 Fork 3

selfly / sonsure-dumper

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
mapping-handler.md 3.08 KB
一键复制 编辑 原始数据 按行查看 历史
selfly 提交于 2024-04-08 15:54 . Select添加类泛型及文档完善

MappingHandler使用及扩展

MappingHandler的存在就一个作用,将类名、属性名和表名、列名进行互转。

接口定义如下,看方法名就能知道每个方法具体的作用:

public interface MappingHandler {

    /**
     * 根据实体名获取表名
     *
     * @param className the class name
     * @param params    the params
     * @return table name
     */
    String getTable(String className, Map<String, Object> params);

    /**
     * 根据实体名获取表名
     *
     * @param clazz  the clazz
     * @param params the params
     * @return table name
     */
    String getTable(Class<?> clazz, Map<String, Object> params);

    /**
     * 根据类名获取主键字段名
     *
     * @param clazz the clazz
     * @return pK name
     */
    String getPkField(Class<?> clazz);

    /**
     * 根据属性名获取列名
     *
     * @param clazzName the clazz name
     * @param fieldName the field name
     * @return column name
     */
    String getColumn(String clazzName, String fieldName);

    /**
     * 根据属性名获取列名
     *
     * @param clazz     the clazz
     * @param fieldName the field name
     * @return column name
     */
    String getColumn(Class<?> clazz, String fieldName);

    /**
     * 根据列获取属性
     *
     * @param clazz
     * @param columnName
     * @return
     */
    String getField(Class<?> clazz, String columnName);
}

默认提供了DefaultMappingHandler实现,继承于AbstractMappingHandler,遵守了前面的约定

另外提供了几个常用的参数可供配置:

modelPackages

实体类所在包,写法跟spring扫描包一致,支持通配符,多个用英文逗号隔开。

当写自定义sql使用短类名时需要指定,由构造方法传入。

customClassMapping

添加自定义的全类名到短类名的映射,一般情况下用不到。

当不同的包下有相同的类名,又想在sql中使用短类名时可以使用。

tablePrefixMap

表前缀定义,很多时候不同的项目或模块拥有不同的表前缀,但映射的实体类不会有前缀。例如ss_user表对应实体类为User.

Map<String, String> tablePrefixMap = new LinkedHashMap<>();
tablePrefixMap.put("com.sonsure", "ss_");
mappingHandler.setTablePrefixMap(tablePrefixMap);

以上配置将在处理com.sonsure包下的所有实体类名转换时,自动添加ss_前缀。

PS:当实体类上有使用注解时,会优先使用注解内指定的名称。

当默认提供的DefaultMappingHandler不能满足需求时,可以自行实现或重写相关转换方法。

然后在声明JdbcEngine时设置:

<bean id="jdbcTemplateEngine" class="com.sonsure.dumper.springjdbc.config.JdbcTemplateEngineFactoryBean">
    <!-- ...... -->
    <property name="mappingHandler" ref="customMappingHandler"/>
</bean>
Java
1
https://gitee.com/selfly/sonsure-dumper.git
git@gitee.com:selfly/sonsure-dumper.git
selfly
sonsure-dumper
sonsure-dumper
master

搜索帮助