Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
Mybatis Jpa Extra
提交
54cfa503
M
Mybatis Jpa Extra
项目概览
MaxKey单点登录官方(MaxKeyTop)
/
Mybatis Jpa Extra
8 个月 前同步成功
通知
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,体验更适合开发者的 AI 搜索 >>
提交
54cfa503
编写于
7月 17, 2023
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
PartitionKey
上级
f198470d
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
93 addition
and
32 deletion
+93
-32
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/FieldColumnMapper.java
...a/org/dromara/mybatis/jpa/metadata/FieldColumnMapper.java
+11
-0
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/MapperMetadata.java
...java/org/dromara/mybatis/jpa/metadata/MapperMetadata.java
+23
-6
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/DateConverter.java
.../java/org/dromara/mybatis/jpa/provider/DateConverter.java
+1
-1
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/DeleteProvider.java
...java/org/dromara/mybatis/jpa/provider/DeleteProvider.java
+23
-9
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/InsertProvider.java
...java/org/dromara/mybatis/jpa/provider/InsertProvider.java
+4
-4
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/UpdateProvider.java
...java/org/dromara/mybatis/jpa/provider/UpdateProvider.java
+31
-12
未找到文件。
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/FieldColumnMapper.java
浏览文件 @
54cfa503
...
...
@@ -18,6 +18,7 @@
package
org.dromara.mybatis.jpa.metadata
;
import
org.dromara.mybatis.jpa.annotations.ColumnDefault
;
import
org.dromara.mybatis.jpa.annotations.PartitionKey
;
import
jakarta.persistence.Column
;
import
jakarta.persistence.GeneratedValue
;
...
...
@@ -45,6 +46,8 @@ public class FieldColumnMapper {
private
ColumnDefault
columnDefault
;
private
PartitionKey
partitionKey
;
public
FieldColumnMapper
()
{
}
...
...
@@ -127,6 +130,14 @@ public class FieldColumnMapper {
public
void
setColumnDefault
(
ColumnDefault
columnDefault
)
{
this
.
columnDefault
=
columnDefault
;
}
public
PartitionKey
getPartitionKey
()
{
return
partitionKey
;
}
public
void
setPartitionKey
(
PartitionKey
partitionKey
)
{
this
.
partitionKey
=
partitionKey
;
}
@Override
public
String
toString
()
{
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/MapperMetadata.java
浏览文件 @
54cfa503
...
...
@@ -29,6 +29,7 @@ import java.util.concurrent.ConcurrentMap;
import
org.apache.ibatis.jdbc.SQL
;
import
org.dromara.mybatis.jpa.annotations.ColumnDefault
;
import
org.dromara.mybatis.jpa.annotations.PartitionKey
;
import
org.dromara.mybatis.jpa.entity.JpaEntity
;
import
org.dromara.mybatis.jpa.id.IdentifierGeneratorFactory
;
import
org.slf4j.Logger
;
...
...
@@ -158,6 +159,18 @@ public class MapperMetadata <T extends JpaEntity>{
}
return
idFieldColumnMapper
;
}
public
static
FieldColumnMapper
getPartitionKey
(
String
classSimpleName
)
{
List
<
FieldColumnMapper
>
listFields
=
fieldsMap
.
get
(
classSimpleName
);
FieldColumnMapper
partitionKeyColumnMapper
=
null
;
for
(
FieldColumnMapper
column
:
listFields
)
{
if
(
column
.
getPartitionKey
()
!=
null
)
{
partitionKeyColumnMapper
=
column
;
break
;
}
}
return
partitionKeyColumnMapper
;
}
/**
* get select table Column from entityClass, data cache in fieldsMap
...
...
@@ -203,7 +216,7 @@ public class MapperMetadata <T extends JpaEntity>{
return
;
}
_logger
.
trace
(
"entityClass
"
+
entityClass
);
_logger
.
trace
(
"entityClass
{}"
,
entityClass
);
Field
[]
fields
=
entityClass
.
getDeclaredFields
();
List
<
FieldColumnMapper
>
fieldColumnMapperList
=
new
ArrayList
<
FieldColumnMapper
>(
fields
.
length
);
...
...
@@ -240,19 +253,23 @@ public class MapperMetadata <T extends JpaEntity>{
}
if
(
field
.
isAnnotationPresent
(
GeneratedValue
.
class
))
{
GeneratedValue
generatedValue
=
(
GeneratedValue
)
field
.
getAnnotation
(
GeneratedValue
.
class
);
GeneratedValue
generatedValue
=
field
.
getAnnotation
(
GeneratedValue
.
class
);
fieldColumnMapper
.
setGeneratedValue
(
generatedValue
);
fieldColumnMapper
.
setGenerated
(
true
);
}
if
(
field
.
isAnnotationPresent
(
Temporal
.
class
))
{
Temporal
temporalAnnotation
=
(
Temporal
)
field
.
getAnnotation
(
Temporal
.
class
);
Temporal
temporalAnnotation
=
field
.
getAnnotation
(
Temporal
.
class
);
fieldColumnMapper
.
setTemporalAnnotation
(
temporalAnnotation
);
}
if
(
field
.
isAnnotationPresent
(
ColumnDefault
.
class
))
{
ColumnDefault
columnDefault
=
(
ColumnDefault
)
field
.
getAnnotation
(
ColumnDefault
.
class
);
ColumnDefault
columnDefault
=
field
.
getAnnotation
(
ColumnDefault
.
class
);
fieldColumnMapper
.
setColumnDefault
(
columnDefault
);
}
_logger
.
trace
(
"FieldColumnMapper : "
+
fieldColumnMapper
);
if
(
field
.
isAnnotationPresent
(
PartitionKey
.
class
))
{
PartitionKey
partitionKey
=
field
.
getAnnotation
(
PartitionKey
.
class
);
fieldColumnMapper
.
setPartitionKey
(
partitionKey
);
}
_logger
.
trace
(
"FieldColumnMapper : {}"
,
fieldColumnMapper
);
fieldColumnMapperList
.
add
(
fieldColumnMapper
);
}
...
...
@@ -260,7 +277,7 @@ public class MapperMetadata <T extends JpaEntity>{
}
fieldsMap
.
put
(
entityClass
.
getSimpleName
(),
fieldColumnMapperList
);
_logger
.
trace
(
"fieldsMap :
"
+
fieldsMap
);
_logger
.
trace
(
"fieldsMap :
{}"
,
fieldsMap
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/DateConverter.java
浏览文件 @
54cfa503
...
...
@@ -24,8 +24,8 @@ public class DateConverter{
public
static
String
convert
(
Object
entity
,
FieldColumnMapper
fieldColumnMapper
,
boolean
isUpdate
)
{
String
dateValue
=
""
;
Date
date
=
(
Date
)
BeanUtil
.
get
(
entity
,
fieldColumnMapper
.
getFieldName
());
if
(
fieldColumnMapper
.
getFieldType
().
equalsIgnoreCase
(
"Date"
))
{
Date
date
=
(
Date
)
BeanUtil
.
get
(
entity
,
fieldColumnMapper
.
getFieldName
());
if
(
date
==
null
)
{
dateValue
=
convertDateTime
(
LocalDateTime
.
now
(),
fieldColumnMapper
);
}
else
{
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/DeleteProvider.java
浏览文件 @
54cfa503
...
...
@@ -45,16 +45,30 @@ public class DeleteProvider <T extends JpaEntity>{
if
(
MapperMetadata
.
sqlsMap
.
containsKey
(
tableName
+
SQL_TYPE
.
REMOVE_SQL
))
{
return
MapperMetadata
.
sqlsMap
.
get
(
tableName
+
SQL_TYPE
.
REMOVE_SQL
);
}
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
((
entityClass
).
getSimpleName
());
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
((
entityClass
).
getSimpleName
());
FieldColumnMapper
partitionKey
=
MapperMetadata
.
getPartitionKey
((
entityClass
).
getSimpleName
());
SQL
sql
=
new
SQL
()
.
DELETE_FROM
(
tableName
)
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()
+
" = #{"
+
idFieldColumnMapper
.
getFieldName
()
+
",javaType=string,jdbcType=VARCHAR}"
);
.
DELETE_FROM
(
tableName
);
if
(
partitionKey
!=
null
)
{
sql
.
WHERE
(
"""
%s = #{%s,javaType=string,jdbcType=VARCHAR}
and
%s = #{%s,javaType=string,jdbcType=VARCHAR}
"""
.
formatted
(
partitionKey
.
getColumnName
()
,
partitionKey
.
getFieldName
(),
idFieldColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldName
())
);
}
else
{
sql
.
WHERE
(
"%s = #{%s,javaType=string,jdbcType=VARCHAR}"
.
formatted
(
idFieldColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldName
())
);
}
String
deleteSql
=
sql
.
toString
();
MapperMetadata
.
sqlsMap
.
put
(
tableName
+
SQL_TYPE
.
REMOVE_SQL
,
deleteSql
);
_logger
.
trace
(
"Delete SQL \n
"
+
deleteSql
);
_logger
.
trace
(
"Delete SQL \n
{}"
,
deleteSql
);
return
deleteSql
;
}
...
...
@@ -68,7 +82,7 @@ public class DeleteProvider <T extends JpaEntity>{
for
(
String
value
:
idValues
)
{
if
(
value
.
trim
().
length
()
>
0
)
{
keyValue
+=
",'"
+
value
+
"'"
;
_logger
.
trace
(
"batch delete by id
"
+
value
);
_logger
.
trace
(
"batch delete by id
{}"
,
value
);
}
}
//remove ;
...
...
@@ -81,7 +95,7 @@ public class DeleteProvider <T extends JpaEntity>{
String
deleteSql
=
sql
.
toString
();
MapperMetadata
.
sqlsMap
.
put
(
tableName
+
SQL_TYPE
.
BATCHDELETE_SQL
,
deleteSql
);
_logger
.
trace
(
"Delete SQL \n
"
+
deleteSql
);
_logger
.
trace
(
"Delete SQL \n
{}"
,
deleteSql
);
return
deleteSql
;
}
...
...
@@ -95,7 +109,7 @@ public class DeleteProvider <T extends JpaEntity>{
for
(
String
value
:
idValues
)
{
if
(
value
.
trim
().
length
()
>
0
)
{
keyValue
+=
",'"
+
value
+
"'"
;
_logger
.
trace
(
"logic delete by id
"
+
value
);
_logger
.
trace
(
"logic delete by id
{}"
,
value
);
}
}
//remove ;
...
...
@@ -109,7 +123,7 @@ public class DeleteProvider <T extends JpaEntity>{
String
deleteSql
=
sql
.
toString
();
MapperMetadata
.
sqlsMap
.
put
(
tableName
+
SQL_TYPE
.
LOGICDELETE_SQL
,
deleteSql
);
_logger
.
trace
(
"logic Delete SQL \n
"
+
deleteSql
);
_logger
.
trace
(
"logic Delete SQL \n
{}"
,
deleteSql
);
return
deleteSql
;
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/InsertProvider.java
浏览文件 @
54cfa503
...
...
@@ -69,7 +69,7 @@ public class InsertProvider <T extends JpaEntity>{
&&
StringUtils
.
isBlank
(
BeanUtil
.
getValue
(
entity
,
fieldColumnMapper
.
getFieldName
()))
&&
!
fieldColumnMapper
.
isGenerated
())
{
//skip null field value
_logger
.
trace
(
"skip field
value is null "
);
_logger
.
trace
(
"skip field
{} value is null "
,
fieldColumnMapper
.
getFieldName
()
);
}
else
{
if
(
fieldColumnMapper
.
isGenerated
()
&&
fieldColumnMapper
.
getTemporalAnnotation
()
!=
null
)
{
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
"'"
+
DateConverter
.
convert
(
entity
,
fieldColumnMapper
,
false
)
+
"'"
);
...
...
@@ -80,12 +80,12 @@ public class InsertProvider <T extends JpaEntity>{
))
{
generatedValue
(
sql
,
entity
,
fieldColumnMapper
);
}
else
{
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
"#{
"
+
fieldColumnMapper
.
getFieldName
()
+
"}"
);
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
"#{
%s}"
.
formatted
(
fieldColumnMapper
.
getFieldName
())
);
}
}
}
}
_logger
.
trace
(
"Insert SQL : \n
"
+
sql
);
_logger
.
trace
(
"Insert SQL : \n
{}"
,
sql
);
return
sql
.
toString
();
}
...
...
@@ -102,7 +102,7 @@ public class InsertProvider <T extends JpaEntity>{
genValue
=
IdentifierGeneratorFactory
.
generate
(
IdStrategy
.
DEFAULT
);
}
BeanUtil
.
set
(
entity
,
fieldColumnMapper
.
getFieldName
(),
genValue
);
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
"#{
"
+
fieldColumnMapper
.
getFieldName
()
+
"}"
);
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
"#{
%s}"
.
formatted
(
fieldColumnMapper
.
getFieldName
())
);
}
else
if
(
generatedValue
.
strategy
()==
GenerationType
.
SEQUENCE
){
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
generatedValue
.
generator
()+
".nextval"
);
}
else
if
(
generatedValue
.
strategy
()==
GenerationType
.
IDENTITY
){
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/UpdateProvider.java
浏览文件 @
54cfa503
...
...
@@ -48,14 +48,19 @@ public class UpdateProvider <T extends JpaEntity>{
SQL
sql
=
new
SQL
()
.
UPDATE
(
MapperMetadata
.
getTableName
(
entity
.
getClass
()));
for
(
int
i
=
0
;
i
<
listFields
.
size
();
i
++)
{
FieldColumnMapper
fieldColumnMapper
=
listFields
.
get
(
i
);
FieldColumnMapper
partitionKey
=
null
;
FieldColumnMapper
idFieldColumnMapper
=
null
;
for
(
FieldColumnMapper
fieldColumnMapper
:
listFields
)
{
_logger
.
trace
(
"Field {} , Type {}"
,
fieldColumnMapper
.
getFieldName
(),
fieldColumnMapper
.
getFieldType
());
if
(
fieldColumnMapper
.
isIdColumn
())
{
if
(
fieldColumnMapper
.
isIdColumn
()
)
{
idFieldColumnMapper
=
fieldColumnMapper
;
continue
;
}
if
(
fieldColumnMapper
.
getPartitionKey
()
!=
null
)
{
partitionKey
=
fieldColumnMapper
;
continue
;
}
if
(
(
fieldColumnMapper
.
getFieldType
().
equalsIgnoreCase
(
"String"
)
||
fieldColumnMapper
.
getFieldType
().
startsWith
(
"byte"
)
...
...
@@ -64,22 +69,36 @@ public class UpdateProvider <T extends JpaEntity>{
&&
BeanUtil
.
getValue
(
entity
,
fieldColumnMapper
.
getFieldName
())==
null
&&
!
fieldColumnMapper
.
isGenerated
())
{
//skip null field value
_logger
.
trace
(
"skip field
value is null "
);
_logger
.
trace
(
"skip field
{} value is null "
,
fieldColumnMapper
.
getFieldName
()
);
}
else
{
if
(
fieldColumnMapper
.
getColumnAnnotation
().
updatable
())
{
if
(
fieldColumnMapper
.
isGenerated
()
&&
fieldColumnMapper
.
getTemporalAnnotation
()
!=
null
)
{
sql
.
SET
(
fieldColumnMapper
.
getColumnName
()
+
" = '"
+
DateConverter
.
convert
(
entity
,
fieldColumnMapper
,
true
)
+
"'"
);
sql
.
SET
(
" %s = '%s' "
.
formatted
(
fieldColumnMapper
.
getColumnName
(),
DateConverter
.
convert
(
entity
,
fieldColumnMapper
,
true
))
);
}
else
{
sql
.
SET
(
fieldColumnMapper
.
getColumnName
()
+
" = #{"
+
fieldColumnMapper
.
getFieldName
()
+
"}"
);
sql
.
SET
(
" %s = #{%s} "
.
formatted
(
fieldColumnMapper
.
getColumnName
(),
fieldColumnMapper
.
getFieldName
())
);
}
}
}
}
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entity
.
getClass
().
getSimpleName
());
sql
.
WHERE
(
idFieldColumnMapper
.
getColumnName
()
+
" = #{"
+
idFieldColumnMapper
.
getFieldName
()
+
"}"
);
_logger
.
trace
(
"Update SQL : \n{}"
,
sql
);
return
sql
.
toString
();
if
(
idFieldColumnMapper
!=
null
)
{
if
(
partitionKey
!=
null
)
{
sql
.
WHERE
(
"""
%s = #{%s}
and %s = #{%s}
"""
.
formatted
(
partitionKey
.
getColumnName
(),
partitionKey
.
getFieldName
(),
idFieldColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldName
())
);
}
else
{
sql
.
WHERE
(
"%s = #{%s}"
.
formatted
(
idFieldColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldName
()));
}
_logger
.
trace
(
"Update SQL : \n{}"
,
sql
);
return
sql
.
toString
();
}
else
{
return
""
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录