|
|
@@ -26,168 +26,186 @@ import cn.hutool.core.collection.CollUtil;
|
|
|
/**
|
|
|
* 在 MyBatis Plus 的 BaseMapper 的基础上拓展,提供更多的能力
|
|
|
*
|
|
|
- * 1. {@link BaseMapper} 为 MyBatis Plus 的基础接口,提供基础的 CRUD 能力
|
|
|
- * 2. {@link MPJBaseMapper} 为 MyBatis Plus Join 的基础接口,提供连表 Join 能力
|
|
|
+ * 1. {@link BaseMapper} 为 MyBatis Plus 的基础接口,提供基础的 CRUD 能力 2.
|
|
|
+ * {@link MPJBaseMapper} 为 MyBatis Plus Join 的基础接口,提供连表 Join 能力
|
|
|
*/
|
|
|
public interface BaseMapperX<T> extends MPJBaseMapper<T> {
|
|
|
|
|
|
- default PageResult<T> selectPage(SortablePageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
|
|
|
- return selectPage(pageParam, pageParam.getSortingFields(), queryWrapper);
|
|
|
- }
|
|
|
-
|
|
|
- default PageResult<T> selectPage(PageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
|
|
|
- return selectPage(pageParam, null, queryWrapper);
|
|
|
- }
|
|
|
-
|
|
|
- default PageResult<T> selectPage(PageParam pageParam, Collection<SortingField> sortingFields, @Param("ew") Wrapper<T> queryWrapper) {
|
|
|
- // 特殊:不分页,直接查询全部
|
|
|
- if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageSize())) {
|
|
|
- List<T> list = selectList(queryWrapper);
|
|
|
- return new PageResult<>(list, (long) list.size());
|
|
|
- }
|
|
|
-
|
|
|
- // MyBatis Plus 查询
|
|
|
- IPage<T> mpPage = MyBatisUtils.buildPage(pageParam, sortingFields);
|
|
|
- selectPage(mpPage, queryWrapper);
|
|
|
- // 转换返回
|
|
|
- return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
|
|
- }
|
|
|
-
|
|
|
- default <D> PageResult<D> selectJoinPage(PageParam pageParam, Class<D> clazz, MPJLambdaWrapper<T> lambdaWrapper) {
|
|
|
- // 特殊:不分页,直接查询全部
|
|
|
- if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageNo())) {
|
|
|
- List<D> list = selectJoinList(clazz, lambdaWrapper);
|
|
|
- return new PageResult<>(list, (long) list.size());
|
|
|
- }
|
|
|
-
|
|
|
- // MyBatis Plus Join 查询
|
|
|
- IPage<D> mpPage = MyBatisUtils.buildPage(pageParam);
|
|
|
- mpPage = selectJoinPage(mpPage, clazz, lambdaWrapper);
|
|
|
- // 转换返回
|
|
|
- return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
|
|
- }
|
|
|
-
|
|
|
- default <DTO> PageResult<DTO> selectJoinPage(PageParam pageParam, Class<DTO> resultTypeClass, MPJBaseJoin<T> joinQueryWrapper) {
|
|
|
- IPage<DTO> mpPage = MyBatisUtils.buildPage(pageParam);
|
|
|
- selectJoinPage(mpPage, resultTypeClass, joinQueryWrapper);
|
|
|
- // 转换返回
|
|
|
- return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
|
|
- }
|
|
|
-
|
|
|
- default T selectOne(String field, Object value) {
|
|
|
- return selectOne(new QueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default T selectOne(SFunction<T, ?> field, Object value) {
|
|
|
- return selectOne(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default T selectOne(String field1, Object value1, String field2, Object value2) {
|
|
|
- return selectOne(new QueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
|
|
- }
|
|
|
-
|
|
|
- default T selectOne(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2) {
|
|
|
- return selectOne(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
|
|
- }
|
|
|
-
|
|
|
- default T selectOne(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2,
|
|
|
- SFunction<T, ?> field3, Object value3) {
|
|
|
- return selectOne(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2)
|
|
|
- .eq(field3, value3));
|
|
|
- }
|
|
|
-
|
|
|
- default Long selectCount() {
|
|
|
- return selectCount(new QueryWrapper<>());
|
|
|
- }
|
|
|
-
|
|
|
- default Long selectCount(String field, Object value) {
|
|
|
- return selectCount(new QueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default Long selectCount(SFunction<T, ?> field, Object value) {
|
|
|
- return selectCount(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default List<T> selectList() {
|
|
|
- return selectList(new QueryWrapper<>());
|
|
|
- }
|
|
|
-
|
|
|
- default List<T> selectList(String field, Object value) {
|
|
|
- return selectList(new QueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default List<T> selectList(SFunction<T, ?> field, Object value) {
|
|
|
- return selectList(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default List<T> selectList(String field, Collection<?> values) {
|
|
|
- if (CollUtil.isEmpty(values)) {
|
|
|
- return CollUtil.newArrayList();
|
|
|
- }
|
|
|
- return selectList(new QueryWrapper<T>().in(field, values));
|
|
|
- }
|
|
|
-
|
|
|
- default List<T> selectList(SFunction<T, ?> field, Collection<?> values) {
|
|
|
- if (CollUtil.isEmpty(values)) {
|
|
|
- return CollUtil.newArrayList();
|
|
|
- }
|
|
|
- return selectList(new LambdaQueryWrapper<T>().in(field, values));
|
|
|
- }
|
|
|
-
|
|
|
- @Deprecated
|
|
|
- default List<T> selectList(SFunction<T, ?> leField, SFunction<T, ?> geField, Object value) {
|
|
|
- return selectList(new LambdaQueryWrapper<T>().le(leField, value).ge(geField, value));
|
|
|
- }
|
|
|
-
|
|
|
- default List<T> selectList(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2) {
|
|
|
- return selectList(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 批量插入,适合大量数据插入
|
|
|
- *
|
|
|
- * @param entities 实体们
|
|
|
- */
|
|
|
- default Boolean insertBatch(Collection<T> entities) {
|
|
|
- return Db.saveBatch(entities);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 批量插入,适合大量数据插入
|
|
|
- *
|
|
|
- * @param entities 实体们
|
|
|
- * @param size 插入数量 Db.saveBatch 默认为 1000
|
|
|
- */
|
|
|
- default Boolean insertBatch(Collection<T> entities, int size) {
|
|
|
- return Db.saveBatch(entities, size);
|
|
|
- }
|
|
|
-
|
|
|
- default int updateBatch(T update) {
|
|
|
- return update(update, new QueryWrapper<>());
|
|
|
- }
|
|
|
-
|
|
|
- default Boolean updateBatch(Collection<T> entities) {
|
|
|
- return Db.updateBatchById(entities);
|
|
|
- }
|
|
|
-
|
|
|
- default Boolean updateBatch(Collection<T> entities, int size) {
|
|
|
- return Db.updateBatchById(entities, size);
|
|
|
- }
|
|
|
-
|
|
|
- default Boolean insertOrUpdate(T entity) {
|
|
|
- return Db.saveOrUpdate(entity);
|
|
|
- }
|
|
|
-
|
|
|
- default Boolean insertOrUpdateBatch(Collection<T> collection) {
|
|
|
- return Db.saveOrUpdateBatch(collection);
|
|
|
- }
|
|
|
-
|
|
|
- default int delete(String field, String value) {
|
|
|
- return delete(new QueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
-
|
|
|
- default int delete(SFunction<T, ?> field, Object value) {
|
|
|
- return delete(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
- }
|
|
|
+ default PageResult<T> selectPage(SortablePageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
|
|
|
+ return selectPage(pageParam, pageParam.getSortingFields(), queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ default PageResult<T> selectPage(PageParam pageParam, @Param("ew") Wrapper<T> queryWrapper) {
|
|
|
+ return selectPage(pageParam, null, queryWrapper);
|
|
|
+ }
|
|
|
+
|
|
|
+ default PageResult<T> selectPage(PageParam pageParam, Collection<SortingField> sortingFields,
|
|
|
+ @Param("ew") Wrapper<T> queryWrapper) {
|
|
|
+ // 特殊:不分页,直接查询全部
|
|
|
+ if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageSize())) {
|
|
|
+ List<T> list = selectList(queryWrapper);
|
|
|
+ return new PageResult<>(list, (long) list.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ // MyBatis Plus 查询
|
|
|
+ IPage<T> mpPage = MyBatisUtils.buildPage(pageParam, sortingFields);
|
|
|
+ selectPage(mpPage, queryWrapper);
|
|
|
+ // 转换返回
|
|
|
+ return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
|
|
+ }
|
|
|
+
|
|
|
+ default <D> PageResult<D> selectJoinPage(PageParam pageParam, Class<D> clazz, MPJLambdaWrapper<T> lambdaWrapper) {
|
|
|
+ // 特殊:不分页,直接查询全部
|
|
|
+ if (PageParam.PAGE_SIZE_NONE.equals(pageParam.getPageNo())) {
|
|
|
+ List<D> list = selectJoinList(clazz, lambdaWrapper);
|
|
|
+ return new PageResult<>(list, (long) list.size());
|
|
|
+ }
|
|
|
+
|
|
|
+ // MyBatis Plus Join 查询
|
|
|
+ IPage<D> mpPage = MyBatisUtils.buildPage(pageParam);
|
|
|
+ mpPage = selectJoinPage(mpPage, clazz, lambdaWrapper);
|
|
|
+ // 转换返回
|
|
|
+ return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
|
|
+ }
|
|
|
+
|
|
|
+ default <DTO> PageResult<DTO> selectJoinPage(PageParam pageParam, Class<DTO> resultTypeClass,
|
|
|
+ MPJBaseJoin<T> joinQueryWrapper) {
|
|
|
+ IPage<DTO> mpPage = MyBatisUtils.buildPage(pageParam);
|
|
|
+ selectJoinPage(mpPage, resultTypeClass, joinQueryWrapper);
|
|
|
+ // 转换返回
|
|
|
+ return new PageResult<>(mpPage.getRecords(), mpPage.getTotal());
|
|
|
+ }
|
|
|
+
|
|
|
+ default T selectOne(String field, Object value) {
|
|
|
+ return selectOne(new QueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default T selectOne(SFunction<T, ?> field, Object value) {
|
|
|
+ return selectOne(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default T selectOne(String field1, Object value1, String field2, Object value2) {
|
|
|
+ return selectOne(new QueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
|
|
+ }
|
|
|
+
|
|
|
+ default T selectOne(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2) {
|
|
|
+ return selectOne(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
|
|
+ }
|
|
|
+
|
|
|
+ default T selectOne(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2,
|
|
|
+ SFunction<T, ?> field3, Object value3) {
|
|
|
+ return selectOne(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2).eq(field3, value3));
|
|
|
+ }
|
|
|
+
|
|
|
+ // 查询in得集合
|
|
|
+ default List<T> selectIn(String field, Object value) {
|
|
|
+ return selectList(new QueryWrapper<T>().in(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectIn(SFunction<T, ?> field, Object value) {
|
|
|
+ return selectList(new LambdaQueryWrapper<T>().in(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectIn(String field1, Object value1, String field2, Object value2) {
|
|
|
+ return selectList(new QueryWrapper<T>().in(field1, value1).in(field2, value2));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectIn(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2) {
|
|
|
+ return selectList(new LambdaQueryWrapper<T>().in(field1, value1).in(field2, value2));
|
|
|
+ }
|
|
|
+
|
|
|
+ default Long selectCount() {
|
|
|
+ return selectCount(new QueryWrapper<>());
|
|
|
+ }
|
|
|
+
|
|
|
+ default Long selectCount(String field, Object value) {
|
|
|
+ return selectCount(new QueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default Long selectCount(SFunction<T, ?> field, Object value) {
|
|
|
+ return selectCount(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectList() {
|
|
|
+ return selectList(new QueryWrapper<>());
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectList(String field, Object value) {
|
|
|
+ return selectList(new QueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectList(SFunction<T, ?> field, Object value) {
|
|
|
+ return selectList(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectList(String field, Collection<?> values) {
|
|
|
+ if (CollUtil.isEmpty(values)) {
|
|
|
+ return CollUtil.newArrayList();
|
|
|
+ }
|
|
|
+ return selectList(new QueryWrapper<T>().in(field, values));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectList(SFunction<T, ?> field, Collection<?> values) {
|
|
|
+ if (CollUtil.isEmpty(values)) {
|
|
|
+ return CollUtil.newArrayList();
|
|
|
+ }
|
|
|
+ return selectList(new LambdaQueryWrapper<T>().in(field, values));
|
|
|
+ }
|
|
|
+
|
|
|
+ @Deprecated
|
|
|
+ default List<T> selectList(SFunction<T, ?> leField, SFunction<T, ?> geField, Object value) {
|
|
|
+ return selectList(new LambdaQueryWrapper<T>().le(leField, value).ge(geField, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default List<T> selectList(SFunction<T, ?> field1, Object value1, SFunction<T, ?> field2, Object value2) {
|
|
|
+ return selectList(new LambdaQueryWrapper<T>().eq(field1, value1).eq(field2, value2));
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量插入,适合大量数据插入
|
|
|
+ *
|
|
|
+ * @param entities 实体们
|
|
|
+ */
|
|
|
+ default Boolean insertBatch(Collection<T> entities) {
|
|
|
+ return Db.saveBatch(entities);
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 批量插入,适合大量数据插入
|
|
|
+ *
|
|
|
+ * @param entities 实体们
|
|
|
+ * @param size 插入数量 Db.saveBatch 默认为 1000
|
|
|
+ */
|
|
|
+ default Boolean insertBatch(Collection<T> entities, int size) {
|
|
|
+ return Db.saveBatch(entities, size);
|
|
|
+ }
|
|
|
+
|
|
|
+ default int updateBatch(T update) {
|
|
|
+ return update(update, new QueryWrapper<>());
|
|
|
+ }
|
|
|
+
|
|
|
+ default Boolean updateBatch(Collection<T> entities) {
|
|
|
+ return Db.updateBatchById(entities);
|
|
|
+ }
|
|
|
+
|
|
|
+ default Boolean updateBatch(Collection<T> entities, int size) {
|
|
|
+ return Db.updateBatchById(entities, size);
|
|
|
+ }
|
|
|
+
|
|
|
+ default Boolean insertOrUpdate(T entity) {
|
|
|
+ return Db.saveOrUpdate(entity);
|
|
|
+ }
|
|
|
+
|
|
|
+ default Boolean insertOrUpdateBatch(Collection<T> collection) {
|
|
|
+ return Db.saveOrUpdateBatch(collection);
|
|
|
+ }
|
|
|
+
|
|
|
+ default int delete(String field, String value) {
|
|
|
+ return delete(new QueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
+
|
|
|
+ default int delete(SFunction<T, ?> field, Object value) {
|
|
|
+ return delete(new LambdaQueryWrapper<T>().eq(field, value));
|
|
|
+ }
|
|
|
|
|
|
}
|