单表的查询并根据时间分页
1、yml或者properties中配数据源,配自己的数据库就好。
mybatis-plus: mapper-locations: ../mapper/*.xml configuration: log-impl:
org.apache.ibatis.logging.stdout.StdOutImpl //这个是为了在控制台打印SQL语句。
2、导入Mybatis-Plus的依赖,我这里使用的是3.4.0的版本,这里一定要注意依赖的版本号,3.4.0以后,分页插件的配置进行了更新。这里强调一下,如果自带分页插件失效,先检查版本和配置。
<!--MyBatis-plus配置--> <dependency> <groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId> <version>3.4.0</version>
</dependency>
3、新建一个config,这个config写Mybatis-Plus的插件配置,MP的插件配置有很多,这里单说一下分页的配置。
/** * 注意@MapperScan,使用springboot的话,启动类是要扫描数据层的,如果仅用的是MP对数据 *
库操作,启动类里面的@MapperScan是不用写的,只写这里就好。 * */ @Configuration
@MapperScan("com.tiktang.dao") public class MybatisPlusConfig { /** *
IPage的分页使用的是拦截器,属于物理分页,好处就是处理大量数据时,查询速度快。 * 有兴趣的同学可以看看什么是物理分页和逻辑分页。 * @return
*/ @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
//向Mybatis过滤器链中添加分页拦截器 interceptor.addInnerInterceptor(new
PaginationInnerInterceptor(DbType.MYSQL)); return interceptor; } @Bean public
ConfigurationCustomizer configurationCustomizer() { return configuration ->
configuration.setUseDeprecatedExecutor(false); } }
4、单表的实体类entity对象,自己数据库中的字段,此步进行了省略。
5、程序的步骤,我一般习惯先写Mapper.xml,Mapper,service,serviceImpl,controller。按这个步骤来说,首先要先写的是Mapper.xml,但是是单表操作,又是用MP框架,就不用再写Mapper.xml了。
6、Mapper
//News为实体类 @Repository public interface NewsMapper extends BaseMapper<News> { }
7、service
//News为实体,page为当前页,pageSize是一页多少个 public interface NewsService { IPage<News>
queryNewsList(Integer page, Integer pageSize); }
8、serviceImpl
@Service public class NewsServiceImpl implements NewsService { @Autowired
private NewsMapper newsMapper; @Override public IPage<News>
queryNewsList(Integer page, Integer pageSize) { // Page<News> page1 = new
Page<>(page,pageSize); //这里进行了时间排序 QueryWrapper<News> queryWrapper = new
QueryWrapper<>(); queryWrapper.orderByDesc("news_time");
//MP自带的selectPage方法,有兴趣的同学,可以看一下源码 IPage<News> iPage =
newsMapper.selectPage(new Page<>(page, pageSize), queryWrapper); return iPage;
} }
9、controller
@GetMapping("/newsList") public Result<News> queryNewsList(@RequestParam
Integer page, @RequestParam Integer pageSize){ IPage<News> iPage =
newsService.queryNewsList(page, pageSize); return
Result.ok().data("iPage",iPage); }
Result是我自己封装的结果集,有时间会再写一下关于返回统一结果集的内容。
到此单表查询分页并根据时间排序就完成。
2⃣️:
@GetMapping("/getCompanyInvest") public Result getCompanyInvest(@RequestParam
String companyId, @RequestParam Integer currentPage, @RequestParam Integer
pageNumber){ QueryWrapper<CompanyInvest> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("company_id",companyId); Page<CompanyInvest> page = new
Page<>(currentPage,pageNumber); IPage<CompanyInvest> companyInvestIPage =
companyInvestMapper.selectPage(page,queryWrapper); Map<String,Object> map = new
HashMap<>(); map.put("公司投资信息的子页面",companyInvestIPage); return
Result.ok().data(map); }