Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
Mybatis Jpa Extra
提交
af09e29a
M
Mybatis Jpa Extra
项目概览
MaxKey单点登录官方(MaxKeyTop)
/
Mybatis Jpa Extra
大约 1 年 前同步成功
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
Mybatis Jpa Extra
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
af09e29a
编写于
12月 25, 2021
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
mybatis-jpa-extra-2.7
上级
df32b400
变更
14
隐藏空白更改
内联
并排
Showing
14 changed file
with
217 addition
and
143 deletion
+217
-143
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java
...va/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java
+6
-2
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java
...va/org/apache/mybatis/jpa/persistence/JpaBaseService.java
+112
-94
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaPageResults.java
...va/org/apache/mybatis/jpa/persistence/JpaPageResults.java
+1
-1
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java
...va/org/apache/mybatis/jpa/persistence/MapperMetadata.java
+4
-0
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java
...org/apache/mybatis/jpa/persistence/MapperSqlProvider.java
+5
-1
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java
...e/mybatis/jpa/persistence/provider/SqlProviderDelete.java
+32
-5
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java
...e/mybatis/jpa/persistence/provider/SqlProviderInsert.java
+5
-2
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java
...he/mybatis/jpa/persistence/provider/SqlProviderQuery.java
+21
-14
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java
...e/mybatis/jpa/persistence/provider/SqlProviderUpdate.java
+2
-2
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/util/StringUtils.java
...rc/main/java/org/apache/mybatis/jpa/util/StringUtils.java
+1
-9
mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
...t/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
+14
-3
mybatis-jpa-extra-spring-boot-starter/src/test/java/org/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java
...rg/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java
+1
-1
mybatis-jpa-extra-test/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
...t/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
+1
-1
pom.xml
pom.xml
+12
-8
未找到文件。
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java
浏览文件 @
af09e29a
...
...
@@ -73,7 +73,11 @@ public interface IJpaBaseMapper<T> {
@DeleteProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"remove"
)
public
Integer
remove
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"id"
)
String
id
);
@DeleteProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"batchDelete"
)
public
Integer
batchDelete
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"idList"
)
List
<
String
>
idList
);
@DeleteProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"deleteBatch"
)
public
Integer
deleteBatch
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"idList"
)
List
<
String
>
idList
);
@DeleteProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"logicDelete"
)
public
Integer
logicDelete
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"idList"
)
List
<
String
>
idList
);
}
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java
浏览文件 @
af09e29a
...
...
@@ -22,7 +22,8 @@ import java.lang.reflect.Type;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
import
org.apache.log4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.apache.mybatis.jpa.PageResultsSqlCache
;
import
org.apache.mybatis.jpa.util.BeanUtil
;
import
org.apache.mybatis.jpa.util.InstanceUtil
;
...
...
@@ -41,7 +42,7 @@ import com.github.benmanes.caffeine.cache.Caffeine;
*/
public
class
JpaBaseService
<
T
extends
JpaBaseEntity
>
{
final
static
Logger
_logger
=
Logger
.
getLogger
(
JpaBaseService
.
class
);
final
static
Logger
_logger
=
Logger
Factory
.
getLogger
(
JpaBaseService
.
class
);
@JsonIgnore
//定义全局缓存
...
...
@@ -76,7 +77,7 @@ public class JpaBaseService <T extends JpaBaseEntity> {
*/
@SuppressWarnings
(
"unchecked"
)
public
JpaBaseService
(
@SuppressWarnings
(
"rawtypes"
)
Class
cls
)
{
_logger
.
trace
(
"class :
"
+
cls
.
getSimpleName
());
_logger
.
trace
(
"class :
{}"
,
cls
.
getSimpleName
());
mapperClass
=
cls
.
getSimpleName
();
Type
[]
pType
=
((
ParameterizedType
)
this
.
getClass
().
getGenericSuperclass
()).
getActualTypeArguments
();
if
(
pType
!=
null
&&
pType
.
length
>=
1
)
{
...
...
@@ -85,7 +86,7 @@ public class JpaBaseService <T extends JpaBaseEntity> {
_logger
.
error
(
"invalide initail, need generic type parameter! "
);
throw
new
RuntimeException
(
"invalide initail, need generic type parameter!"
);
}
_logger
.
trace
(
"class :
"
+
entityClass
.
getSimpleName
());
_logger
.
trace
(
"class :
{}"
,
entityClass
.
getSimpleName
());
}
/**
...
...
@@ -93,10 +94,14 @@ public class JpaBaseService <T extends JpaBaseEntity> {
* @param mapperClass
*/
public
JpaBaseService
(
String
mapperClass
)
{
_logger
.
trace
(
"class :
"
+
mapperClass
);
_logger
.
trace
(
"class :
{}"
,
mapperClass
);
this
.
mapperClass
=
mapperClass
;
}
public
void
setMapper
(
IJpaBaseMapper
<
T
>
mapper
)
{
this
.
mapper
=
mapper
;
}
//get or set mapper
/**
* Load Mapper from spring container by mapperClass as bean id
...
...
@@ -106,22 +111,18 @@ public class JpaBaseService <T extends JpaBaseEntity> {
public
IJpaBaseMapper
<
T
>
getMapper
()
{
try
{
if
(
mapper
==
null
)
{
String
mapperClassBean
=
mapperClass
.
toLowerCase
().
charAt
(
0
)+
mapperClass
.
substring
(
1
);
_logger
.
info
(
"mapperClass Bean is
"
+
mapperClassBean
);
String
mapperClassBean
=
mapperClass
.
toLowerCase
().
charAt
(
0
)
+
mapperClass
.
substring
(
1
);
_logger
.
info
(
"mapperClass Bean is
{}"
,
mapperClassBean
);
mapper
=
(
IJpaBaseMapper
<
T
>)
WebContext
.
getBean
(
mapperClassBean
);
}
}
catch
(
Exception
e
)
{
_logger
.
error
(
"getMapper Exception "
,
e
);
_logger
.
error
(
"getMapper Exception "
,
e
);
}
finally
{
}
return
mapper
;
}
public
void
setMapper
(
IJpaBaseMapper
<
T
>
mapper
)
{
this
.
mapper
=
mapper
;
}
//follow function for Query
/**
...
...
@@ -134,15 +135,15 @@ public class JpaBaseService <T extends JpaBaseEntity> {
entity
.
setStartRow
(
calculateStartRow
(
entity
.
getPageNumber
()
,
entity
.
getPageSize
()));
entity
.
setPageable
(
true
);
List
<
T
>
resultslist
=
getMapper
().
queryPageResults
(
entity
);
List
<
T
>
resultslist
=
getMapper
().
queryPageResults
(
entity
);
entity
.
setPageable
(
false
);
Integer
totalPage
=
resultslist
.
size
();
Integer
totalPage
=
resultslist
.
size
();
Integer
totalCount
=
0
;
if
(
entity
.
getPageNumber
()
==
1
&&
totalPage
<
entity
.
getPageSize
())
{
if
(
entity
.
getPageNumber
()
==
1
&&
totalPage
<
entity
.
getPageSize
())
{
totalCount
=
totalPage
;
}
else
{
totalCount
=
parseCount
(
getMapper
().
queryPageResultsCount
(
entity
));
totalCount
=
parseCount
(
getMapper
().
queryPageResultsCount
(
entity
));
}
return
new
JpaPageResults
<
T
>(
entity
.
getPageNumber
(),
entity
.
getPageSize
(),
totalPage
,
totalCount
,
resultslist
);
...
...
@@ -150,7 +151,6 @@ public class JpaBaseService <T extends JpaBaseEntity> {
//follow function for Query
/**
* query page list entity by entity
* @param entity
...
...
@@ -162,20 +162,20 @@ public class JpaBaseService <T extends JpaBaseEntity> {
entity
.
setStartRow
(
calculateStartRow
(
entity
.
getPageNumber
()
,
entity
.
getPageSize
()));
entity
.
setPageable
(
true
);
List
<
T
>
resultslist
=
null
;
List
<
T
>
resultslist
=
null
;
try
{
resultslist
=
(
List
<
T
>)
InstanceUtil
.
invokeMethod
(
getMapper
(),
mapperId
,
new
Object
[]{
entity
});
}
catch
(
Exception
e
)
{
_logger
.
error
(
"queryPageResults Exception "
,
e
);
_logger
.
error
(
"queryPageResults Exception "
,
e
);
}
entity
.
setPageable
(
false
);
Integer
totalPage
=
resultslist
.
size
();
Integer
totalPage
=
resultslist
.
size
();
Integer
totalCount
=
0
;
if
(
entity
.
getPageNumber
()
==
1
&&
totalPage
<
entity
.
getPageSize
())
{
totalCount
=
totalPage
;
if
(
entity
.
getPageNumber
()
==
1
&&
totalPage
<
entity
.
getPageSize
())
{
totalCount
=
totalPage
;
}
else
{
totalCount
=
parseCount
(
getMapper
().
queryPageResultsCount
(
entity
));
totalCount
=
parseCount
(
getMapper
().
queryPageResultsCount
(
entity
));
}
return
new
JpaPageResults
<
T
>(
entity
.
getPageNumber
(),
entity
.
getPageSize
(),
totalPage
,
totalCount
,
resultslist
);
...
...
@@ -188,17 +188,17 @@ public class JpaBaseService <T extends JpaBaseEntity> {
*/
@SuppressWarnings
(
"unchecked"
)
public
Integer
queryPageResultsCount
(
T
entity
)
{
Integer
count
=
0
;
try
{
if
(
entity
==
null
)
{
entity
=
(
T
)
entityClass
.
newInstance
();
}
Integer
count
=
getMapper
().
queryPageResultsCount
(
entity
);
_logger
.
debug
(
"queryCount count : "
+
count
);
return
count
;
count
=
getMapper
().
queryPageResultsCount
(
entity
);
_logger
.
debug
(
"queryCount count : {}"
,
count
);
}
catch
(
Exception
e
)
{
_logger
.
error
(
"queryPageResultsCount Exception "
,
e
);
_logger
.
error
(
"queryPageResultsCount Exception "
,
e
);
}
return
null
;
return
count
;
}
/**
...
...
@@ -211,11 +211,10 @@ public class JpaBaseService <T extends JpaBaseEntity> {
try
{
if
(
entity
==
null
)
{
entity
=
(
T
)
entityClass
.
newInstance
();
return
getMapper
().
query
(
entity
);
}
return
getMapper
().
query
(
entity
);
}
catch
(
Exception
e
)
{
_logger
.
error
(
"query Exception "
,
e
);
_logger
.
error
(
"query Exception "
,
e
);
}
return
null
;
}
...
...
@@ -223,10 +222,9 @@ public class JpaBaseService <T extends JpaBaseEntity> {
public
List
<
T
>
findAll
()
{
try
{
return
getMapper
().
findAll
(
this
.
entityClass
);
}
catch
(
Exception
e
)
{
_logger
.
error
(
"findAll Exception "
,
e
);
_logger
.
error
(
"findAll Exception "
,
e
);
}
return
null
;
}
...
...
@@ -238,10 +236,10 @@ public class JpaBaseService <T extends JpaBaseEntity> {
*/
public
T
load
(
T
entity
)
{
try
{
List
<
T
>
entityList
=
getMapper
().
query
(
entity
);
return
entityList
!=
null
&&
entityList
.
size
()>
0
?
entityList
.
get
(
0
):
null
;
List
<
T
>
entityList
=
getMapper
().
query
(
entity
);
return
((
entityList
!=
null
)
&&
(
entityList
.
size
()
>
0
))?
entityList
.
get
(
0
)
:
null
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"load Exception "
,
e
);
_logger
.
error
(
"load Exception "
,
e
);
}
return
null
;
}
...
...
@@ -253,20 +251,20 @@ public class JpaBaseService <T extends JpaBaseEntity> {
*/
public
T
get
(
String
id
)
{
try
{
_logger
.
debug
(
"entityClass
"
+
entityClass
.
toGenericString
()+
" , primaryKey "
+
id
);
_logger
.
debug
(
"entityClass
{} , primaryKey {}"
,
entityClass
.
toGenericString
()
,
id
);
return
getMapper
().
get
(
this
.
entityClass
,
id
);
}
catch
(
Exception
e
)
{
_logger
.
error
(
"get Exception "
,
e
);
_logger
.
error
(
"get Exception "
,
e
);
}
return
null
;
}
public
T
find
(
Class
<
T
>
entityClass
,
Object
primaryKey
)
{
try
{
_logger
.
debug
(
"entityClass
"
+
entityClass
.
toGenericString
()+
" , primaryKey "
+
primaryKey
);
_logger
.
debug
(
"entityClass
{} , primaryKey {}"
,
entityClass
.
toGenericString
()
,
primaryKey
);
return
getMapper
().
get
(
entityClass
,
primaryKey
.
toString
());
}
catch
(
Exception
e
)
{
_logger
.
error
(
"find Exception "
,
e
);
_logger
.
error
(
"find Exception "
,
e
);
}
return
null
;
}
...
...
@@ -279,18 +277,40 @@ public class JpaBaseService <T extends JpaBaseEntity> {
*/
public
boolean
insert
(
T
entity
)
{
try
{
Integer
count
=
getMapper
().
insert
(
entity
);
_logger
.
debug
(
"insert count : "
+
count
);
Integer
count
=
getMapper
().
insert
(
entity
);
_logger
.
debug
(
"insert count : {}"
,
count
);
return
count
>
0
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"insert Exception "
,
e
);
_logger
.
error
(
"insert Exception "
,
e
);
}
return
false
;
}
/**
* insert entity with batch
* @param listEntity
* @return
*/
public
boolean
insertBatch
(
List
<
T
>
listEntity
){
try
{
if
(
BeanUtil
.
isNotNull
(
listEntity
))
{
Integer
count
=
0
;
for
(
T
entity
:
listEntity
)
{
if
(
getMapper
().
insert
(
entity
)>
0
)
{
count
++;
}
}
_logger
.
debug
(
"Insert Batch count : {}"
,
count
);
return
count
>
0
;
}
}
catch
(
Exception
e
)
{
_logger
.
error
(
"Insert Batch Exception "
,
e
);
}
return
false
;
}
/**
* JPA persist
* JPA persist
, save
* @param entity
* @return boolean
*/
...
...
@@ -299,13 +319,12 @@ public class JpaBaseService <T extends JpaBaseEntity> {
}
/**
* JPA merge
* JPA merge
, save or update
* @param entity
* @return boolean
*/
public
boolean
merge
(
T
entity
)
{
T
loadedEntity
=
load
(
entity
);
if
(
loadedEntity
==
null
)
{
return
insert
(
entity
);
}
else
{
...
...
@@ -320,13 +339,11 @@ public class JpaBaseService <T extends JpaBaseEntity> {
*/
public
boolean
update
(
T
entity
)
{
try
{
Integer
count
=
getMapper
().
update
(
entity
);
_logger
.
debug
(
"update count : "
+
count
);
_logger
.
debug
(
"update count : {}"
,
count
);
return
count
>
0
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"update Exception "
,
e
);
_logger
.
error
(
"update Exception "
,
e
);
}
return
false
;
}
...
...
@@ -339,79 +356,80 @@ public class JpaBaseService <T extends JpaBaseEntity> {
public
boolean
delete
(
T
entity
)
{
try
{
Integer
count
=
getMapper
().
delete
(
entity
);
_logger
.
debug
(
"delete count : "
+
count
);
_logger
.
debug
(
"delete count : {}"
,
count
);
return
count
>
0
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"delete Exception "
,
e
);
_logger
.
error
(
"delete Exception "
,
e
);
}
return
false
;
}
public
boolean
remove
(
String
id
){
/**
* batch delete entity by id List
* @param ids
* @return
*/
public
boolean
deleteBatch
(
List
<
String
>
idList
)
{
try
{
Integer
count
=
getMapper
().
remove
(
this
.
entityClass
,
id
);
_logger
.
debug
(
"remove count : "
+
count
);
_logger
.
trace
(
"deleteBatch {}"
,
idList
);
Integer
count
=
getMapper
().
deleteBatch
(
this
.
entityClass
,
idList
);
_logger
.
debug
(
"deleteBatch count : {}"
,
count
);
return
count
>
0
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"
remove Exception "
,
e
);
_logger
.
error
(
"
deleteBatch Exception "
,
e
);
}
return
false
;
}
/**
* batch
insert entity
* @param
listEntity
* batch
delete entity by ids,split with ,
* @param
ids
* @return
*/
public
boolean
batchInsert
(
List
<
T
>
listEntity
){
public
boolean
deleteBatch
(
String
ids
)
{
List
<
String
>
idList
=
StringUtils
.
string2List
(
ids
,
","
);
return
deleteBatch
(
idList
);
}
public
boolean
deleteBatch
(
String
ids
,
String
split
)
{
List
<
String
>
idList
=
StringUtils
.
string2List
(
ids
,
split
);
return
deleteBatch
(
idList
);
}
public
boolean
remove
(
String
id
){
try
{
if
(
BeanUtil
.
isNotNull
(
listEntity
))
{
Integer
count
=
0
;
for
(
T
entity
:
listEntity
)
{
if
(
getMapper
().
insert
(
entity
)>
0
)
{
count
++;
}
}
_logger
.
debug
(
"batchInsert count : "
+
count
);
return
count
>
0
;
}
Integer
count
=
getMapper
().
remove
(
this
.
entityClass
,
id
);
_logger
.
debug
(
"remove count : {}"
,
count
);
return
count
>
0
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"
batchInsert Exception "
,
e
);
_logger
.
error
(
"
remove Exception "
,
e
);
}
return
false
;
}
/**
* batch delete entity by id List
* @param ids
* @return
*/
public
boolean
batchDelete
(
List
<
String
>
idList
)
{
public
boolean
logicDelete
(
List
<
String
>
idList
)
{
try
{
Integer
count
=
getMapper
().
batchDelete
(
this
.
entityClass
,
idList
);
_logger
.
debug
(
"batchDelete count : "
+
coun
t
);
_logger
.
trace
(
"logicDelete {}"
,
idList
);
Integer
count
=
getMapper
().
logicDelete
(
this
.
entityClass
,
idLis
t
);
_logger
.
debug
(
"logicDelete count : {}"
,
count
);
return
count
>
0
;
}
catch
(
Exception
e
)
{
_logger
.
error
(
"
batchDelete Exception "
,
e
);
_logger
.
error
(
"
logicDelete Exception "
,
e
);
}
return
fals
e
;
return
tru
e
;
}
/**
* batch delete entity by ids,split with ,
* @param ids
* @return
*/
public
boolean
batchDelete
(
String
ids
)
{
public
boolean
logicDelete
(
String
ids
)
{
List
<
String
>
idList
=
StringUtils
.
string2List
(
ids
,
","
);
return
batch
Delete
(
idList
);
return
logic
Delete
(
idList
);
}
public
boolean
logicDelete
(
String
ids
,
String
split
)
{
List
<
String
>
idList
=
StringUtils
.
string2List
(
ids
,
split
);
return
logicDelete
(
idList
);
}
//follow is for query grid paging
/**
...
...
@@ -424,7 +442,7 @@ public class JpaBaseService <T extends JpaBaseEntity> {
if
(
totalCount
==
null
)
{
return
retTotalCount
;
}
else
{
retTotalCount
=
Integer
.
parseInt
(
totalCount
.
toString
());
retTotalCount
=
Integer
.
parseInt
(
totalCount
.
toString
());
}
return
retTotalCount
;
}
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaPageResults.java
浏览文件 @
af09e29a
...
...
@@ -60,7 +60,7 @@ public class JpaPageResults <T>{
*/
public
JpaPageResults
(
int
currentPage
,
int
pageResults
,
Long
recordsCount
)
{
pageCount
(
currentPage
,
pageResults
,
recordsCount
);
_logger
.
debug
(
"
Grid page : "
+
page
+
" , records : "
+
records
+
" , total : "
+
total
);
_logger
.
debug
(
"
JpaPageResults : {} , records : {} , total : {}"
,
page
,
records
,
total
);
}
/**
* 构造函数
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java
浏览文件 @
af09e29a
...
...
@@ -48,6 +48,10 @@ public class MapperMetadata <T extends JpaBaseEntity>{
public
static
String
GET_SQL
=
"_GET_SQL"
;
public
static
String
FINDALL_SQL
=
"_FINDALL_SQL"
;
public
static
String
REMOVE_SQL
=
"_REMOVE_SQL"
;
public
static
String
BATCHDELETE_SQL
=
"_BATCHDELETE_SQL"
;
public
static
String
LOGICDELETE_SQL
=
"_LOGICDELETE_SQL"
;
}
public
static
String
ENTITY_CLASS
=
"entityClass"
;
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java
浏览文件 @
af09e29a
...
...
@@ -53,10 +53,14 @@ public class MapperSqlProvider <T extends JpaBaseEntity>{
return
new
SqlProviderDelete
().
execute
(
parametersMap
);
}
public
String
batchDelete
(
Map
<
String
,
Object
>
parametersMap
)
{
public
String
deleteBatch
(
Map
<
String
,
Object
>
parametersMap
)
{
return
new
SqlProviderDelete
().
batchDelete
(
parametersMap
);
}
public
String
logicDelete
(
Map
<
String
,
Object
>
parametersMap
)
{
return
new
SqlProviderDelete
().
logicDelete
(
parametersMap
);
}
/**
* @param entity
* @return insert sql String
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java
浏览文件 @
af09e29a
...
...
@@ -45,13 +45,15 @@ public class SqlProviderDelete <T extends JpaBaseEntity>{
}
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
((
entityClass
).
getSimpleName
());
SQL
sql
=
new
SQL
();
sql
.
DELETE_FROM
(
MapperMetadata
.
getTableName
(
entityClass
));
sql
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()+
" = #{"
+
idFieldColumnMapper
.
getFieldName
()+
",javaType=string,jdbcType=VARCHAR}"
);
sql
.
DELETE_FROM
(
MapperMetadata
.
getTableName
(
entityClass
))
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()
+
" = #{"
+
idFieldColumnMapper
.
getFieldName
()
+
",javaType=string,jdbcType=VARCHAR}"
);
String
deleteSql
=
sql
.
toString
();
_logger
.
trace
(
"Delete SQL \n"
+
deleteSql
);
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
MapperMetadata
.
SQL_TYPE
.
REMOVE_SQL
,
deleteSql
);
return
deleteSql
;
}
@SuppressWarnings
(
"unchecked"
)
public
String
batchDelete
(
Map
<
String
,
Object
>
parametersMap
)
{
Class
<?>
entityClass
=(
Class
<?>)
parametersMap
.
get
(
MapperMetadata
.
ENTITY_CLASS
);
...
...
@@ -68,11 +70,36 @@ public class SqlProviderDelete <T extends JpaBaseEntity>{
keyValue
=
keyValue
.
substring
(
1
).
replaceAll
(
";"
,
""
);
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entityClass
.
getSimpleName
());
SQL
sql
=
new
SQL
();
sql
.
DELETE_FROM
(
MapperMetadata
.
getTableName
(
entityClass
))
;
sql
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()+
" in ( "
+
keyValue
+
" )"
);
sql
.
DELETE_FROM
(
MapperMetadata
.
getTableName
(
entityClass
))
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()+
" in ( "
+
keyValue
+
" )"
);
String
deleteSql
=
sql
.
toString
();
_logger
.
trace
(
"Delete SQL \n"
+
deleteSql
);
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
MapperMetadata
.
SQL_TYPE
.
REMOVE_SQL
,
deleteSql
);
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
MapperMetadata
.
SQL_TYPE
.
BATCHDELETE_SQL
,
deleteSql
);
return
deleteSql
;
}
@SuppressWarnings
(
"unchecked"
)
public
String
logicDelete
(
Map
<
String
,
Object
>
parametersMap
)
{
Class
<?>
entityClass
=(
Class
<?>)
parametersMap
.
get
(
MapperMetadata
.
ENTITY_CLASS
);
MapperMetadata
.
buildColumnList
(
entityClass
);
ArrayList
<
String
>
idValues
=(
ArrayList
<
String
>)
parametersMap
.
get
(
"idList"
);
String
keyValue
=
""
;
for
(
String
value
:
idValues
)
{
if
(
value
.
trim
().
length
()
>
0
)
{
keyValue
+=
",'"
+
value
+
"'"
;
_logger
.
trace
(
"logic delete by id "
+
value
);
}
}
//remove ;
keyValue
=
keyValue
.
substring
(
1
).
replaceAll
(
";"
,
""
);
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entityClass
.
getSimpleName
());
SQL
sql
=
new
SQL
();
sql
.
UPDATE
(
MapperMetadata
.
getTableName
(
entityClass
))
.
SET
(
"status = 9"
)
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()+
" in ( "
+
keyValue
+
" )"
);
String
deleteSql
=
sql
.
toString
();
_logger
.
trace
(
"logic Delete SQL \n"
+
deleteSql
);
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
MapperMetadata
.
SQL_TYPE
.
LOGICDELETE_SQL
,
deleteSql
);
return
deleteSql
;
}
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java
浏览文件 @
af09e29a
...
...
@@ -68,8 +68,11 @@ public class SqlProviderInsert <T extends JpaBaseEntity>{
))
{
GeneratedValue
generatedValue
=
listFields
.
get
(
i
).
getGeneratedValue
();
if
(
generatedValue
.
strategy
()==
GenerationType
.
AUTO
)
{
if
(
MapperMetadata
.
identifierGeneratorFactory
.
getGeneratorStrategyMap
().
containsKey
(
generatedValue
.
generator
().
toLowerCase
()))
{
BeanUtil
.
set
(
entity
,
fieldColumnMapper
.
getFieldName
(),
MapperMetadata
.
identifierGeneratorFactory
.
generate
(
generatedValue
.
generator
().
toLowerCase
()));
if
(
MapperMetadata
.
identifierGeneratorFactory
.
getGeneratorStrategyMap
()
.
containsKey
(
generatedValue
.
generator
().
toLowerCase
()))
{
BeanUtil
.
set
(
entity
,
fieldColumnMapper
.
getFieldName
(),
MapperMetadata
.
identifierGeneratorFactory
.
generate
(
generatedValue
.
generator
().
toLowerCase
()));
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
"#{"
+
fieldColumnMapper
.
getFieldName
()
+
"}"
);
}
}
else
if
(
generatedValue
.
strategy
()==
GenerationType
.
SEQUENCE
){
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java
浏览文件 @
af09e29a
...
...
@@ -53,9 +53,10 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entityClass
.
getSimpleName
());
SQL
sql
=
new
SQL
();
sql
.
SELECT
(
selectColumnMapper
(
entityClass
));
sql
.
FROM
(
MapperMetadata
.
getTableName
(
entityClass
)+
" sel_tmp_table "
);
sql
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()+
" = #{"
+
idFieldColumnMapper
.
getFieldName
()+
"}"
);
sql
.
SELECT
(
selectColumnMapper
(
entityClass
))
.
FROM
(
MapperMetadata
.
getTableName
(
entityClass
)+
" sel_tmp_table "
)
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()
+
" = #{"
+
idFieldColumnMapper
.
getFieldName
()
+
"}"
);
String
getSql
=
sql
.
toString
();
_logger
.
trace
(
"Get SQL \n"
+
getSql
);
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
SQL_TYPE
.
GET_SQL
,
getSql
);
...
...
@@ -69,8 +70,8 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
return
MapperMetadata
.
sqlsMap
.
get
(
MapperMetadata
.
getTableName
(
entityClass
)
+
SQL_TYPE
.
FINDALL_SQL
);
}
SQL
sql
=
new
SQL
();
sql
.
SELECT
(
selectColumnMapper
(
entityClass
))
;
sql
.
FROM
(
MapperMetadata
.
getTableName
(
entityClass
)+
" sel_tmp_table "
);
sql
.
SELECT
(
selectColumnMapper
(
entityClass
))
.
FROM
(
MapperMetadata
.
getTableName
(
entityClass
)+
" sel_tmp_table "
);
String
findAllSql
=
sql
.
toString
();
_logger
.
trace
(
"Find All SQL \n"
+
findAllSql
);
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
SQL_TYPE
.
FINDALL_SQL
,
findAllSql
);
...
...
@@ -80,8 +81,8 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
public
String
execute
(
T
entity
)
{
MapperMetadata
.
buildColumnList
(
entity
.
getClass
());
SQL
sql
=
new
SQL
();
sql
.
SELECT
(
selectColumnMapper
(
entity
.
getClass
()))
;
sql
.
FROM
(
MapperMetadata
.
getTableName
(
entity
.
getClass
())+
" sel_tmp_table "
);
sql
.
SELECT
(
selectColumnMapper
(
entity
.
getClass
()))
.
FROM
(
MapperMetadata
.
getTableName
(
entity
.
getClass
())+
" sel_tmp_table "
);
for
(
FieldColumnMapper
fieldColumnMapper
:
MapperMetadata
.
fieldsMap
.
get
(
entity
.
getClass
().
getSimpleName
()))
{
String
fieldValue
=
BeanUtil
.
getValue
(
entity
,
fieldColumnMapper
.
getFieldName
());
...
...
@@ -121,7 +122,8 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
.
append
(
" "
)
.
append
(
fieldColumnMapper
.
getFieldName
());
}
_logger
.
trace
(
"Column "
+
columnCount
+
" , ColumnName : "
+
fieldColumnMapper
.
getColumnName
()+
" , FieldName : "
+
fieldColumnMapper
.
getFieldName
());
_logger
.
trace
(
"Column {} , ColumnName : {} , FieldName : {}"
,
columnCount
,
fieldColumnMapper
.
getColumnName
(),
fieldColumnMapper
.
getFieldName
());
}
return
selectColumn
.
toString
();
}
...
...
@@ -133,11 +135,16 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
public
String
executePageResultsCount
(
T
entity
)
{
JpaPagination
pagination
=(
JpaPagination
)
entity
;
//获取缓存数据
PageResultsSqlCache
pageResultsSqlCache
=
JpaBaseService
.
pageResultsBoundSqlCache
.
getIfPresent
(
pagination
.
getPageResultSelectUUID
());
PageResultsSqlCache
pageResultsSqlCache
=
JpaBaseService
.
pageResultsBoundSqlCache
.
getIfPresent
(
pagination
.
getPageResultSelectUUID
());
//多个空格 tab 替换成1个空格
String
selectSql
=
pageResultsSqlCache
.
getSql
().
replaceAll
(
"\r\n+"
,
" \n"
).
replaceAll
(
"\n+"
,
" \n"
).
replaceAll
(
"\t"
,
" "
).
replaceAll
(
" +"
,
" "
);
String
selectSql
=
pageResultsSqlCache
.
getSql
()
.
replaceAll
(
"\r\n+"
,
" \n"
)
.
replaceAll
(
"\n+"
,
" \n"
)
.
replaceAll
(
"\t"
,
" "
)
.
replaceAll
(
" +"
,
" "
);
BoundSql
boundSql
=(
BoundSql
)
pageResultsSqlCache
.
getBoundSql
();
_logger
.
trace
(
"Count original SQL :\n
"
+
selectSql
);
_logger
.
trace
(
"Count original SQL :\n
{}"
,
selectSql
);
StringBuffer
sql
=
new
StringBuffer
(
SqlSyntax
.
SELECT
+
" "
+
SqlSyntax
.
Functions
.
COUNT_ONE
+
" countrows_ "
);
StringBuffer
countSql
=
new
StringBuffer
();
...
...
@@ -153,7 +160,7 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
countSql
.
append
(
selectSql
);
}
String
countSqlLowerCase
=
countSql
.
toString
().
toLowerCase
();
_logger
.
trace
(
"Count SQL LowerCase :\n
"
+
countSqlLowerCase
);
_logger
.
trace
(
"Count SQL LowerCase :\n
{}"
,
countSqlLowerCase
);
if
(
countSqlLowerCase
.
indexOf
(
SqlSyntax
.
DISTINCT
+
" "
)>
0
//去重
||
countSqlLowerCase
.
indexOf
(
" "
+
SqlSyntax
.
GROUPBY
+
" "
)>
0
//分组
...
...
@@ -167,7 +174,7 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
}
else
{
int
fromIndex
=
countSqlLowerCase
.
indexOf
(
" "
+
SqlSyntax
.
FROM
+
" "
);
int
orderByIndex
=
countSqlLowerCase
.
indexOf
(
" "
+
SqlSyntax
.
ORDERBY
+
" "
);
_logger
.
trace
(
"Count SQL from Index
"
+
fromIndex
+
" , order by "
+
orderByIndex
);
_logger
.
trace
(
"Count SQL from Index
{} , order by {}"
,
fromIndex
,
orderByIndex
);
if
(
orderByIndex
>
-
1
)
{
sql
.
append
(
countSql
.
substring
(
fromIndex
,
orderByIndex
));
}
else
{
...
...
@@ -176,7 +183,7 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
}
//删除缓存
JpaBaseService
.
pageResultsBoundSqlCache
.
invalidate
(
pagination
.
getPageResultSelectUUID
());
_logger
.
trace
(
"Count SQL : \n
"
+
sql
);
_logger
.
trace
(
"Count SQL : \n
{}"
,
sql
);
return
sql
.
toString
();
}
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java
浏览文件 @
af09e29a
...
...
@@ -51,7 +51,7 @@ public class SqlProviderUpdate <T extends JpaBaseEntity>{
for
(
int
i
=
0
;
i
<
listFields
.
size
();
i
++)
{
FieldColumnMapper
fieldColumnMapper
=
listFields
.
get
(
i
);
_logger
.
trace
(
"Field
"
+
fieldColumnMapper
.
getFieldName
()+
" , Type "
+
fieldColumnMapper
.
getFieldType
());
_logger
.
trace
(
"Field
{} , Type {}"
,
fieldColumnMapper
.
getFieldName
(),
fieldColumnMapper
.
getFieldType
());
if
(
fieldColumnMapper
.
isIdColumn
())
{
continue
;
...
...
@@ -71,7 +71,7 @@ public class SqlProviderUpdate <T extends JpaBaseEntity>{
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entity
.
getClass
().
getSimpleName
());
sql
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()
+
"=#{"
+
idFieldColumnMapper
.
getFieldName
()+
"}"
);
_logger
.
trace
(
"Update SQL : \n
"
+
sql
);
_logger
.
trace
(
"Update SQL : \n
{}"
,
sql
);
return
sql
.
toString
();
}
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/util/StringUtils.java
浏览文件 @
af09e29a
...
...
@@ -20,7 +20,7 @@ package org.apache.mybatis.jpa.util;
import
java.util.ArrayList
;
import
java.util.List
;
public
class
StringUtils
{
public
class
StringUtils
extends
org
.
apache
.
commons
.
lang3
.
StringUtils
{
public
static
boolean
isNumeric
(
String
val
)
{
char
[]
chars
=
val
.
toCharArray
();
...
...
@@ -55,14 +55,6 @@ public class StringUtils {
return
num
;
}
public
static
boolean
isBlank
(
String
str
)
{
return
str
==
null
||
str
.
matches
(
"\\s*"
);
}
public
static
boolean
isNotBlank
(
String
val
)
{
return
!
isBlank
(
val
);
}
public
static
List
<
String
>
string2List
(
String
string
,
String
split
)
{
String
[]
strs
=
{};
if
(
string
!=
null
&&
!
string
.
equals
(
""
))
{
...
...
mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
浏览文件 @
af09e29a
...
...
@@ -134,14 +134,25 @@ public class MyBatisTestRunner {
idList
.
add
(
"ab7422e9-a91a-4840-9e59-9d911257c918"
);
idList
.
add
(
"12b6ceb8-573b-4f01-ad85-cfb24cfa007c"
);
idList
.
add
(
"dafd5ba4-d2e3-4656-bd42-178841e610fe"
);
service
.
batchDelete
(
idList
);
service
.
deleteBatch
(
idList
);
}
@Test
public
void
logicDelete
()
throws
Exception
{
_logger
.
info
(
"logicDelete..."
);
List
<
String
>
idList
=
new
ArrayList
<
String
>();
idList
.
add
(
"8584804d-b5ac-45d2-9f91-4dd8e7a090a7"
);
idList
.
add
(
"ab7422e9-a91a-4840-9e59-9d911257c918"
);
idList
.
add
(
"12b6ceb8-573b-4f01-ad85-cfb24cfa007c"
);
idList
.
add
(
"dafd5ba4-d2e3-4656-bd42-178841e610fe"
);
service
.
logicDelete
(
idList
);
}
@Test
public
void
batchDeleteByIds
()
throws
Exception
{
_logger
.
info
(
"batchDeleteByIds..."
);
service
.
batchDelete
(
"2"
);
service
.
batchDelete
(
"2,639178432667713536"
);
service
.
deleteBatch
(
"2"
);
service
.
deleteBatch
(
"2,639178432667713536"
);
}
@Test
...
...
mybatis-jpa-extra-spring-boot-starter/src/test/java/org/apache/mybatis/jpa/test/MybatisJpaApplicationTest.java
浏览文件 @
af09e29a
...
...
@@ -100,7 +100,7 @@ public class MybatisJpaApplicationTest{
idList
.
add
(
"ab7422e9-a91a-4840-9e59-9d911257c918"
);
idList
.
add
(
"12b6ceb8-573b-4f01-ad85-cfb24cfa007c"
);
idList
.
add
(
"dafd5ba4-d2e3-4656-bd42-178841e610fe"
);
studentsService
.
batchDelete
(
idList
);
studentsService
.
deleteBatch
(
idList
);
}
@Test
...
...
mybatis-jpa-extra-test/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
浏览文件 @
af09e29a
...
...
@@ -88,7 +88,7 @@ public class MyBatisTestRunner {
idList
.
add
(
"ab7422e9-a91a-4840-9e59-9d911257c918"
);
idList
.
add
(
"12b6ceb8-573b-4f01-ad85-cfb24cfa007c"
);
idList
.
add
(
"dafd5ba4-d2e3-4656-bd42-178841e610fe"
);
service
.
batchDelete
(
idList
);
service
.
deleteBatch
(
idList
);
}
@Test
...
...
pom.xml
浏览文件 @
af09e29a
...
...
@@ -15,24 +15,23 @@
</modules>
<properties>
<mybatis.jpa.extra.version>
2.
6
</mybatis.jpa.extra.version>
<!--project version-->
<mybatis.jpa.extra.version>
2.
7
</mybatis.jpa.extra.version>
<!--project version-->
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<jdk.version>
1.8
</jdk.version>
<spring.version>
5.
2.0.RELEASE
</spring.version>
<springboot.version>
2.
2.6.RELEASE
</springboot.version>
<spring.version>
5.
3.14
</spring.version>
<springboot.version>
2.
6.2
</springboot.version>
<commons-dbcp2.version>
2.1.1
</commons-dbcp2.version>
<commons-pool2.version>
2.4.2
</commons-pool2.version>
<mysql-connnector.version>
8.0.2
1
</mysql-connnector.version>
<mysql-connnector.version>
8.0.2
6
</mysql-connnector.version>
<servlet-api.version>
3.1.0
</servlet-api.version>
<commons-io.version>
2.4
</commons-io.version>
<commons-codec.version>
1.9
</commons-codec.version>
<log4j.version>
2.17.0
</log4j.version>
<slf4j.version>
1.7.28
</slf4j.version>
<jackson.version1>
1.9.13
</jackson.version1>
<slf4j.version>
1.7.32
</slf4j.version>
<jackson.version2>
2.10.0
</jackson.version2>
<druid.version>
1.
1.22
</druid.version>
<druid.version>
1.
2.8
</druid.version>
<persistence.version>
2.2.1
</persistence.version>
<mybatis.version>
3.5.
7
</mybatis.version>
<mybatis.version>
3.5.
8
</mybatis.version>
<mybatis-spring.version>
2.0.6
</mybatis-spring.version>
</properties>
...
...
@@ -275,6 +274,11 @@
<version>
3.2.2
</version>
</dependency>
<dependency>
<groupId>
org.apache.commons
</groupId>
<artifactId>
commons-lang3
</artifactId>
<version>
3.12.0
</version>
</dependency>
<dependency>
<groupId>
commons-logging
</groupId>
<artifactId>
commons-logging
</artifactId>
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录