如何从Mybatis获取数据库列值以进行分片?

时间:2019-04-30 04:54:45

标签: mybatis

我使用Mybatis访问数据库,并且某些表通过哈希算法按ID进行分片。

我想编写一个Mybatis拦截器来自动更改表名,它需要获取分片列的值。

表实体:

@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和值,程序只能获取id2param1

如何从Mybatis获取db列和值?

0 个答案:

没有答案