Skip to content

Commit eba524e

Browse files
committed
# 待 mybatis-plus 官方 merge JPA 注解适配
1、mybatis plus (本地修改JPA 注解解析)适配
1 parent 6623450 commit eba524e

File tree

13 files changed

+197
-24
lines changed

13 files changed

+197
-24
lines changed

eladmin-common/src/main/java/me/zhengjie/utils/RsaUtils.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -17,17 +17,17 @@ public class RsaUtils {
1717

1818
private static final String SRC = "123456";
1919

20-
public static void main(String[] args) throws Exception {
21-
System.out.println("\n");
22-
RsaKeyPair keyPair = generateKeyPair();
23-
System.out.println("公钥:" + keyPair.getPublicKey());
24-
System.out.println("私钥:" + keyPair.getPrivateKey());
25-
System.out.println("\n");
26-
test1(keyPair);
27-
System.out.println("\n");
28-
test2(keyPair);
29-
System.out.println("\n");
30-
}
20+
// public static void main(String[] args) throws Exception {
21+
// System.out.println("\n");
22+
// RsaKeyPair keyPair = generateKeyPair();
23+
// System.out.println("公钥:" + keyPair.getPublicKey());
24+
// System.out.println("私钥:" + keyPair.getPrivateKey());
25+
// System.out.println("\n");
26+
// test1(keyPair);
27+
// System.out.println("\n");
28+
// test2(keyPair);
29+
// System.out.println("\n");
30+
// }
3131

3232
/**
3333
* 公钥加密私钥解密
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package me.zhengjie.utils;
2+
3+
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
4+
import com.baomidou.mybatisplus.core.conditions.Wrapper;
5+
import com.baomidou.mybatisplus.extension.conditions.AbstractChainWrapper;
6+
7+
import java.lang.reflect.Field;
8+
import java.util.Objects;
9+
10+
public interface WhereFun {
11+
WhereFun DEFAULT = new DefaultWhereFun();
12+
13+
<T> void whereFunc(Wrapper<T> wrapper, Field field, Object value);
14+
}
15+
16+
class DefaultWhereFun implements WhereFun {
17+
@Override
18+
public <T> void whereFunc(Wrapper<T> wrapper, Field field, Object value) {
19+
if (wrapper instanceof AbstractWrapper) {
20+
if (Objects.nonNull(value)) {
21+
((AbstractWrapper) wrapper).eq(true, field.getName(), value);
22+
}
23+
} else if (wrapper instanceof AbstractChainWrapper) {
24+
if (Objects.nonNull(value)) {
25+
((AbstractChainWrapper) wrapper).eq(true, field.getName(), value);
26+
}
27+
}
28+
}
29+
}
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
package me.zhengjie.utils;
2+
3+
import com.baomidou.mybatisplus.core.conditions.Wrapper;
4+
import com.baomidou.mybatisplus.extension.conditions.AbstractChainWrapper;
5+
import me.zhengjie.utils.enums.WhereTypeEnum;
6+
import org.slf4j.Logger;
7+
import org.slf4j.LoggerFactory;
8+
9+
import java.lang.reflect.Field;
10+
import java.util.Map;
11+
import java.util.Objects;
12+
import java.util.concurrent.ConcurrentHashMap;
13+
14+
public class WrapperUtils {
15+
private static final Logger log = LoggerFactory.getLogger(WrapperUtils.class);
16+
17+
private static Map<WhereTypeEnum, WhereFun> typeFunc = new ConcurrentHashMap();
18+
19+
/**
20+
* 执行
21+
*
22+
* @param obj obj
23+
* @param wrapper
24+
*/
25+
public synchronized static <T> Wrapper<T> excute(Object obj, Wrapper<T> wrapper, WhereFun whereFun) {
26+
//反射获取属性
27+
Field[] fields = obj.getClass().getDeclaredFields();
28+
for (Field field : fields) {
29+
try {
30+
final Object value = field.get(obj);
31+
if (Objects.nonNull(whereFun)) {
32+
whereFun.whereFunc(wrapper, field, value);
33+
}
34+
} catch (IllegalAccessException e) {
35+
log.error(e.getMessage(), e);
36+
}
37+
}
38+
return wrapper;
39+
}
40+
41+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package me.zhengjie.utils.enums;
2+
3+
public enum WhereTypeEnum {
4+
EQ,NEQ,IN,LIKE,LT,GT,LE,GE;
5+
}
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
package me.zhengjie.repository;
2+
3+
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
4+
import me.zhengjie.domain.ColumnInfo;
5+
import me.zhengjie.repository.jpa.ColumnInfoRepository;
6+
import me.zhengjie.repository.mp.ColumnInfoService;
7+
import me.zhengjie.utils.WhereFun;
8+
import me.zhengjie.utils.WrapperUtils;
9+
import org.springframework.stereotype.Component;
10+
11+
import java.util.List;
12+
13+
/**
14+
* @author liaojinlong
15+
* @since 2020/6/28 14:59
16+
*/
17+
@Component
18+
public class ColumnInfoDao {
19+
private Boolean dbType = false;
20+
private ColumnInfoService columnInfoService;
21+
private ColumnInfoRepository columnInfoRepository;
22+
23+
public ColumnInfoDao(ColumnInfoService columnInfoService, ColumnInfoRepository columnInfoRepository) {
24+
this.columnInfoService = columnInfoService;
25+
this.columnInfoRepository = columnInfoRepository;
26+
}
27+
28+
public List<ColumnInfo> findByTableNameOrderByIdAsc(String tableName) {
29+
if (false) {
30+
return columnInfoRepository.findByTableNameOrderByIdAsc(tableName);
31+
} else {
32+
return columnInfoService
33+
.selectList(Wrappers.<ColumnInfo>query().eq(true, "TABLE_NAME", tableName));
34+
}
35+
}
36+
37+
public List<ColumnInfo> saveAll(List<ColumnInfo> columnInfos) {
38+
if (true) {
39+
return columnInfoRepository.saveAll(columnInfos);
40+
} else {
41+
columnInfos.forEach(columnInfo -> {
42+
columnInfoService.insert(columnInfo);
43+
});
44+
return columnInfos;
45+
}
46+
}
47+
48+
public void delete(ColumnInfo columnInfo) {
49+
if (dbType) {
50+
columnInfoRepository.delete(columnInfo);
51+
} else {
52+
columnInfoService.delete(WrapperUtils.excute(columnInfo, Wrappers.query(), WhereFun.DEFAULT));
53+
}
54+
}
55+
56+
public void save(ColumnInfo columnInfo) {
57+
if (dbType) {
58+
columnInfoRepository.save(columnInfo);
59+
} else {
60+
columnInfoService.insert(columnInfo);
61+
}
62+
}
63+
64+
public void update(ColumnInfo columnInfo) {
65+
if (dbType) {
66+
columnInfoRepository.saveAndFlush(columnInfo);
67+
} else {
68+
columnInfoService.updateById(columnInfo);
69+
}
70+
}
71+
}

eladmin-generator/src/main/java/me/zhengjie/repository/ColumnInfoRepository.java renamed to eladmin-generator/src/main/java/me/zhengjie/repository/jpa/ColumnInfoRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package me.zhengjie.repository;
16+
package me.zhengjie.repository.jpa;
1717

1818
import me.zhengjie.domain.ColumnInfo;
1919
import org.springframework.data.jpa.repository.JpaRepository;

eladmin-generator/src/main/java/me/zhengjie/repository/GenConfigRepository.java renamed to eladmin-generator/src/main/java/me/zhengjie/repository/jpa/GenConfigRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313
* See the License for the specific language governing permissions and
1414
* limitations under the License.
1515
*/
16-
package me.zhengjie.repository;
16+
package me.zhengjie.repository.jpa;
1717

1818
import me.zhengjie.domain.GenConfig;
1919
import org.springframework.data.jpa.repository.JpaRepository;
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package me.zhengjie.repository.mp;
2+
3+
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4+
import me.zhengjie.domain.ColumnInfo;
5+
6+
/**
7+
* @author liaojinlong
8+
* @since 2020/6/28 14:57
9+
*/
10+
public interface ColumnInfoService extends BaseMapper<ColumnInfo> {
11+
}

eladmin-generator/src/main/java/me/zhengjie/service/impl/GenConfigServiceImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717

1818
import lombok.RequiredArgsConstructor;
1919
import me.zhengjie.domain.GenConfig;
20-
import me.zhengjie.repository.GenConfigRepository;
20+
import me.zhengjie.repository.jpa.GenConfigRepository;
2121
import me.zhengjie.service.GenConfigService;
2222
import me.zhengjie.utils.StringUtils;
2323
import org.springframework.stereotype.Service;

eladmin-generator/src/main/java/me/zhengjie/service/impl/GeneratorServiceImpl.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import me.zhengjie.domain.ColumnInfo;
2424
import me.zhengjie.domain.vo.TableInfo;
2525
import me.zhengjie.exception.BadRequestException;
26-
import me.zhengjie.repository.ColumnInfoRepository;
26+
import me.zhengjie.repository.ColumnInfoDao;
2727
import me.zhengjie.service.GeneratorService;
2828
import me.zhengjie.utils.FileUtil;
2929
import me.zhengjie.utils.GenUtil;
@@ -58,7 +58,7 @@ public class GeneratorServiceImpl implements GeneratorService {
5858
@PersistenceContext
5959
private EntityManager em;
6060

61-
private final ColumnInfoRepository columnInfoRepository;
61+
private final ColumnInfoDao columnInfoDao;
6262

6363
@Override
6464
public Object getTables() {
@@ -93,12 +93,12 @@ public Object getTables(String name, int[] startEnd) {
9393

9494
@Override
9595
public List<ColumnInfo> getColumns(String tableName) {
96-
List<ColumnInfo> columnInfos = columnInfoRepository.findByTableNameOrderByIdAsc(tableName);
96+
List<ColumnInfo> columnInfos = columnInfoDao.findByTableNameOrderByIdAsc(tableName);
9797
if (CollectionUtil.isNotEmpty(columnInfos)) {
9898
return columnInfos;
9999
} else {
100100
columnInfos = query(tableName);
101-
return columnInfoRepository.saveAll(columnInfos);
101+
return columnInfoDao.saveAll(columnInfos);
102102
}
103103
}
104104

@@ -142,10 +142,10 @@ public void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList)
142142
if (StringUtils.isBlank(column.getRemark())) {
143143
column.setRemark(columnInfo.getRemark());
144144
}
145-
columnInfoRepository.save(column);
145+
columnInfoDao.update(column);
146146
} else {
147147
// 如果找不到,则保存新字段信息
148-
columnInfoRepository.save(columnInfo);
148+
columnInfoDao.save(columnInfo);
149149
}
150150
}
151151
// 第二种情况,数据库字段删除了
@@ -154,14 +154,14 @@ public void sync(List<ColumnInfo> columnInfos, List<ColumnInfo> columnInfoList)
154154
List<ColumnInfo> columns = columnInfoList.stream().filter(c -> c.getColumnName().equals(columnInfo.getColumnName())).collect(Collectors.toList());
155155
// 如果找不到,就代表字段被删除了,则需要删除该字段
156156
if (CollectionUtil.isEmpty(columns)) {
157-
columnInfoRepository.delete(columnInfo);
157+
columnInfoDao.delete(columnInfo);
158158
}
159159
}
160160
}
161161

162162
@Override
163163
public void save(List<ColumnInfo> columnInfos) {
164-
columnInfoRepository.saveAll(columnInfos);
164+
columnInfoDao.saveAll(columnInfos);
165165
}
166166

167167
@Override
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package me.zhengjie.config;
2+
3+
import org.mybatis.spring.annotation.MapperScan;
4+
import org.springframework.context.annotation.Configuration;
5+
6+
@Configuration
7+
@MapperScan("me.zhengjie.repository.mp")
8+
public class MybatisPlusConfig {
9+
10+
}

eladmin-system/src/main/resources/config/application-dev.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ spring:
66
driverClassName: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
77
url: jdbc:log4jdbc:mysql://localhost:3306/eladmin?serverTimezone=Asia/Shanghai&characterEncoding=utf8&useSSL=false
88
username: root
9-
password: 123456
9+
password: 59421
1010
# 初始连接数
1111
initial-size: 5
1212
# 最小连接数
@@ -106,4 +106,4 @@ file:
106106
avatar: C:\eladmin\avatar\
107107
# 文件大小 /M
108108
maxSize: 100
109-
avatarMaxSize: 5
109+
avatarMaxSize: 5

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,12 @@
206206
<artifactId>UserAgentUtils</artifactId>
207207
<version>1.21</version>
208208
</dependency>
209+
<!-- MyBatisPlus-->
210+
<dependency>
211+
<groupId>com.baomidou</groupId>
212+
<artifactId>mybatis-plus-boot-starter</artifactId>
213+
<version>3.3.3.3-SNAPSHOT</version>
214+
</dependency>
209215
</dependencies>
210216

211217
<build>

0 commit comments

Comments
 (0)