Как получить значение столбца БД от Mybatis для шардинга? - PullRequest
0 голосов
/ 30 апреля 2019

Я использую Mybatis для доступа к БД, и некоторые таблицы разделяются по идентификатору с помощью алгоритма хеширования.

Я хочу написать перехватчик Mybatis для автоматического изменения имени таблицы, необходимо получить значение столбца шардинга.

Таблица Entity:

@Data
@TableName("m_user")
public class User {
    @TableId(type = IdType.AUTO)
    private Integer id;
    private String name;
    private Integer age;
}

UserMapper sql:

@Select("select * from m_user where id = #{id2} and name = #{name2};")
List<User> selectByIdAndName(Integer id2, String name2);

Я использую boundSql.getParameterObject() и boundSql.getParameterMappings() для проверки, но я не могу убедиться, что столбец шардинга id указан в sql, а затем получить значение столбца шардирования.

Здесь значения ParameterMappings и значения ParameterObject:

parameter mapping:ParameterMapping{property='id2', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}
parameter mapping:ParameterMapping{property='name2', mode=IN, javaType=class java.lang.Object, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}
params:{id2=1, param1=1, name2=name1, param2=name1}

Параметры являются параметрами функции Mapper, но мне нужен столбец шардинга id и значение, программа может получить только id2 или param1.

Как получить столбец db и значение из Mybatis?

...