-
@author lanys
-
@Description:
-
@date 23/7/2021 下午8:38
*/
@Configuration
@EnableTransactionManagement
@PropertySource(value = “classpath:application.yml”, ignoreResourceNotFound = true)
public class MybatisConfig implements TransactionManagementConfigurer {
@Value("${mybatis.mapper-locations}")
private String mapper;
@Value("${mybatis.type-aliases-package}")
private String aliases;
@Autowired
private DataSource dataSource;
@Bean(name = “sqlSessionFactory”)
public SqlSessionFactory sqlSessionFactory() throws Exception {
SqlSessionFactoryBean bean = new SqlSessionFactoryBean();
// 设置数据源
bean.setDataSource(dataSource);
// 设置xml
bean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapper));
// 设置别名
bean.setTypeAliasesPackage(aliases);
// 添加分页插件
bean.setPlugins(new Interceptor[]{pageInterceptor()});
bean.getObject().getConfiguration().setMapUnderscoreToCamelCase(true);
return bean.getObject();
}
private PageInterceptor pageInterceptor() {
PageInterceptor pageInterceptor = new PageInterceptor();
// 详见 com.github.pagehelper.page.PageParams
Properties p = new Properties();
// RowBounds是否进行count查询 - 默认不查询
p.setProperty(“rowBoundsWithCount”, “true”);
// 当设置为true的时候,如果page size设置为0(或RowBounds的limit=0),就不执行分页,返回全部结果
p.setProperty(“pageSizeZero”, “true”);
// 分页合理化
p.setProperty(“reasonable”, “false”);
// 是否支持接口参数来传递分页参数,默认false
p.setProperty(“supportMethodsArguments”, “true”);
// 设置数据库方言 , 也可以不设置,会动态获取
p.setProperty(“helperDialect”, “mysql”);
pageInterceptor.setProperties§;
return pageInterceptor;
}
@Override
public PlatformTransactionManager annotationDrivenTransactionManager() {
return new DataSourceTransactionManager(dataSource);
}
}
【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】 浏览器打开:qq.cn.hn/FTf 免费领取
测试
自己的其中代码
@Override
public List focusList(Long userId, Integer page, Integer size) {
PageHelper.startPage(page, size);
List listByUserId = new ArrayList<>();
try {
//获取自己关注列表
listByUserId = this.dynamicReleaseMapper.getListFocusId(userId);
if (listByUserId == null || listByUserId.size() == 0){
return listByUserId;
}
//List listByUserId = this.dynamicReleaseMapper.getListFocusId(userId).stream().filter(x->(x.getIsPicture()!=2 && x.getIsVideo() !=2)||(x.getIsPicture()==2 && x.getIsVideo() !=2)||(x.getIsPicture()!=2 && x.getIsVideo() ==2)).collect(Collectors.toList());
publicGetDynamicInfo(userId,listByUserId);
//}
log.info("-------获取关注列表-------");
return listByUserId;
} catch (Exception e) {
log.error(“获取关注列表异常”,e);
}
return listByUserId;
}
想分页要加 PageHelper.startPage(page, size);,否则会默认不分页,也可以自己加limit.
结果(sql语句很长截取一部分):
GROUP BY id ORDER BY create_time desc LIMIT ?
总结
=================================================================
这代码是最后发现不对后,问公司大佬才懂,瞬间学到了,可能有人会问,这有什么好处吗?
优点(自己的想法):



