Closed marsal1212 closed 1 year ago
目前的实现方案如下:
@Test public void testSelectByPrimaryKey() { SqlSession sqlSession = getSqlSession(); try { EntityMapper<User, Long> entityMapper = sqlSession.getMapper(UserMapper.class); Optional<User> user = DynamicTableName.hint("user_2", () -> entityMapper.selectByPrimaryKey(1L)); Assert.assertTrue(user.isPresent()); } finally { sqlSession.close(); } }
目前通过调用静态方法设置,优点是所有方法都能直接支持,不需要给某些实体方法设置额外的表名。
上述 selectByPrimaryKey 对应的方法如下:
<script> SELECT id,name AS userName,sex FROM ${@io.mybatis.extra.dynamic.tablename.DynamicTableName@table('user')} <where> id = #{id} </where> </script>
可以先针对当前实现反馈一下。
我这边直接上了sharding-jdbc的hint分表。强制指定,和上面的方法很类似。
谈谈上面这种做法的感受:代码写起来太割裂了。 正常情况下,需要写sql的地方,肯定会定义好动态后缀参数。需要动态表名的,也只是baseMapper内的一些方法。
目前的实现方案如下:
目前通过调用静态方法设置,优点是所有方法都能直接支持,不需要给某些实体方法设置额外的表名。
上述 selectByPrimaryKey 对应的方法如下:
可以先针对当前实现反馈一下。