Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
MybatisTraning
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
qin.wen
MybatisTraning
Commits
3d11dd4a
Commit
3d11dd4a
authored
Jan 02, 2020
by
qin.wen
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
--no commit message
parent
3b7c3b90
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
99 additions
and
0 deletions
+99
-0
MyMybatisLogInterceptor
...ava/cesgroup/mybatis2/interceptor/MyMybatisLogInterceptor
+99
-0
No files found.
秦雯_Mybatis2/src/main/java/cesgroup/mybatis2/interceptor/MyMybatisLogInterceptor
0 → 100644
View file @
3d11dd4a
package
com
.
cesgroup
.
mybatis2
.
interceptor
;
package
com
.
cesgroup
.
mybatis2
.
interceptor
;
import
com
.
alibaba
.
fastjson
.
JSONObject
;
import
com
.
cesgroup
.
mybatis2
.
handle
.
MyTypeHandle
;
import
org
.
apache
.
ibatis
.
executor
.
statement
.
StatementHandler
;
import
org
.
apache
.
ibatis
.
logging
.
Log
;
import
org
.
apache
.
ibatis
.
logging
.
LogFactory
;
import
org
.
apache
.
ibatis
.
mapping
.
BoundSql
;
import
org
.
apache
.
ibatis
.
mapping
.
ParameterMapping
;
import
org
.
apache
.
ibatis
.
plugin
.*;
import
org
.
apache
.
ibatis
.
session
.
ResultHandler
;
import
java
.
sql
.
Statement
;
import
java
.
util
.
List
;
import
java
.
util
.
Map
;
import
java
.
util
.
Properties
;
/**
*
*
@
author
kks
*
@
date
2020
/
01
/
02
*/
@
Intercepts
({
@
Signature
(
type
=
StatementHandler
.
class
,
method
=
"query"
,
args
=
{
Statement
.
class
,
ResultHandler
.
class
}),
@
Signature
(
type
=
StatementHandler
.
class
,
method
=
"update"
,
args
=
{
Statement
.
class
}),
@
Signature
(
type
=
StatementHandler
.
class
,
method
=
"batch"
,
args
=
{
Statement
.
class
})
})
public
class
MyMybatisLogInterceptor
implements
Interceptor
{
final
Log
log
=
LogFactory
.
getLog
(
MyTypeHandle
.
class
);
@
Override
public
Object
intercept
(
Invocation
invocation
)
throws
Throwable
{
Object
target
=
invocation
.
getTarget
();
StatementHandler
statementHandler
=
(
StatementHandler
)
target
;
try
{
return
invocation
.
proceed
();
}
finally
{
BoundSql
boundSql
=
statementHandler
.
getBoundSql
();
String
sql
=
boundSql
.
getSql
();
Object
parameterObject
=
boundSql
.
getParameterObject
();
List
<
ParameterMapping
>
parameterMappingList
=
boundSql
.
getParameterMappings
();
//
格式化
Sql
语句,去除换行符,替换参数
sql
=
formatSql
(
sql
,
parameterObject
,
parameterMappingList
);
log
.
warn
(
"SQL:"
+
sql
+
";"
);
}
}
private
String
formatSql
(
String
sql
,
Object
parameterObject
,
List
<
ParameterMapping
>
parameterMappingList
)
{
sql
=
sql
.
replaceAll
(
"
\r
|
\n
|
\t
"
,
" "
).
replaceAll
(
"
\\
s+"
,
" "
);
if
(
parameterObject
==
null
){
sql
=
sql
.
replaceAll
(
"
\\
?"
,
" null"
);
return
sql
;
}
if
(
Map
.
class
.
isAssignableFrom
(
parameterObject
.
getClass
())){
Map
pb
=
(
Map
)
parameterObject
;
for
(
ParameterMapping
temp
:
parameterMappingList
){
if
(
pb
.
get
(
temp
.
getProperty
())
!= null){
if
(
pb
.
get
(
temp
.
getProperty
()).
getClass
().
isAssignableFrom
(
JSONObject
.
class
)){
JSONObject
infObject
=
(
JSONObject
)
pb
.
get
(
temp
.
getProperty
());
sql
=
sql
.
replaceFirst
(
"
\\
?"
,
"'"
+
infObject
.
toJSONString
()
+
"'"
);
}
else
{
sql
=
sql
.
replaceFirst
(
"
\\
?"
,
"'"
+
pb
.
get
(
temp
.
getProperty
())
+
"'"
);
}
}
else
{
sql
=
sql
.
replaceFirst
(
"
\\
?"
,
"'null'"
);
}
}
}
if
(
String
.
class
.
isAssignableFrom
(
parameterObject
.
getClass
()))
{
sql
=
sql
.
replaceFirst
(
"
\\
?"
,
parameterObject
==
null
?
"null"
:
"'"
+
parameterObject
+
"'"
);
}
if
(
Number
.
class
.
isAssignableFrom
(
parameterObject
.
getClass
()))
{
sql
=
sql
.
replaceFirst
(
"
\\
?"
,
parameterObject
==
null
?
"null"
:
parameterObject
.
toString
());
}
return
sql
;
}
@
Override
public
Object
plugin
(
Object
o
)
{
return
Plugin
.
wrap
(
o
,
this
);
}
@
Override
public
void
setProperties
(
Properties
properties
)
{
}
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment