Skip to content

Commit

Permalink
支持mpp的多主键@MppMultiId可以和mp的单主键@TableId兼容
Browse files Browse the repository at this point in the history
  • Loading branch information
jeffreyning committed Dec 29, 2022
1 parent 4e637bd commit 0f5f366
Show file tree
Hide file tree
Showing 8 changed files with 73 additions and 3 deletions.
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ mpp的lambda方式(1.7.0中使用@com.MPP@col)<br>
<dependency>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.7.0-RELEASE</version>
<version>1.7.2-RELEASE</version>
</dependency>
````

Expand Down Expand Up @@ -377,6 +377,7 @@ mybatisplus-plus1.7.0删除了自定义ognl根路径功能,兼容jdk11。

_报 not found column for 'id'_
mybatis-plus的问题,所有叫id的属性都自动注册为主键
1.7.2版本已经解决了此问题,mpp的多主键@MppMultiId可以和mp的单主键@TableId兼容,同时修饰同一个field

_启动时日志中有mpp.entityBasePath is null skip scan result map_
只是个提示不影响,不想看到提示,mpp.entityBasePath可以配置到entity的包如entityBasePath: com.github.jeffreyning.mybatisplus.demo.entity;
Expand All @@ -402,6 +403,7 @@ mybatisplus本身有分页常见,如果一定要使用pagehelper插件的话
```

**版本说明**
mybatisplus-plus1.7.2支持mpp的多主键@MppMultiId可以和mp的单主键@TableId兼容,同时修饰同一个field
mybatisplus-plus1.7.1支持继承多主键entity

**兼容性说明**
Expand All @@ -417,6 +419,9 @@ mybatisplus-plus1.7.0兼容jdk11(删除了自定义ognl根路径功能)(与mpp
欢迎添加mpp技术交流qq群 **1028241274** 从群文件中下载各版本demo
或者从网盘中下载demo,下载密码需要搜索"爱好与编程"订阅公众号,回复"plus"获取

mybatisplus-plus 1.7.2 示例工程下载地址
https://pan.baidu.com/s/1-FXzhNWF6c35Nb6KgUXKwA

mybatisplus-plus 1.7.1 示例工程下载地址
https://pan.baidu.com/s/1wJk1xQfs5skqayaihzY_qg

Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.github.jeffreyning</groupId>
<artifactId>mybatisplus-plus</artifactId>
<version>1.7.1-RELEASE</version>
<version>1.7.2-RELEASE</version>
<dependencies>
<dependency>
<groupId>com.baomidou</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.github.jeffreyning.mybatisplus.util.CheckId;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
import org.slf4j.Logger;
Expand Down Expand Up @@ -41,6 +42,8 @@ private String createWhere(Class<?> modelClass, TableInfo tableInfo){
idMap.put(attrName, colName);
}
}
//add 1.7.2
CheckId.appendIdColum(modelClass,tableInfo,idMap);
if(idMap.isEmpty()){
logger.info("entity {} not contain MppMultiId anno", modelClass.getName());
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.github.jeffreyning.mybatisplus.conf.PlusConfig;
import com.github.jeffreyning.mybatisplus.util.CheckId;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
import org.apache.ibatis.scripting.defaults.RawSqlSource;
Expand All @@ -31,6 +33,9 @@ private String getCol(List<TableFieldInfo> fieldList, String attrName){
}
throw new RuntimeException("not found column for "+attrName);
}



private String createWhere(Class<?> modelClass, TableInfo tableInfo){
List<TableFieldInfo> fieldList=tableInfo.getFieldList();
Map<String, String> idMap=new HashMap();
Expand All @@ -43,6 +48,9 @@ private String createWhere(Class<?> modelClass, TableInfo tableInfo){
idMap.put(attrName, colName);
}
}
//add 1.7.2
CheckId.appendIdColum(modelClass,tableInfo,idMap);

if(idMap.isEmpty()){
logger.info("entity {} not contain MppMultiId anno", modelClass.getName());
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
import com.baomidou.mybatisplus.core.metadata.TableFieldInfo;
import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.github.jeffreyning.mybatisplus.util.CheckId;
import org.apache.ibatis.mapping.MappedStatement;
import org.apache.ibatis.mapping.SqlSource;
import org.slf4j.Logger;
Expand All @@ -29,6 +31,7 @@ private String getCol(List<TableFieldInfo> fieldList, String attrName){
}
throw new RuntimeException("not found column for "+attrName);
}

private String createWhere(Class<?> modelClass, TableInfo tableInfo){
List<TableFieldInfo> fieldList=tableInfo.getFieldList();
Map<String, String> idMap=new HashMap();
Expand All @@ -41,6 +44,8 @@ private String createWhere(Class<?> modelClass, TableInfo tableInfo){
idMap.put(attrName, colName);
}
}
//add 1.7.2
CheckId.appendIdColum(modelClass,tableInfo,idMap);
if(idMap.isEmpty()){
logger.info("entity {} not contain MppMultiId anno", modelClass.getName());
return null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,8 @@ public void initRM() throws Exception {
}*/
String basePaths=env.getProperty("mpp.entityBasePath");
if(basePaths==null || "".equals(basePaths) ){
logger.error("mpp.entityBasePath is null skip scan result map");
//1.7.2 error -> warn
logger.warn("mpp.entityBasePath is null skip scan result map");
return;
}
String[] paths= basePaths.split(",");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.baomidou.mybatisplus.extension.toolkit.SqlHelper;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;
import com.github.jeffreyning.mybatisplus.base.MppBaseMapper;
import com.github.jeffreyning.mybatisplus.util.CheckId;
import org.apache.ibatis.binding.MapperMethod;
import org.springframework.transaction.annotation.Transactional;
import java.lang.reflect.Field;
Expand Down Expand Up @@ -43,6 +44,8 @@ private Map checkIdCol(Class<?> modelClass, TableInfo tableInfo){
idMap.put(attrName, colName);
}
}
//add 1.7.2
CheckId.appendIdColum(modelClass,tableInfo,idMap);
return idMap;
}

Expand Down
45 changes: 45 additions & 0 deletions src/main/java/com/github/jeffreyning/mybatisplus/util/CheckId.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package com.github.jeffreyning.mybatisplus.util;

import com.baomidou.mybatisplus.core.metadata.TableInfo;
import com.baomidou.mybatisplus.core.toolkit.StringUtils;
import com.github.jeffreyning.mybatisplus.anno.MppMultiId;

import java.lang.reflect.Field;
import java.util.Map;

public class CheckId {
//add 1.7.2
public static Field getIdField(Class<?> modelClass, String fieldName){
try {
Field field=modelClass.getDeclaredField(fieldName);
return field;
} catch (NoSuchFieldException e) {
Class superclass=modelClass.getSuperclass();
if(superclass!=null) {
Field superField = getIdField(superclass, fieldName);
return superField;
}else{
return null;
}
}
}
//add 1.7.2
public static boolean appendIdColum(Class<?> modelClass, TableInfo tableInfo, Map idMap){
String keycol=tableInfo.getKeyColumn();
String keypro=tableInfo.getKeyProperty();
if(StringUtils.checkValNull(keypro)){
return false;
}
Field idField=getIdField(modelClass, keypro);
if(idField!=null){
MppMultiId mppMultiId=idField.getAnnotation(MppMultiId.class);
if(mppMultiId!=null){
String attrName=keypro;
String colName=keycol;
idMap.put(attrName, colName);
return true;
}
}
return false;
}
}

0 comments on commit 0f5f366

Please sign in to comment.