diff --git a/README.md b/README.md index dd259b3..2e22384 100644 --- a/README.md +++ b/README.md @@ -44,9 +44,9 @@ * service继承MyBaseService (可选) * serviceImpl继承MyBaseServiceImpl (可选) -## MyQueryWrapper用法 +## MyQuery用法 -简单的3表查询 +### 简单的3表查询 ```java class test { @Resource @@ -99,7 +99,7 @@ WHERE ( * lambda() string查询转lambda查询 * sql组装由mp完成,正常使用没有sql注入风险 -分页查询 +### 分页查询 ```java class test { @@ -136,7 +136,7 @@ RIGHT JOIN area a on addr.area_id = a.id LIMIT ?,? ``` -还可以怎么操作,但不建议 +### 还可以这么操作,但不建议 ```java class test { @@ -187,11 +187,11 @@ WHERE ( ORDER BY addr.id DESC ``` -# MyLambdaQueryWrapper用法 +## MyLambdaQueryWrapper用法 ### MyLambdaQueryWrapper更符合面向对象(OOP),没有难以理解的常量(魔术值),全部基于lambda,但好像不那么好理解 -简单的3表查询 +#### 简单的3表查询 ```java class test { @@ -199,13 +199,12 @@ class test { private UserMapper userMapper; void testJoin() { - List list = userMapper.selectJoinList(new MyLambdaQueryWrapper() + List list = userMapper.selectJoinList(UserDTO.class, new MyLambdaQueryWrapper() .selectAll(UserEntity.class) .leftJoin(UserEntity::getId, UserAddressEntity::getUserId, r1 -> r1.select(UserAddressEntity::getAddress) .leftJoin(UserAddressEntity::getAreaId, AreaEntity::getId, - r2 -> r2.select(AreaEntity::getProvince))) - , UserDTO.class); + r2 -> r2.select(AreaEntity::getProvince)))); } } ``` @@ -229,48 +228,18 @@ sql -> 伪代码 ```java class test { void testJoin() { - List list = userMapper.selectJoinList(new MyLambdaQueryWrapper() + List list = userMapper.selectJoinList(UserDTO.class, new MyLambdaQueryWrapper() .selectAll(user表实体类.class)//查询user表全部字段 .leftJoin(user表on字段, user_address表on字段, user_address表对象 -> user_address表对象 .select(user_address表address字段) .leftJoin(user_address表表的on字段, area表的on字段, - area表对象 -> area表对象.select(area表的province字段))) - , UserDTO.class);//返回对象class + area表对象 -> area表对象.select(area表的province字段)))); } } ``` -查询user全部字段和user_address表中的address,tel - -```java -class test { - @Resource - private UserMapper userMapper; - - void testJoin() { - List list = userMapper.selectJoinList(UserDTO.class, new MyLambdaQueryWrapper() - .selectAll(UserEntity.class) - .leftJoin(UserEntity::getId, UserAddressEntity::getUserId, - right -> right.select(UserAddressEntity::getAddress, UserAddressEntity::getTel))); - } -} -``` - -对应sql - -```sql -SELECT t0.name, - t0.sex, - t0.head_img, - t0.id, - t1.address, - t1.tel -FROM user t0 - LEFT JOIN user_address t1 ON t0.id = t1.user_id -``` - -查询字段别名 head_img as userHeadImg +#### 字段别名,查询字段别名 head_img as userHeadImg ```java class test { @@ -302,7 +271,7 @@ FROM user t0 user left join user_address on user.id = User_address.user_id 第三个参数是右表wrapper对象,可以继续使用,以上方法. -连表条件查询 +#### 条件查询 ```java class test { diff --git a/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java b/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java index 7b12356..b910368 100644 --- a/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java +++ b/src/main/java/com/github/mybatisplus/interceptor/MyResultInterceptor.java @@ -3,6 +3,7 @@ package com.github.mybatisplus.interceptor; import com.baomidou.mybatisplus.core.MybatisParameterHandler; import com.baomidou.mybatisplus.core.toolkit.ClassUtils; import com.baomidou.mybatisplus.core.toolkit.StringUtils; +import com.github.mybatisplus.toolkit.Constant; import org.apache.ibatis.executor.resultset.DefaultResultSetHandler; import org.apache.ibatis.executor.resultset.ResultSetHandler; import org.apache.ibatis.plugin.*; @@ -74,7 +75,7 @@ public class MyResultInterceptor implements Interceptor { Object object = mybatisParameterHandler.getParameterObject(); if (object instanceof Map) { Map args = (Map) object; - return (Class) args.get("clazz"); + return (Class) args.get(Constant.CLAZZ); } } catch (Exception e) { return null; diff --git a/src/main/java/com/github/mybatisplus/method/SqlMethod.java b/src/main/java/com/github/mybatisplus/method/SqlMethod.java index 53d183d..6230af7 100644 --- a/src/main/java/com/github/mybatisplus/method/SqlMethod.java +++ b/src/main/java/com/github/mybatisplus/method/SqlMethod.java @@ -1,5 +1,9 @@ package com.github.mybatisplus.method; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + /** * @author yulichang * @see com.baomidou.mybatisplus.core.enums.SqlMethod @@ -50,4 +54,6 @@ public enum SqlMethod { return sql; } + + public static final List collect = Arrays.stream(SqlMethod.values()).map(SqlMethod::getMethod).collect(Collectors.toList()); } diff --git a/src/main/java/com/github/mybatisplus/query/MyLambdaQuery.java b/src/main/java/com/github/mybatisplus/query/MyLambdaQuery.java index 5efb207..5df0872 100644 --- a/src/main/java/com/github/mybatisplus/query/MyLambdaQuery.java +++ b/src/main/java/com/github/mybatisplus/query/MyLambdaQuery.java @@ -156,8 +156,8 @@ public class MyLambdaQuery extends MyAbstractLambda> /** * 返回一个支持 lambda 函数写法的 wrapper */ - public MyQueryWrapper stringQuery() { - return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, + public MyQuery stringQuery() { + return new MyQuery<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, expression, sqlSelect, from, lastSql, sqlComment, sqlFirst); } diff --git a/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java b/src/main/java/com/github/mybatisplus/query/MyQuery.java similarity index 74% rename from src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java rename to src/main/java/com/github/mybatisplus/query/MyQuery.java index 17147e6..971cf6f 100644 --- a/src/main/java/com/github/mybatisplus/query/MyQueryWrapper.java +++ b/src/main/java/com/github/mybatisplus/query/MyQuery.java @@ -16,24 +16,24 @@ import java.util.function.Predicate; * copy {@link com.baomidou.mybatisplus.core.conditions.query.QueryWrapper} */ @SuppressWarnings("serial") -public class MyQueryWrapper extends MyAbstractWrapper> - implements Query, T, String> { +public class MyQuery extends MyAbstractWrapper> + implements Query, T, String> { /** * 查询字段 */ private SharedString sqlSelect = new SharedString(); - public MyQueryWrapper() { + public MyQuery() { this(null); } - public MyQueryWrapper(T entity) { + public MyQuery(T entity) { super.setEntity(entity); super.initNeed(); } - public MyQueryWrapper(T entity, String... columns) { + public MyQuery(T entity, String... columns) { super.setEntity(entity); super.initNeed(); this.select(columns); @@ -44,9 +44,9 @@ public class MyQueryWrapper extends MyAbstractWrapper entityClass, AtomicInteger paramNameSeq, - Map paramNameValuePairs, MergeSegments mergeSegments, - SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { + public MyQuery(T entity, Class entityClass, AtomicInteger paramNameSeq, + Map paramNameValuePairs, MergeSegments mergeSegments, + SharedString sqlSelect, SharedString from, SharedString lastSql, SharedString sqlComment, SharedString sqlFirst) { super.setEntity(entity); super.setEntityClass(entityClass); this.paramNameSeq = paramNameSeq; @@ -60,7 +60,7 @@ public class MyQueryWrapper extends MyAbstractWrapper select(String... columns) { + public MyQuery select(String... columns) { if (ArrayUtils.isNotEmpty(columns)) { this.sqlSelect.setStringValue(String.join(StringPool.COMMA, columns)); } @@ -68,7 +68,7 @@ public class MyQueryWrapper extends MyAbstractWrapper select(Class entityClass, Predicate predicate) { + public MyQuery select(Class entityClass, Predicate predicate) { super.setEntityClass(entityClass); this.sqlSelect.setStringValue(TableInfoHelper.getTableInfo(getEntityClass()).chooseSelect(predicate)); return typedThis; @@ -99,8 +99,8 @@ public class MyQueryWrapper extends MyAbstractWrapper */ @Override - protected MyQueryWrapper instance() { - return new MyQueryWrapper<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(), + protected MyQuery instance() { + return new MyQuery<>(getEntity(), getEntityClass(), paramNameSeq, paramNameValuePairs, new MergeSegments(), null, null, SharedString.emptyString(), SharedString.emptyString(), SharedString.emptyString()); }