public class MapperUtil extends Object
| 限定符 | 构造器和说明 |
|---|---|
private |
MapperUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
private static boolean |
canClearJoins(QueryWrapper queryWrapper) |
static <T,R> Page<R> |
doPaginate(BaseMapper<T> mapper,
Page<R> page,
QueryWrapper queryWrapper,
Class<R> asType,
boolean withRelations,
Consumer<FieldQueryBuilder<R>>... consumers) |
static Class<? extends Collection> |
getCollectionWrapType(Class<?> type) |
static long |
getLongNumber(List<Object> objects) |
static <T> T |
getSelectOneResult(List<T> list)
搬运加改造
DefaultSqlSession.selectOne(String, Object) |
static boolean |
hasDistinct(List<QueryColumn> selectColumns) |
private static boolean |
hasGroupBy(List<QueryColumn> groupByColumns) |
private static boolean |
hasUnion(QueryWrapper countQueryWrapper) |
static QueryWrapper |
optimizeCountQueryWrapper(QueryWrapper queryWrapper)
优化 COUNT 查询语句。
|
static QueryWrapper |
optimizeCountQueryWrapper(QueryWrapper queryWrapper,
List<QueryColumn> customCountColumns)
优化 COUNT 查询语句。
|
static Map<String,Object> |
preparedParams(BaseMapper<?> baseMapper,
Page<?> page,
QueryWrapper queryWrapper,
Map<String,Object> params) |
private static void |
preparedQueryWrapper(Map<String,Object> params,
QueryWrapper queryWrapper) |
static <R> void |
queryFields(BaseMapper<?> mapper,
List<R> list,
Consumer<FieldQueryBuilder<R>>[] consumers) |
static <E> E |
queryRelations(BaseMapper<?> mapper,
E entity) |
static <E> List<E> |
queryRelations(BaseMapper<?> mapper,
List<E> entities) |
static QueryWrapper |
rawCountQueryWrapper(QueryWrapper queryWrapper)
原生的、未经过优化的 COUNT 查询。
|
static QueryWrapper |
rawCountQueryWrapper(QueryWrapper queryWrapper,
List<QueryColumn> customCountColumns) |
private MapperUtil()
public static QueryWrapper rawCountQueryWrapper(QueryWrapper queryWrapper)
原生的、未经过优化的 COUNT 查询。抛开效率问题不谈,只关注结果的准确性, 这个 COUNT 查询查出来的分页总数据是 100% 正确的,不接受任何反驳。
为什么这么说,因为是用子查询实现的,生成的 SQL 如下:
SELECT COUNT(*) AS `total` FROM ( ...用户构建的 SQL 语句... ) AS `t`;
不进行 SQL 优化的时候,返回的就是这样的 COUNT 查询语句。
public static QueryWrapper rawCountQueryWrapper(QueryWrapper queryWrapper, List<QueryColumn> customCountColumns)
public static QueryWrapper optimizeCountQueryWrapper(QueryWrapper queryWrapper)
public static QueryWrapper optimizeCountQueryWrapper(QueryWrapper queryWrapper, List<QueryColumn> customCountColumns)
public static boolean hasDistinct(List<QueryColumn> selectColumns)
private static boolean hasGroupBy(List<QueryColumn> groupByColumns)
private static boolean hasUnion(QueryWrapper countQueryWrapper)
private static boolean canClearJoins(QueryWrapper queryWrapper)
@SafeVarargs public static <T,R> Page<R> doPaginate(BaseMapper<T> mapper, Page<R> page, QueryWrapper queryWrapper, Class<R> asType, boolean withRelations, Consumer<FieldQueryBuilder<R>>... consumers)
public static <R> void queryFields(BaseMapper<?> mapper, List<R> list, Consumer<FieldQueryBuilder<R>>[] consumers)
public static <E> E queryRelations(BaseMapper<?> mapper, E entity)
public static <E> List<E> queryRelations(BaseMapper<?> mapper, List<E> entities)
public static Class<? extends Collection> getCollectionWrapType(Class<?> type)
public static <T> T getSelectOneResult(List<T> list)
DefaultSqlSession.selectOne(String, Object)public static long getLongNumber(List<Object> objects)
public static Map<String,Object> preparedParams(BaseMapper<?> baseMapper, Page<?> page, QueryWrapper queryWrapper, Map<String,Object> params)
private static void preparedQueryWrapper(Map<String,Object> params, QueryWrapper queryWrapper)
Copyright © 2024. All rights reserved.