存取数据库?本栏目通过对存取数据库问题整理,来做出以下的解答希望对你有所帮助。
SpringBoot集成MyBatis的相关要点
分表的最大难点,在于确定你存取的数据在哪张表上。
解决方案在于将一个不可或缺的字段(主键)作为分表依据,我们可以通过对其进行哈希计算,再取模表的数量,即可确定数据在第几张表上了,最后再对表名进行拼接,即可确定表名。
1.domain层
我们定义了一个和数据库表字段对应的JavaBean
2.mapper层
我们定义了两个数据库访问层的接口
编写对应的SQL
3.Service层
我们定义了用户信息操作的接口与实现,主要是对mapper做了一层表名的封装,统一处理表名的相关逻辑
4.工具层
这是本文的核心,就是如何确定表在哪里。
我们定义了2个常量,分别是表名的基础名称、表数量。
我们先测试新增数据
运行完上面的单元测试,我查询数据库,可以看到该表user_info_1已有该数据了
我们再进行查询数据测试

运行完上面的单元测试,可以看到顺利打印出刚才新增的数据
说明分表读写是正常的。
分表很好的解决了我们数据量大存取的性能问题。
此外,分库的解决方案和分表类似,只不过多了1层确定数据是在哪个库上的逻辑,而这逻辑和确定数据在哪张表上是一样的,依旧是依赖一个业务主键进行哈希计算、取模确定的。
然而分表也有一个缺点,就是你以后的写入、查询,都需要附带一个业务主键,由它来确定库表在的具体位置,不过数据基本都有主键的,而那个主键通常就可以用来业务主键,逻辑上并没有增加多少障碍。
END,本文到此结束,如果可以帮助到大家,还望关注本站哦!
文章版权声明:除非注明,否则均为边学边练网络文章,版权归原作者所有