Я использую 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?