diff --git a/plugin/mybatis-plus-join-solon-plugin/README.md b/plugin/mybatis-plus-join-solon-plugin/README.md index 1014393..5e3134a 100644 --- a/plugin/mybatis-plus-join-solon-plugin/README.md +++ b/plugin/mybatis-plus-join-solon-plugin/README.md @@ -9,7 +9,7 @@ ``` #### Tips: -[solon 2.8.0 需要添加如下配置(此问题会在 MPJ 1.4.13+ 解决)](https://gitee.com/best_handsome/mybatis-plus-join/issues/I9RN5N) +如果出现 `Invalid bound statement (not found)` 添加如下配置 ```yml mybatis.db1: globalConfig: @@ -24,27 +24,5 @@ import com.github.yulichang.base.MPJBaseMapper; @Mapper public interface UserMapper extends MPJBaseMapper { -} -``` - -### (可选)service继承MPJBaseService - -```java -import com.github.yulichang.mybatisplusjoin.solon.plugin.base.MPJBaseService; - -public interface UserService extends MPJBaseService { - -} -``` - -### (可选)serviceImpl继承MPJBaseServiceImpl - -```java -import com.github.yulichang.mybatisplusjoin.solon.plugin.base.MPJBaseServiceImpl; -import org.noear.solon.annotation.Component; - -@Component -public class UserServiceImpl extends MPJBaseServiceImpl implements UserService { - } ``` \ No newline at end of file diff --git a/plugin/mybatis-plus-join-solon-plugin/pom.xml b/plugin/mybatis-plus-join-solon-plugin/pom.xml index 00343ce..3418878 100644 --- a/plugin/mybatis-plus-join-solon-plugin/pom.xml +++ b/plugin/mybatis-plus-join-solon-plugin/pom.xml @@ -42,9 +42,14 @@ provided - org.noear - mybatis-plus-extension-solon-plugin - provided + com.baomidou + mybatis-plus-solon-plugin + ${mybatis.plus.version} + + + com.baomidou + mybatis-plus-jsqlparser + ${mybatis.plus.version} diff --git a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJBaseService.java b/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJBaseService.java deleted file mode 100644 index 180563a..0000000 --- a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJBaseService.java +++ /dev/null @@ -1,14 +0,0 @@ -package com.github.yulichang.mybatisplusjoin.solon.plugin.base; - -import com.baomidou.mybatisplus.solon.service.IService; -import com.github.yulichang.base.JoinService; - -/** - * 基础service - * 目前包含两个模块 连表查询 和 关系映射 - * - * @author yulichang - */ -public interface MPJBaseService extends IService, JoinService { - -} diff --git a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJBaseServiceImpl.java b/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJBaseServiceImpl.java deleted file mode 100644 index 90201d3..0000000 --- a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJBaseServiceImpl.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.github.yulichang.mybatisplusjoin.solon.plugin.base; - -import com.baomidou.mybatisplus.solon.service.impl.ServiceImpl; -import com.github.yulichang.base.MPJBaseMapper; - -/** - * @author yulichang - * @see ServiceImpl - */ -@SuppressWarnings("unused") -public class MPJBaseServiceImpl, T> extends ServiceImpl implements MPJBaseService { - -} diff --git a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJDeepService.java b/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJDeepService.java deleted file mode 100644 index 50524ba..0000000 --- a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJDeepService.java +++ /dev/null @@ -1,244 +0,0 @@ -package com.github.yulichang.mybatisplusjoin.solon.plugin.base; - -import com.baomidou.mybatisplus.core.conditions.Wrapper; -import com.baomidou.mybatisplus.core.metadata.IPage; -import com.baomidou.mybatisplus.solon.service.IService; -import com.github.yulichang.annotation.EntityMapping; -import com.github.yulichang.annotation.FieldMapping; -import com.github.yulichang.extension.mapping.config.DeepConfig; -import com.github.yulichang.extension.mapping.relation.Relation; - -import java.io.Serializable; -import java.util.Collection; -import java.util.List; -import java.util.Map; -import java.util.function.Function; - -/** - * 深度查询 - *

- * 对配置了映射注解的字段进行查询 - * 目前查询深度只支持2级(只解析当前实体类的映射注解,不会对查询结果再次解析注解) - * 多级查询可能存在循环引用的问题,也可能会导致全量查询 - * - * @author yulichang - * @see EntityMapping - * @see FieldMapping - * @since 1.2.0 - */ -@SuppressWarnings({"unused"}) -public interface MPJDeepService extends IService { - - /** - * 根据 ID 查询 并关联全部映射 - * - * @param id 主键ID - */ - default T getByIdDeep(Serializable id) { - return Relation.mpjGetRelation(getById(id), DeepConfig.defaultConfig()); - } - - /** - * 根据 ID 查询 并关联指定映射 - *

- * JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution) - * - * @param id 主键ID - * @param config 映射配置 - */ - default T getByIdDeep(Serializable id, Function, DeepConfig.Builder> config) { - return Relation.mpjGetRelation(getById(id), config.apply(DeepConfig.builder()).build()); - } - - /** - * 针对可变参数堆污染提供的重载 - * list为null或空,会查询全部映射关系 - *

- * 例: selectByIdDeep(1, Arrays.asList(User::getId, ... )) - * - * @param id 主键ID - * @param config 映射配置 - */ - default T getByIdDeep(Serializable id, DeepConfig config) { - return Relation.mpjGetRelation(getById(id), config); - } - - /** - * 查询(根据ID 批量查询) - * - * @param idList 主键ID列表(不能为 null 以及 empty) - */ - default List listByIdsDeep(Collection idList) { - return Relation.mpjGetRelation(listByIds(idList), DeepConfig.defaultConfig()); - } - - /** - * 查询(根据ID 批量查询) - *

- * JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution) - * - * @param idList 主键ID列表(不能为 null 以及 empty) - * @param config 映射配置 - */ - default List listByIdsDeep(Collection idList, Function, DeepConfig.Builder> config) { - return Relation.mpjGetRelation(listByIds(idList), config.apply(DeepConfig.builder()).build()); - } - - /** - * 针对可变参数堆污染提供的重载 - * list为null或空,会查询全部映射关系 - *

- * 例: selectBatchIdsDeep(idList, Arrays.asList(User::getId, ... )) - * - * @param idList 主键ID列表(不能为 null 以及 empty) - * @param config 映射配置 - */ - default List listByIdsDeep(Collection idList, DeepConfig config) { - return Relation.mpjGetRelation(listByIds(idList), config); - } - - /** - * 查询(根据 columnMap 条件) - * - * @param columnMap 表字段 map 对象 - */ - default List listByMapDeep(Map columnMap) { - return Relation.mpjGetRelation(listByMap(columnMap), DeepConfig.defaultConfig()); - } - - /** - * 查询(根据 columnMap 条件) - *

- * JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution) - * - * @param columnMap 表字段 map 对象 - * @param config 映射配置 - */ - default List listByMapDeep(Map columnMap, Function, DeepConfig.Builder> config) { - return Relation.mpjGetRelation(listByMap(columnMap), config.apply(DeepConfig.builder()).build()); - } - - /** - * 针对可变参数堆污染提供的重载 - * list为null或空,会查询全部映射关系 - *

- * 例: selectByMapDeep(columnMap, Arrays.asList(User::getId, ... )) - * - * @param columnMap 表字段 map 对象 - * @param config 映射配置 - */ - default List listByMapDeep(Map columnMap, DeepConfig config) { - return Relation.mpjGetRelation(listByMap(columnMap), config); - } - - /** - * 根据 entity 条件,查询一条记录 - * - * @param queryWrapper 实体对象封装操作类(可以为 null) - */ - default T getOneDeep(Wrapper queryWrapper) { - return Relation.mpjGetRelation(getOne(queryWrapper), DeepConfig.defaultConfig()); - } - - /** - * 根据 entity 条件,查询一条记录 - *

- * JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution) - * - * @param queryWrapper 实体对象封装操作类(可以为 null) - * @param config 映射配置 - */ - default T getOneDeep(Wrapper queryWrapper, Function, DeepConfig.Builder> config) { - return Relation.mpjGetRelation(getOne(queryWrapper), config.apply(DeepConfig.builder()).build()); - } - - /** - * 针对可变参数堆污染提供的重载 - * list为null或空,会查询全部映射关系 - *

- * 例: selectOneDeep(queryWrapper, Arrays.asList(User::getId, ... )) - * - * @param queryWrapper 实体对象封装操作类(可以为 null) - * @param config 映射配置 - */ - default T getOneDeep(Wrapper queryWrapper, DeepConfig config) { - return Relation.mpjGetRelation(getOne(queryWrapper), config); - } - - /** - * 根据 entity 条件,查询全部记录 - * - * @param queryWrapper 实体对象封装操作类(可以为 null) - */ - default List listDeep(Wrapper queryWrapper) { - return Relation.mpjGetRelation(list(queryWrapper), DeepConfig.defaultConfig()); - } - - /** - * 根据 entity 条件,查询全部记录 - *

- * JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution) - * - * @param queryWrapper 实体对象封装操作类(可以为 null) - * @param config 映射配置 - */ - default List listDeep(Wrapper queryWrapper, Function, DeepConfig.Builder> config) { - return Relation.mpjGetRelation(list(queryWrapper), config.apply(DeepConfig.builder()).build()); - } - - /** - * 针对可变参数堆污染提供的重载 - * list为null或空,会查询全部映射关系 - *

- * 例: selectListDeep(queryWrapper, Arrays.asList(User::getId, ... )) - * - * @param queryWrapper 实体对象封装操作类(可以为 null) - * @param config 映射配置 - */ - default List listDeep(Wrapper queryWrapper, DeepConfig config) { - return Relation.mpjGetRelation(list(queryWrapper), config); - } - - /** - * 根据 entity 条件,查询全部记录(并翻页) - * - * @param page 分页查询条件(可以为 RowBounds.DEFAULT) - * @param queryWrapper 实体对象封装操作类(可以为 null) - */ - default > E pageDeep(E page, Wrapper queryWrapper) { - E e = page(page, queryWrapper); - Relation.mpjGetRelation(e.getRecords(), DeepConfig.defaultConfig()); - return e; - } - - /** - * 根据 entity 条件,查询全部记录(并翻页) - *

- * JDK 默认不推荐泛型数组,会引起 Java堆污染(Heap Pollution) - * - * @param page 分页查询条件(可以为 RowBounds.DEFAULT) - * @param queryWrapper 实体对象封装操作类(可以为 null) - * @param config 映射配置 - */ - default > E pageDeep(E page, Wrapper queryWrapper, Function, DeepConfig.Builder> config) { - E e = page(page, queryWrapper); - Relation.mpjGetRelation(e.getRecords(), config.apply(DeepConfig.builder()).build()); - return e; - } - - /** - * 针对可变参数堆污染提供的重载 - * list为null或空,会查询全部映射关系 - *

- * 例: selectPageDeep(page, queryWrapper, Arrays.asList(User::getId, ... )) - * - * @param page 分页查询条件(可以为 RowBounds.DEFAULT) - * @param queryWrapper 实体对象封装操作类(可以为 null) - * @param config 映射配置 - */ - default > E pageDeep(E page, Wrapper queryWrapper, DeepConfig config) { - E e = page(page, queryWrapper); - Relation.mpjGetRelation(e.getRecords(), config); - return e; - } -} diff --git a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJRelationService.java b/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJRelationService.java deleted file mode 100644 index 0af851f..0000000 --- a/plugin/mybatis-plus-join-solon-plugin/src/main/java/com/github/yulichang/mybatisplusjoin/solon/plugin/base/MPJRelationService.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.github.yulichang.mybatisplusjoin.solon.plugin.base; - -import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.baomidou.mybatisplus.solon.service.IService; -import com.github.yulichang.annotation.EntityMapping; -import com.github.yulichang.annotation.FieldMapping; -import com.github.yulichang.extension.mapping.config.DeepConfig; -import com.github.yulichang.extension.mapping.relation.Relation; - -import java.util.function.Function; - -/** - * 深度查询 - *

- * 对配置了映射注解的字段进行查询 - * 目前查询深度只支持2级(只解析当前实体类的映射注解,不会对查询结果再次解析注解) - * 多级查询可能存在循环引用的问题,也可能会导致全量查询 - * 用于替换deep - * - * @author yulichang - * @see EntityMapping - * @see FieldMapping - * @since 1.4.4 - */ -@SuppressWarnings({"unchecked", "unused"}) -public interface MPJRelationService extends IService { - - /** - * 通过注解实现单表多次查询 - * - * @param function BaseMapper调用方法 - * @see EntityMapping - * @see FieldMapping - */ - default > R getRelation(Function function) { - return Relation.mpjGetRelation(function.apply((M) getBaseMapper()), DeepConfig.defaultConfig()); - } - - /** - * 通过注解实现单表多次查询 - * - * @param function BaseMapper调用方法 - * @see EntityMapping - * @see FieldMapping - */ - default > R getRelation(Function function, DeepConfig config) { - return Relation.mpjGetRelation(function.apply((M) getBaseMapper()), config); - } - - /** - * 通过注解实现单表多次查询 - * - * @param function BaseMapper调用方法 - * @param config 映射配置 - * @see EntityMapping - * @see FieldMapping - */ - default > R getRelation(Function function, Function, DeepConfig.Builder> config) { - return Relation.mpjGetRelation(function.apply((M) getBaseMapper()), config.apply(DeepConfig.builder()).build()); - } -}