垂直分表与水平分表2020918
垂直分表
垂直分表适合将表中某些不常用且占了大量空间的列拆分出去。
例如,一张表中的nickname和description字段,假设我们是一个婚恋网站,用户在筛选其他用户的时候,主要使用age和sex两个字段进行查询,而nickname和description两个字段主要用于展示,一般不会在业务查询中用到,description本身又比较长,因此我们可以将这两个字段独立到另一张表中,这样在查询age和sex时,就能带来一定的性能提升。
水平分表
水平分表适合表行数特别大的表,有的公司要求单表行数超过5000万就必须进行分表,这个数字可以作为参考,但并不是绝对标准,关键还是要看表的访问性能。对于一些比较复杂的表,可能超过1000万就要分表了;而对于一些简单的表,即使存储数据超过1亿行,也可以不分表。
1.分页插件
MyBatis Plus自带分页插件,只要简单的配置即可实现分页功能
-
添加配置类
MyBatisPlusConfig
@Configuration @MapperScan("com.atguigu.mybatisplus.mapper") public class MyBatisPlusConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor(){ MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor(); //添加分页插件 interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } } -
编写测试方法
@Test public void testPage(){ //new Page()中的两个参数分别是当前页码,每页显示数量 Page<User> page = userMapper.selectPage(new Page<>(1, 2), null); List<User> users = page.getRecords(); users.forEach(System.out::println); }
2.自定义分页
上面调用的是MyBatis-Plus提供的带有分页的方法,那么我们自己定义的方法如何实现分页呢?
-
在
UserMapper
接口中定义一个方法/** * 根据年龄查询用户列表,分页显示 * @param page 分页对象,xml中可以从里面进行取值,传递参数 Page 即自动分页,必须放在第一位 * @param age 年龄 * @return */ Page<User> selectPageVo(@Param("page") Page<User> page,@Param("age") Integer age); -
在
UserMapper.xml
中编写SQL实现该方法<select id="selectPageVo" resultType="User"> select id,username as name,age,email from t_user where age > #{age} </select> -
编写测试方法
@Test public void testPageVo(){ Page<User> page = userMapper.selectPageVo(new Page<User>(1,2), 20); List<User> users = page.getRecords(); users.forEach(System.out::println); }
posted on 2022-09-18 17:39 JavaCoderPan 阅读(50) 评论(0) 编辑 收藏 举报 来源
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南