# 修改 ID生成方式,

pull/432/head
廖金龙 2020-07-06 21:44:46 +08:00
parent 55f3797cad
commit a90c851caf
6 changed files with 158 additions and 14 deletions

View File

@ -1,3 +1,18 @@
/*
* Copyright 2019-2020
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package me.zhengjie.base;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
@ -39,7 +54,13 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
this.jpaRepository = jpaRepository;
}
public T save(T t) {
/**
* JPA & MP
*
* @param t
* @return /
*/
public T onlySave(T t) {
T t1;
switch (dbType) {
case JPA:
@ -55,7 +76,35 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
return t1;
}
/**
* JPA & MP / ,ID
*
* @param t
* @return /
*/
public T save(T t) {
T t1;
switch (dbType) {
case JPA:
t1 = jpaRepository.save(t);
break;
case MYBATIS:
mpService.saveOrUpdate(t);
t1 = t;
break;
default:
throw new IllegalStateException("Unexpected value: " + dbType);
}
return t1;
}
/**
*
*
* @param entities
* @return /
*/
public List<T> saveAll(List<T> entities) {
List<T> result;
switch (dbType) {
@ -72,6 +121,11 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
return result;
}
/**
* JPA & MP
*
* @param entity
*/
public void delete(T entity) {
switch (dbType) {
case JPA:
@ -85,6 +139,11 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
}
}
/**
* JPA & MP
*
* @param id
*/
public void deleteById(ID id) {
switch (dbType) {
case JPA:
@ -98,19 +157,29 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
}
}
public void update(T columnInfo) {
/**
* ID
*
* @param t
*/
public void update(T t) {
switch (dbType) {
case JPA:
jpaRepository.saveAndFlush(columnInfo);
jpaRepository.saveAndFlush(t);
break;
case MYBATIS:
mpService.saveOrUpdate(columnInfo);
mpService.updateById(t);
break;
default:
throw new IllegalStateException("Unexpected value: " + dbType);
}
}
/**
*
*
* @param entities
*/
public void batUpdate(List<T> entities) {
switch (dbType) {
case JPA:
@ -124,6 +193,12 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
}
}
/**
* ID
*
* @param id
* @return /
*/
public T selectById(ID id) {
T t;
switch (dbType) {
@ -139,10 +214,22 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
return t;
}
/**
* JPA ID
*
* @param id
* @return /
*/
public Optional<T> findById(ID id) {
return Optional.of(selectById(id));
}
/**
* ID
*
* @param ids
* @return /
*/
public List<T> selectAllById(Iterable<ID> ids) {
List<T> t;
switch (dbType) {
@ -158,6 +245,12 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
return t;
}
/**
* JPA
*
* @param spec
* @return /
*/
public List<T> findAll(@Nullable Specification<T> spec) {
List<T> t = null;
switch (dbType) {
@ -226,6 +319,12 @@ public class BaseRepository<I extends IService<T>, J extends JpaRepository<T, ID
pageable, page.getTotal());
}
/**
* MP
*
* @param spec
* @return
*/
protected List<T> mpFindAll(Specification<T> spec) {
ElSpecification<T> specifications = (ElSpecification<T>) spec;
final QueryWrapper<T> queryWrapper = specifications.getQueryWrapper();

View File

@ -198,6 +198,14 @@ public class QueryHelp {
return cb.and(list.toArray(new Predicate[size]));
}
/**
* Mybatis Plus
*
* @param criteria
* @param clazz
* @param <K>
* @return /
*/
public static <K> QueryWrapper<K> getQueryWrapper(Object criteria, Class clazz) {
QueryWrapper<K> queryWrapper = Wrappers.query();
final List<Field> allFields = getAllFields(criteria.getClass());
@ -229,9 +237,15 @@ public class QueryHelp {
}
if (Objects.nonNull(query)) {
String propName = query.propName();
String joinName = query.joinName();
String blurry = query.blurry();
attributeName = isBlank(propName) ? attributeName : propName;
if (StringUtils.isNotBlank(blurry)) {
String[] blurrys = blurry.split(",");
for (String item : blurrys) {
queryWrapper.like(item, value);
}
}
List<Object> between = null;
switch (query.type()) {
case EQUAL:
@ -302,7 +316,14 @@ public class QueryHelp {
return true;
}
private static String getTableColumnFromField(TableInfo tableInfo, Field field) {
/**
* Mybatis Plus Database Column
*
* @param tableInfo
* @param field
* @return /
*/
public static String getTableColumnFromField(TableInfo tableInfo, Field field) {
String columnName = null;
if (FIELD_CACHE.containsKey(field)) {
final ElField elField = COLUMN_CACHE.get(field);
@ -348,6 +369,10 @@ public class QueryHelp {
}
}
/**
* @author liaojinlong
* @since 2020/7/6 21:04
*/
class ElField {
private String column;
private boolean status;

View File

@ -20,7 +20,6 @@ import me.zhengjie.base.BaseRepository;
import me.zhengjie.domain.ColumnInfo;
import me.zhengjie.repository.jpa.ColumnInfoJpaRepository;
import me.zhengjie.repository.mp.ColumnInfoMpService;
import me.zhengjie.utils.enums.DbType;
import org.springframework.stereotype.Repository;
import java.util.List;
@ -36,7 +35,7 @@ public class ColumnInfoRepository extends BaseRepository<ColumnInfoMpService, Co
public ColumnInfoRepository(ColumnInfoMpService baseService, ColumnInfoJpaRepository jpaRepository) {
super(baseService, jpaRepository);
setDbType(DbType.MYBATIS);
// setDbType(DbType.MYBATIS);
}
public List<ColumnInfo> findByTableNameOrderByIdAsc(String tableName) {

View File

@ -1,3 +1,18 @@
/*
* Copyright 2019-2020
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package me.zhengjie.repository;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;

View File

@ -52,6 +52,9 @@ import static java.util.stream.Collectors.toList;
* @since 2020/6/29 18:07
*/
public class TableInfoHelper {
static {
System.out.println("MyBatis Plus (Jpa Patch)");
}
private static final Log logger = LogFactory.getLog(TableInfoHelper.class);
@ -136,9 +139,6 @@ public class TableInfoHelper {
// 兼容测试场景
globalConfig = GlobalConfigUtils.defaults();
}
if (globalConfig.isBanner()) {
System.out.println("MyBatis Plus (Jpa Patch)");
}
/* 初始化表名相关 */
final String[] excludeProperty = initTableName(clazz, globalConfig, tableInfo);
@ -320,8 +320,8 @@ public class TableInfoHelper {
}
GeneratedValue generatedValue = field.getAnnotation(GeneratedValue.class);
if (Objects.nonNull(generatedValue)) {
tableIdImp.setType(IdType.ASSIGN_ID);
logger.warn("JPA compatible mode, []com.baomidou.mybatisplus.annotation.IdType.ASSIGN_ID] is the only way to generate primary key");
tableIdImp.setType(IdType.AUTO);
logger.warn("JPA compatible mode, []com.baomidou.mybatisplus.annotation.IdType.AUTO] is the only way to generate primary key");
}
tableId = tableIdImp;
jpaReadPK = true;

View File

@ -17,7 +17,6 @@ package me.zhengjie.modules.system.repository;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import me.zhengjie.base.BaseRepository;
import me.zhengjie.domain.ColumnInfo;
import me.zhengjie.modules.system.domain.Job;
import me.zhengjie.modules.system.repository.jpa.JobJpaRepository;
import me.zhengjie.modules.system.repository.mp.JobService;
@ -39,6 +38,9 @@ public class JobRepository extends BaseRepository<JobService, JobJpaRepository,
setDbType(DbType.MYBATIS);
}
/**
* @param ids
*/
public void deleteAllByIdIn(Set<Long> ids) {
switch (dbType) {
case JPA:
@ -52,6 +54,10 @@ public class JobRepository extends BaseRepository<JobService, JobJpaRepository,
}
}
/**
* @param name
* @return /
*/
public Job findByName(String name) {
Job result;
switch (dbType) {