Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
Mybatis Jpa Extra
提交
5d222bdd
M
Mybatis Jpa Extra
项目概览
MaxKey单点登录官方(MaxKeyTop)
/
Mybatis Jpa Extra
9 个月 前同步成功
通知
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 搜索 >>
提交
5d222bdd
编写于
7月 24, 2023
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
ColumnLogic
上级
67c11e97
变更
11
隐藏空白更改
内联
并排
Showing
11 changed file
with
142 addition
and
26 deletion
+142
-26
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/annotations/ColumnLogic.java
...java/org/dromara/mybatis/jpa/annotations/ColumnLogic.java
+20
-0
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/interceptor/StatementHandlerInterceptor.java
.../mybatis/jpa/interceptor/StatementHandlerInterceptor.java
+7
-5
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/FieldColumnMapper.java
...a/org/dromara/mybatis/jpa/metadata/FieldColumnMapper.java
+21
-0
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/MapperMetadata.java
...java/org/dromara/mybatis/jpa/metadata/MapperMetadata.java
+18
-0
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/DeleteProvider.java
...java/org/dromara/mybatis/jpa/provider/DeleteProvider.java
+9
-2
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/FindProvider.java
...n/java/org/dromara/mybatis/jpa/provider/FindProvider.java
+9
-1
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/GetProvider.java
...in/java/org/dromara/mybatis/jpa/provider/GetProvider.java
+18
-12
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/InsertProvider.java
...java/org/dromara/mybatis/jpa/provider/InsertProvider.java
+2
-0
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/QueryPageProvider.java
...a/org/dromara/mybatis/jpa/provider/QueryPageProvider.java
+21
-6
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/UpdateProvider.java
...java/org/dromara/mybatis/jpa/provider/UpdateProvider.java
+3
-0
mybatis-jpa-extra-test/src/main/java/org/dromara/mybatis/jpa/test/entity/Students.java
...in/java/org/dromara/mybatis/jpa/test/entity/Students.java
+14
-0
未找到文件。
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/annotations/ColumnLogic.java
0 → 100644
浏览文件 @
5d222bdd
package
org.dromara.mybatis.jpa.annotations
;
import
java.lang.annotation.Retention
;
import
java.lang.annotation.Target
;
import
static
java
.
lang
.
annotation
.
ElementType
.
FIELD
;
import
static
java
.
lang
.
annotation
.
ElementType
.
METHOD
;
import
static
java
.
lang
.
annotation
.
RetentionPolicy
.
RUNTIME
;
@Target
(
{
FIELD
,
METHOD
}
)
@Retention
(
RUNTIME
)
public
@interface
ColumnLogic
{
/**
* @return a SQL expression that evaluates to the default column value
*/
String
value
()
default
"1"
;
String
delete
()
default
"9"
;
}
\ No newline at end of file
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/interceptor/StatementHandlerInterceptor.java
浏览文件 @
5d222bdd
...
...
@@ -79,12 +79,14 @@ public class StatementHandlerInterceptor extends AbstractStatementHandlerInterce
&&
((
ParamMap
<?>)
parameterObject
).
containsKey
(
MapperMetadata
.
PAGE
))
{
page
=
(
JpaPage
)((
ParamMap
<?>)
parameterObject
).
get
(
MapperMetadata
.
PAGE
);
}
else
{
for
(
Object
key
:
((
ParamMap
<?>)
parameterObject
).
entrySet
()){
if
(((
ParamMap
<?>)
parameterObject
).
get
(
key
)
instanceof
JpaPage
)
{
page
=
(
JpaPage
)
((
ParamMap
<?>)
parameterObject
).
get
(
key
);
break
;
try
{
for
(
Object
key
:
((
ParamMap
<?>)
parameterObject
).
entrySet
()){
if
(((
ParamMap
<?>)
parameterObject
).
get
(
key
)
instanceof
JpaPage
)
{
page
=
(
JpaPage
)
((
ParamMap
<?>)
parameterObject
).
get
(
key
);
break
;
}
}
}
}
catch
(
Exception
e
)
{}
}
//分页标识
if
(
page
!=
null
&&
page
.
isPageable
()){
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/FieldColumnMapper.java
浏览文件 @
5d222bdd
...
...
@@ -18,6 +18,7 @@
package
org.dromara.mybatis.jpa.metadata
;
import
org.dromara.mybatis.jpa.annotations.ColumnDefault
;
import
org.dromara.mybatis.jpa.annotations.ColumnLogic
;
import
org.dromara.mybatis.jpa.annotations.PartitionKey
;
import
jakarta.persistence.Column
;
...
...
@@ -38,6 +39,8 @@ public class FieldColumnMapper {
private
boolean
generated
=
false
;
private
boolean
logicDelete
=
false
;
private
GeneratedValue
generatedValue
;
private
Column
columnAnnotation
;
...
...
@@ -48,6 +51,8 @@ public class FieldColumnMapper {
private
PartitionKey
partitionKey
;
private
ColumnLogic
columnLogic
;
public
FieldColumnMapper
()
{
}
...
...
@@ -139,6 +144,22 @@ public class FieldColumnMapper {
this
.
partitionKey
=
partitionKey
;
}
public
boolean
isLogicDelete
()
{
return
logicDelete
;
}
public
void
setLogicDelete
(
boolean
logicDelete
)
{
this
.
logicDelete
=
logicDelete
;
}
public
ColumnLogic
getColumnLogic
()
{
return
columnLogic
;
}
public
void
setColumnLogic
(
ColumnLogic
columnLogic
)
{
this
.
columnLogic
=
columnLogic
;
}
@Override
public
String
toString
()
{
StringBuilder
builder
=
new
StringBuilder
();
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/metadata/MapperMetadata.java
浏览文件 @
5d222bdd
...
...
@@ -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.ColumnLogic
;
import
org.dromara.mybatis.jpa.annotations.PartitionKey
;
import
org.dromara.mybatis.jpa.entity.JpaEntity
;
import
org.dromara.mybatis.jpa.id.IdentifierGeneratorFactory
;
...
...
@@ -170,6 +171,18 @@ public class MapperMetadata <T extends JpaEntity>{
return
idFieldColumnMapper
;
}
public
static
FieldColumnMapper
getLogicColumn
(
String
classSimpleName
)
{
List
<
FieldColumnMapper
>
listFields
=
fieldsMap
.
get
(
classSimpleName
);
FieldColumnMapper
logicColumnMapper
=
null
;
for
(
int
i
=
0
;
i
<
listFields
.
size
();
i
++)
{
if
(
listFields
.
get
(
i
).
isLogicDelete
())
{
logicColumnMapper
=
listFields
.
get
(
i
);
break
;
}
}
return
logicColumnMapper
;
}
public
static
FieldColumnMapper
getPartitionKey
(
String
classSimpleName
)
{
List
<
FieldColumnMapper
>
listFields
=
fieldsMap
.
get
(
classSimpleName
);
FieldColumnMapper
partitionKeyColumnMapper
=
null
;
...
...
@@ -279,6 +292,11 @@ public class MapperMetadata <T extends JpaEntity>{
PartitionKey
partitionKey
=
field
.
getAnnotation
(
PartitionKey
.
class
);
fieldColumnMapper
.
setPartitionKey
(
partitionKey
);
}
if
(
field
.
isAnnotationPresent
(
ColumnLogic
.
class
))
{
ColumnLogic
columnLogic
=
field
.
getAnnotation
(
ColumnLogic
.
class
);
fieldColumnMapper
.
setColumnLogic
(
columnLogic
);
fieldColumnMapper
.
setLogicDelete
(
true
);
}
logger
.
trace
(
"FieldColumnMapper : {}"
,
fieldColumnMapper
);
fieldColumnMapperList
.
add
(
fieldColumnMapper
);
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/DeleteProvider.java
浏览文件 @
5d222bdd
...
...
@@ -131,12 +131,19 @@ public class DeleteProvider <T extends JpaEntity>{
}
String
keyValues
=
keyValue
.
substring
(
1
).
replaceAll
(
";"
,
""
);
//remove ;
FieldColumnMapper
logicColumnMapper
=
MapperMetadata
.
getLogicColumn
((
entityClass
).
getSimpleName
());
String
partitionKeyValue
=
(
String
)
parametersMap
.
get
(
MapperMetadata
.
PARAMETER_PARTITION_KEY
);
FieldColumnMapper
partitionKeyColumnMapper
=
MapperMetadata
.
getPartitionKey
((
entityClass
).
getSimpleName
());
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entityClass
.
getSimpleName
());
SQL
sql
=
new
SQL
().
UPDATE
(
tableName
).
SET
(
" status = 9 "
);
SQL
sql
=
new
SQL
()
.
UPDATE
(
tableName
)
.
SET
(
" %s = %s "
.
formatted
(
logicColumnMapper
.
getColumnName
(),
logicColumnMapper
.
getColumnLogic
().
delete
()
)
);
if
(
partitionKeyColumnMapper
!=
null
&&
partitionKeyValue
!=
null
)
{
sql
.
WHERE
(
"%s = #{%s} and %s in ( %s )"
.
formatted
(
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/FindProvider.java
浏览文件 @
5d222bdd
...
...
@@ -25,6 +25,7 @@ import java.util.Map;
import
org.apache.ibatis.jdbc.SQL
;
import
org.dromara.mybatis.jpa.entity.JpaEntity
;
import
org.dromara.mybatis.jpa.metadata.FieldColumnMapper
;
import
org.dromara.mybatis.jpa.metadata.MapperMetadata
;
import
org.dromara.mybatis.jpa.metadata.MapperMetadata.SQL_TYPE
;
import
org.dromara.mybatis.jpa.util.StringUtils
;
...
...
@@ -48,7 +49,14 @@ public class FindProvider <T extends JpaEntity>{
}
SQL
sql
=
MapperMetadata
.
buildSelect
(
entityClass
);
FieldColumnMapper
logicColumnMapper
=
MapperMetadata
.
getLogicColumn
((
entityClass
).
getSimpleName
());
if
(
logicColumnMapper
!=
null
&&
logicColumnMapper
.
isLogicDelete
())
{
sql
.
WHERE
(
" %s = %s"
.
formatted
(
logicColumnMapper
.
getColumnName
(),
logicColumnMapper
.
getColumnLogic
().
value
())
);
}
String
findAllSql
=
sql
.
toString
();
logger
.
trace
(
"Find All SQL \n{}"
,
findAllSql
);
MapperMetadata
.
sqlsMap
.
put
(
tableName
+
SQL_TYPE
.
FINDALL_SQL
,
findAllSql
);
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/GetProvider.java
浏览文件 @
5d222bdd
...
...
@@ -50,20 +50,26 @@ public class GetProvider <T extends JpaEntity>{
FieldColumnMapper
idFieldColumnMapper
=
MapperMetadata
.
getIdColumn
(
entityClass
.
getSimpleName
());
SQL
sql
=
MapperMetadata
.
buildSelect
(
entityClass
);
sql
.
WHERE
(
" %s = #{%s}"
.
formatted
(
idFieldColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldName
())
);
if
(
partitionKeyColumnMapper
!=
null
&&
partitionKeyValue
!=
null
)
{
sql
.
WHERE
(
" %s = #{%s} and %s = #{%s} "
.
formatted
(
partitionKeyColumnMapper
.
getColumnName
()
,
partitionKeyValue
,
idFieldColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldName
())
);
}
else
{
sql
.
WHERE
(
"%s = #{%s}"
sql
.
WHERE
(
" %s = #{%s} "
.
formatted
(
partitionKeyColumnMapper
.
getColumnName
()
,
partitionKeyValue
));
}
FieldColumnMapper
logicColumnMapper
=
MapperMetadata
.
getLogicColumn
((
entityClass
).
getSimpleName
());
if
(
logicColumnMapper
!=
null
&&
logicColumnMapper
.
isLogicDelete
())
{
sql
.
WHERE
(
" %s = %s"
.
formatted
(
idField
ColumnMapper
.
getColumnName
(),
idFieldColumnMapper
.
getFieldNam
e
())
);
logic
ColumnMapper
.
getColumnName
(),
logicColumnMapper
.
getColumnLogic
().
valu
e
())
);
}
String
getSql
=
sql
.
toString
();
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/InsertProvider.java
浏览文件 @
5d222bdd
...
...
@@ -60,6 +60,8 @@ public class InsertProvider <T extends JpaEntity>{
if
(
fieldColumnMapper
.
getColumnAnnotation
().
insertable
())
{
if
(
fieldColumnMapper
.
getColumnDefault
()
!=
null
)
{
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
""
+
fieldColumnMapper
.
getColumnDefault
().
value
()
+
""
);
}
else
if
(
fieldColumnMapper
.
isLogicDelete
())
{
sql
.
VALUES
(
fieldColumnMapper
.
getColumnName
(),
""
+
fieldColumnMapper
.
getColumnLogic
().
value
()
+
""
);
}
else
if
(
(
fieldColumnMapper
.
getFieldType
().
equalsIgnoreCase
(
"String"
)
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/QueryPageProvider.java
浏览文件 @
5d222bdd
...
...
@@ -75,11 +75,18 @@ public class QueryPageProvider <T extends JpaEntity>{
if
(!
conditions
.
isEmpty
())
{
conditions
.
append
(
" and "
);
}
conditions
.
append
(
" %s = #{%s.%s} "
.
formatted
(
fieldColumnMapper
.
getColumnName
(),
MapperMetadata
.
ENTITY
,
fieldColumnMapper
.
getFieldName
()));
if
(
fieldColumnMapper
.
isLogicDelete
())
{
conditions
.
append
(
" %s = %s "
.
formatted
(
fieldColumnMapper
.
getColumnName
(),
fieldColumnMapper
.
getColumnLogic
().
value
()));
}
else
{
conditions
.
append
(
" %s = #{%s.%s} "
.
formatted
(
fieldColumnMapper
.
getColumnName
(),
MapperMetadata
.
ENTITY
,
fieldColumnMapper
.
getFieldName
()));
}
}
}
...
...
@@ -105,8 +112,16 @@ public class QueryPageProvider <T extends JpaEntity>{
}
SQL
sql
=
new
SQL
()
.
SELECT
(
column
).
FROM
(
MapperMetadata
.
getTableName
(
entityClass
))
.
WHERE
(
QueryBuilder
.
build
(
condition
)
);
.
WHERE
(
"( "
+
QueryBuilder
.
build
(
condition
)
+
" ) "
);
FieldColumnMapper
logicColumnMapper
=
MapperMetadata
.
getLogicColumn
((
entityClass
).
getSimpleName
());
if
(
logicColumnMapper
!=
null
&&
logicColumnMapper
.
isLogicDelete
())
{
sql
.
WHERE
(
" ( %s = %s )"
.
formatted
(
logicColumnMapper
.
getColumnName
(),
logicColumnMapper
.
getColumnLogic
().
value
())
);
}
logger
.
trace
(
"query Page By Condition SQL : \n{}"
,
sql
);
return
sql
.
toString
();
}
...
...
mybatis-jpa-extra-core/src/main/java/org/dromara/mybatis/jpa/provider/UpdateProvider.java
浏览文件 @
5d222bdd
...
...
@@ -61,6 +61,9 @@ public class UpdateProvider <T extends JpaEntity>{
partitionKey
=
fieldColumnMapper
;
continue
;
}
if
(
fieldColumnMapper
.
isLogicDelete
())
{
continue
;
}
if
(
(
fieldColumnMapper
.
getFieldType
().
equalsIgnoreCase
(
"String"
)
||
fieldColumnMapper
.
getFieldType
().
startsWith
(
"byte"
)
...
...
mybatis-jpa-extra-test/src/main/java/org/dromara/mybatis/jpa/test/entity/Students.java
浏览文件 @
5d222bdd
...
...
@@ -20,6 +20,7 @@ import java.io.Serializable;
import
java.time.LocalDateTime
;
import
org.dromara.mybatis.jpa.annotations.ColumnDefault
;
import
org.dromara.mybatis.jpa.annotations.ColumnLogic
;
import
org.dromara.mybatis.jpa.entity.JpaEntity
;
import
jakarta.persistence.Column
;
...
...
@@ -78,6 +79,11 @@ public class Students extends JpaEntity implements Serializable {
@Temporal
(
TemporalType
.
TIMESTAMP
)
private
LocalDateTime
modifyDate
;
@ColumnLogic
@Column
(
name
=
"is_deleted"
)
private
int
isDeleted
;
public
Students
()
{
super
();
}
...
...
@@ -158,6 +164,14 @@ public class Students extends JpaEntity implements Serializable {
this
.
modifyDate
=
modifyDate
;
}
public
int
getIsDeleted
()
{
return
isDeleted
;
}
public
void
setIsDeleted
(
int
isDeleted
)
{
this
.
isDeleted
=
isDeleted
;
}
@Override
public
String
toString
()
{
return
"Students [id="
+
id
+
", stdNo="
+
stdNo
+
", stdName="
+
stdName
+
", stdGender="
+
stdGender
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录