Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
MaxKey单点登录官方(MaxKeyTop)
Mybatis Jpa Extra
提交
5677b719
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 搜索 >>
提交
5677b719
编写于
12月 26, 2021
作者:
M
MaxKey
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
find
上级
6be4ebc4
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
187 addition
and
43 deletion
+187
-43
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java
...va/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java
+18
-4
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java
...va/org/apache/mybatis/jpa/persistence/JpaBaseService.java
+67
-11
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
+8
-4
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java
...e/mybatis/jpa/persistence/provider/SqlProviderDelete.java
+1
-1
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java
...e/mybatis/jpa/persistence/provider/SqlProviderInsert.java
+1
-1
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java
...he/mybatis/jpa/persistence/provider/SqlProviderQuery.java
+69
-10
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java
...e/mybatis/jpa/persistence/provider/SqlProviderUpdate.java
+1
-1
mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
...t/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
+18
-11
未找到文件。
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/IJpaBaseMapper.java
浏览文件 @
5677b719
...
...
@@ -48,7 +48,9 @@ public interface IJpaBaseMapper<T> {
* @return one
*/
@SelectProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"get"
)
public
T
get
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"id"
)
String
id
);
public
T
get
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"id"
)
String
id
);
//follow function for insert update and delete
...
...
@@ -71,13 +73,25 @@ public interface IJpaBaseMapper<T> {
* @return
*/
@DeleteProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"remove"
)
public
Integer
remove
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"id"
)
String
id
);
public
Integer
remove
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"id"
)
String
id
);
@DeleteProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"deleteBatch"
)
public
Integer
deleteBatch
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"idList"
)
List
<
String
>
idList
);
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
);
public
Integer
logicDelete
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"idList"
)
List
<
String
>
idList
);
@SelectProvider
(
type
=
MapperSqlProvider
.
class
,
method
=
"find"
)
public
List
<
T
>
find
(
@Param
(
"entityClass"
)
Class
<?>
entityClass
,
@Param
(
"filter"
)
String
filter
,
@Param
(
"args"
)
Object
[]
args
,
@Param
(
"argTypes"
)
int
[]
argTypes
);
}
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/JpaBaseService.java
浏览文件 @
5677b719
...
...
@@ -219,7 +219,10 @@ public class JpaBaseService <T extends JpaBaseEntity> {
return
null
;
}
/**
* findAll from table
* @return
*/
public
List
<
T
>
findAll
()
{
try
{
return
getMapper
().
findAll
(
this
.
entityClass
);
...
...
@@ -229,6 +232,69 @@ public class JpaBaseService <T extends JpaBaseEntity> {
return
null
;
}
/**
* select with filter and args
*
* <pre>
* find(" StdNo = ? or StdNo = ?",new Object[]{"10024","10004"},new int[]{Types.VARCHAR,Types.INTEGER})
* </pre>
* @param filter
* @param args
* @param argTypes
* @return List<T>
*
*/
public
List
<
T
>
find
(
String
filter
,
Object
[]
args
,
int
[]
argTypes
)
{
try
{
return
getMapper
().
find
(
this
.
entityClass
,
filter
,
args
,
argTypes
);
}
catch
(
Exception
e
)
{
_logger
.
error
(
"findAll Exception "
,
e
);
}
return
null
;
}
/**
* select with filter
* <pre>
* find(" StdNo = '10024')
* </pre>
* @param filter
* @return List<T>
*/
public
List
<
T
>
find
(
String
filter
)
{
return
find
(
filter
,
null
,
null
);
}
/**
* select with filter and args
* @param filter
* @param args
* @param argTypes
* @return T
*/
public
T
findOne
(
String
filter
,
Object
[]
args
,
int
[]
argTypes
)
{
try
{
List
<
T
>
findList
=
find
(
filter
,
args
,
argTypes
);
return
(
findList
==
null
||
findList
.
size
()
==
0
)
?
null
:
findList
.
get
(
0
);
}
catch
(
Exception
e
)
{
_logger
.
error
(
"findAll Exception "
,
e
);
}
return
null
;
}
/**
* select with filter
* <pre>
* find(" StdNo = '10024')
* </pre>
* @param filter
* @return T
*/
public
T
findOne
(
String
filter
)
{
return
findOne
(
filter
,
null
,
null
);
}
/**
* query one entity by entity
* @param entity
...
...
@@ -259,16 +325,6 @@ public class JpaBaseService <T extends JpaBaseEntity> {
return
null
;
}
public
T
find
(
Class
<
T
>
entityClass
,
Object
primaryKey
)
{
try
{
_logger
.
debug
(
"entityClass {} , primaryKey {}"
,
entityClass
.
toGenericString
()
,
primaryKey
);
return
getMapper
().
get
(
entityClass
,
primaryKey
.
toString
());
}
catch
(
Exception
e
)
{
_logger
.
error
(
"find Exception "
,
e
);
}
return
null
;
}
//follow function for insert update and delete
/**
* insert new entity
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperMetadata.java
浏览文件 @
5677b719
...
...
@@ -55,6 +55,10 @@ public class MapperMetadata <T extends JpaBaseEntity>{
}
public
static
String
ENTITY_CLASS
=
"entityClass"
;
public
static
String
QUERY_FILTER
=
"filter"
;
public
static
String
QUERY_ARGS
=
"args"
;
public
static
String
QUERY_ARGTYPES
=
"argTypes"
;
/**
* 表名和字段名
*/
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/MapperSqlProvider.java
浏览文件 @
5677b719
...
...
@@ -45,12 +45,16 @@ public class MapperSqlProvider <T extends JpaBaseEntity>{
return
new
SqlProviderQuery
().
get
(
parametersMap
);
}
public
String
find
(
Map
<
String
,
Object
>
parametersMap
)
throws
Exception
{
return
new
SqlProviderQuery
().
find
(
parametersMap
);
}
public
String
findAll
(
Map
<
String
,
Object
>
parametersMap
)
{
return
new
SqlProviderQuery
().
findAll
(
parametersMap
);
}
public
String
remove
(
Map
<
String
,
Object
>
parametersMap
)
{
return
new
SqlProviderDelete
().
execut
e
(
parametersMap
);
return
new
SqlProviderDelete
().
remov
e
(
parametersMap
);
}
public
String
deleteBatch
(
Map
<
String
,
Object
>
parametersMap
)
{
...
...
@@ -66,7 +70,7 @@ public class MapperSqlProvider <T extends JpaBaseEntity>{
* @return insert sql String
*/
public
String
insert
(
T
entity
)
{
return
new
SqlProviderInsert
().
execute
(
entity
);
return
new
SqlProviderInsert
().
insert
(
entity
);
}
/**
...
...
@@ -74,7 +78,7 @@ public class MapperSqlProvider <T extends JpaBaseEntity>{
* @return update sql String
*/
public
String
update
(
T
entity
)
{
return
new
SqlProviderUpdate
().
execu
te
(
entity
);
return
new
SqlProviderUpdate
().
upda
te
(
entity
);
}
/**
...
...
@@ -86,7 +90,7 @@ public class MapperSqlProvider <T extends JpaBaseEntity>{
}
public
String
query
(
T
entity
)
{
return
new
SqlProviderQuery
().
execute
(
entity
);
return
new
SqlProviderQuery
().
query
(
entity
);
}
}
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderDelete.java
浏览文件 @
5677b719
...
...
@@ -38,7 +38,7 @@ public class SqlProviderDelete <T extends JpaBaseEntity>{
private
static
final
Logger
_logger
=
LoggerFactory
.
getLogger
(
SqlProviderDelete
.
class
);
public
String
execut
e
(
Map
<
String
,
Object
>
parametersMap
)
{
public
String
remov
e
(
Map
<
String
,
Object
>
parametersMap
)
{
Class
<?>
entityClass
=(
Class
<?>)
parametersMap
.
get
(
MapperMetadata
.
ENTITY_CLASS
);
MapperMetadata
.
buildColumnList
(
entityClass
);
if
(
MapperMetadata
.
sqlsMap
.
containsKey
(
MapperMetadata
.
getTableName
(
entityClass
)
+
SQL_TYPE
.
REMOVE_SQL
))
{
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderInsert.java
浏览文件 @
5677b719
...
...
@@ -43,7 +43,7 @@ public class SqlProviderInsert <T extends JpaBaseEntity>{
* @param entity
* @return insert sql String
*/
public
String
execute
(
T
entity
)
{
public
String
insert
(
T
entity
)
{
MapperMetadata
.
buildColumnList
(
entity
.
getClass
());
List
<
FieldColumnMapper
>
listFields
=
MapperMetadata
.
fieldsMap
.
get
(
entity
.
getClass
().
getSimpleName
());
...
...
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderQuery.java
浏览文件 @
5677b719
...
...
@@ -20,7 +20,10 @@
*/
package
org.apache.mybatis.jpa.persistence.provider
;
import
java.sql.Types
;
import
java.util.Map
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.jdbc.SQL
;
import
org.apache.ibatis.mapping.BoundSql
;
import
org.apache.ibatis.mapping.ParameterMapping
;
...
...
@@ -81,8 +84,61 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
MapperMetadata
.
sqlsMap
.
put
(
MapperMetadata
.
getTableName
(
entityClass
)
+
SQL_TYPE
.
FINDALL_SQL
,
findAllSql
);
return
findAllSql
;
}
public
String
find
(
Map
<
String
,
Object
>
parametersMap
)
throws
Exception
{
Class
<?>
entityClass
=(
Class
<?>)
parametersMap
.
get
(
MapperMetadata
.
ENTITY_CLASS
);
Object
[]
args
=
(
Object
[])
parametersMap
.
get
(
MapperMetadata
.
QUERY_ARGS
);
int
[]
argTypes
=
(
int
[])
parametersMap
.
get
(
MapperMetadata
.
QUERY_ARGTYPES
);
String
filterSql
=
parametersMap
.
get
(
MapperMetadata
.
QUERY_FILTER
).
toString
().
trim
();
MapperMetadata
.
buildColumnList
(
entityClass
);
if
(
filterSql
.
toLowerCase
().
startsWith
(
"where"
))
{
filterSql
=
filterSql
.
substring
(
5
);
}
if
(
args
==
null
||
args
.
length
==
0
)
{
filterSql
=
replace
(
filterSql
);
}
else
{
int
countMatches
=
StringUtils
.
countMatches
(
filterSql
,
"?"
);
if
(
args
.
length
<
countMatches
)
{
_logger
.
error
(
"args length {} < parameter placeholder {}"
,
countMatches
,
args
.
length
);
throw
new
Exception
(
"args length < parameter placeholder"
);
}
String
filterSqls
[]
=
filterSql
.
split
(
"\\?"
);
StringBuffer
sqlBuffer
=
new
StringBuffer
(
""
);
for
(
int
i
=
0
;
i
<
args
.
length
;
i
++){
_logger
.
trace
(
"Find args[{}] {}"
,
i
,
args
[
i
]);
if
(
argTypes
[
i
]
==
Types
.
VARCHAR
||
argTypes
[
i
]
==
Types
.
NVARCHAR
||
argTypes
[
i
]
==
Types
.
CHAR
||
argTypes
[
i
]
==
Types
.
NCHAR
||
argTypes
[
i
]
==
Types
.
LONGVARCHAR
||
argTypes
[
i
]
==
Types
.
LONGNVARCHAR
)
{
sqlBuffer
.
append
(
filterSqls
[
i
])
.
append
(
"'"
)
.
append
(
args
[
i
].
toString
().
replaceAll
(
"'"
,
""
))
.
append
(
"'"
);
}
else
{
sqlBuffer
.
append
(
filterSqls
[
i
])
.
append
(
args
[
i
]);
}
}
filterSql
=
replace
(
sqlBuffer
.
toString
());
}
SQL
sql
=
new
SQL
()
.
SELECT
(
selectColumnMapper
(
entityClass
))
.
FROM
(
MapperMetadata
.
getTableName
(
entityClass
)+
" sel_tmp_table "
)
.
WHERE
(
filterSql
);
String
findSql
=
sql
.
toString
();
_logger
.
trace
(
"Find SQL \n"
+
findSql
);
public
String
execute
(
T
entity
)
{
return
findSql
;
}
public
String
query
(
T
entity
)
{
MapperMetadata
.
buildColumnList
(
entity
.
getClass
());
SQL
sql
=
new
SQL
()
.
SELECT
(
selectColumnMapper
(
entity
.
getClass
()))
...
...
@@ -92,9 +148,8 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
String
fieldValue
=
BeanUtil
.
getValue
(
entity
,
fieldColumnMapper
.
getFieldName
());
String
fieldType
=
fieldColumnMapper
.
getFieldType
().
toLowerCase
();
_logger
.
trace
(
"ColumnName "
+
fieldColumnMapper
.
getColumnName
()
+
" , FieldType "
+
fieldType
+
" , value "
+
fieldValue
);
_logger
.
trace
(
"ColumnName {} , FieldType {} , value {}"
,
fieldColumnMapper
.
getColumnName
(),
fieldType
,
fieldValue
);
if
(
fieldValue
==
null
||(
fieldType
.
equals
(
"string"
)&&
fieldValue
.
equals
(
""
))
...
...
@@ -107,7 +162,7 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
)
{
//skip null field value
}
else
{
sql
.
WHERE
(
fieldColumnMapper
.
getColumnName
()
+
"
=
#{"
+
fieldColumnMapper
.
getFieldName
()
+
"}"
);
sql
.
WHERE
(
fieldColumnMapper
.
getColumnName
()
+
"
=
#{"
+
fieldColumnMapper
.
getFieldName
()
+
"}"
);
}
}
...
...
@@ -142,11 +197,8 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
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
=
replace
(
pageResultsSqlCache
.
getSql
());
BoundSql
boundSql
=
(
BoundSql
)
pageResultsSqlCache
.
getBoundSql
();
_logger
.
trace
(
"Count original SQL :\n{}"
,
selectSql
);
...
...
@@ -191,4 +243,11 @@ public class SqlProviderQuery <T extends JpaBaseEntity>{
return
sql
.
toString
();
}
public
static
String
replace
(
String
sql
)
{
return
sql
.
replaceAll
(
"\r\n+"
,
" \n"
)
.
replaceAll
(
"\n+"
,
" \n"
)
.
replaceAll
(
"\t"
,
" "
)
.
replaceAll
(
" +"
,
" "
);
}
}
mybatis-jpa-extra-core/src/main/java/org/apache/mybatis/jpa/persistence/provider/SqlProviderUpdate.java
浏览文件 @
5677b719
...
...
@@ -41,7 +41,7 @@ public class SqlProviderUpdate <T extends JpaBaseEntity>{
* @param entity
* @return update sql String
*/
public
String
execu
te
(
T
entity
)
{
public
String
upda
te
(
T
entity
)
{
MapperMetadata
.
buildColumnList
(
entity
.
getClass
());
List
<
FieldColumnMapper
>
listFields
=
MapperMetadata
.
fieldsMap
.
get
(
entity
.
getClass
().
getSimpleName
());
...
...
mybatis-jpa-extra-core/src/test/java/org/apache/mybatis/jpa/test/MyBatisTestRunner.java
浏览文件 @
5677b719
...
...
@@ -17,6 +17,7 @@
package
org.apache.mybatis.jpa.test
;
import
java.sql.Types
;
import
java.text.SimpleDateFormat
;
import
java.util.ArrayList
;
import
java.util.Date
;
...
...
@@ -79,6 +80,23 @@ public class MyBatisTestRunner {
}
@Test
public
void
find
()
throws
Exception
{
_logger
.
info
(
"find..."
);
_logger
.
info
(
"find by filter "
+
service
.
find
(
" StdNo = '10024' or StdNo = '10004'"
)
);
_logger
.
info
(
"find by filter with args "
+
service
.
find
(
" StdNo = ? or StdNo = ? "
,
new
Object
[]{
"10024"
,
"10004"
},
new
int
[]{
Types
.
VARCHAR
,
Types
.
INTEGER
}
)
);
}
@Test
public
void
get
()
throws
Exception
{
_logger
.
info
(
"get..."
);
...
...
@@ -105,17 +123,6 @@ public class MyBatisTestRunner {
_logger
.
info
(
"updateed2."
);
}
@Test
public
void
find
()
throws
Exception
{
_logger
.
info
(
"find..."
);
Students
student
=
service
.
find
(
Students
.
class
,
"317d5eda-927c-4871-a916-472a8062df23"
);
System
.
out
.
println
(
"Students "
+
student
);
_logger
.
info
(
"Students "
+
student
);
}
@Test
public
void
remove
()
throws
Exception
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录