Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gjjs-bd-common
Overview
Overview
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
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
s_guodong
gjjs-bd-common
Commits
610b8efa
Commit
610b8efa
authored
Aug 15, 2023
by
吴佳
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dbReadset 分页查询调整
parent
ec0f1b57
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
84 additions
and
10 deletions
+84
-10
MyBatisDaoSession.java
...com/brilliance/mda/support/mybatis/MyBatisDaoSession.java
+32
-7
MybatisArgumentAdapter.java
...rilliance/mda/support/mybatis/MybatisArgumentAdapter.java
+52
-3
No files found.
gjjs-bd-mybatis-support/src/main/java/com/brilliance/mda/support/mybatis/MyBatisDaoSession.java
View file @
610b8efa
...
@@ -4,6 +4,7 @@ import com.brilliance.mda.runtime.mda.*;
...
@@ -4,6 +4,7 @@ import com.brilliance.mda.runtime.mda.*;
import
com.brilliance.mda.runtime.mda.driver.MdaDriver
;
import
com.brilliance.mda.runtime.mda.driver.MdaDriver
;
import
com.brilliance.mda.runtime.mda.driver.MdaEnv
;
import
com.brilliance.mda.runtime.mda.driver.MdaEnv
;
import
com.brilliance.mda.runtime.mda.impl.AbstractDaoSession
;
import
com.brilliance.mda.runtime.mda.impl.AbstractDaoSession
;
import
com.brilliance.mda.runtime.mda.impl.AbstractModule
;
import
com.brilliance.mda.runtime.mda.impl.Argument
;
import
com.brilliance.mda.runtime.mda.impl.Argument
;
import
com.brilliance.mda.runtime.mda.impl.ModuleList
;
import
com.brilliance.mda.runtime.mda.impl.ModuleList
;
import
com.brilliance.mda.runtime.mda.util.MdaUtils
;
import
com.brilliance.mda.runtime.mda.util.MdaUtils
;
...
@@ -12,6 +13,14 @@ import com.brilliance.mda.support.mybatis.config.MybatisDbUtil;
...
@@ -12,6 +13,14 @@ import com.brilliance.mda.support.mybatis.config.MybatisDbUtil;
import
com.brilliance.mda.support.mybatis.count.CounterService
;
import
com.brilliance.mda.support.mybatis.count.CounterService
;
import
com.brilliance.mda.support.mybatis.dync.mapper.DbExecuteMapper
;
import
com.brilliance.mda.support.mybatis.dync.mapper.DbExecuteMapper
;
import
com.github.pagehelper.PageHelper
;
import
com.github.pagehelper.PageHelper
;
import
net.sf.jsqlparser.JSQLParserException
;
import
net.sf.jsqlparser.parser.CCJSqlParserUtil
;
import
net.sf.jsqlparser.schema.Table
;
import
net.sf.jsqlparser.statement.select.Join
;
import
net.sf.jsqlparser.statement.select.PlainSelect
;
import
net.sf.jsqlparser.statement.select.Select
;
import
net.sf.jsqlparser.statement.select.SelectBody
;
import
net.sf.jsqlparser.util.TablesNamesFinder
;
import
org.apache.commons.beanutils.MethodUtils
;
import
org.apache.commons.beanutils.MethodUtils
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.mybatis.spring.SqlSessionTemplate
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
...
@@ -20,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -20,6 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
java.io.Serializable
;
import
java.io.Serializable
;
import
java.io.StringReader
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.InvocationTargetException
;
import
java.math.BigDecimal
;
import
java.math.BigDecimal
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
...
@@ -229,26 +239,39 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
...
@@ -229,26 +239,39 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
@Override
@Override
public
<
T
extends
IModule
>
int
dbReadset
(
IModuleList
<
T
>[]
lists
,
CacheOption
cacheOption
,
String
whereSql
,
Object
[]
param
)
{
public
<
T
extends
IModule
>
int
dbReadset
(
IModuleList
<
T
>[]
lists
,
CacheOption
cacheOption
,
String
whereSql
,
Object
[]
param
)
{
if
(
isMultiDb
)
{
String
moduleDB
=
MdaUtils
.
getModuleListsDB
(
lists
);
DynamicDataSourceContextHolder
.
setDataSourceType
(
moduleDB
);
}
if
(
cacheOption
!=
null
)
{
IContext
ctx
=
MdaEnv
.
getContext
();
IContext
ctx
=
MdaEnv
.
getContext
();
BaseVO
baseVO
=
ctx
.
getVo
();
BaseVO
baseVO
=
ctx
.
getVo
();
int
pageNum
=
baseVO
.
getPageNum
();
int
pageNum
=
baseVO
.
getPageNum
();
int
pageSize
=
baseVO
.
getPageSize
();
int
pageSize
=
baseVO
.
getPageSize
();
PageHelper
.
startPage
(
pageNum
,
pageSize
);
if
(
isMultiDb
)
{
String
moduleDB
=
MdaUtils
.
getModuleListsDB
(
lists
);
DynamicDataSourceContextHolder
.
setDataSourceType
(
moduleDB
);
}
}
List
<
Class
<?
extends
IModule
>>
clazzList
=
new
ArrayList
<>();
List
<
Class
<?
extends
IModule
>>
clazzList
=
new
ArrayList
<>();
for
(
IModuleList
iModule
:
lists
)
{
for
(
IModuleList
iModule
:
lists
)
{
clazzList
.
add
(
iModule
.
getDataClass
());
clazzList
.
add
(
iModule
.
getDataClass
());
}
}
MybatisArgumentAdapter
adapter
=
new
MybatisArgumentAdapter
(
SELECT
,
clazzList
,
whereSql
,
param
);
for
(
IModuleList
iModule
:
lists
)
{
for
(
IModuleList
iModule
:
lists
)
{
//如果是多表查询 ,whereSql拼接 select 别名.*
try
{
String
tableName
=
((
AbstractModule
)
Class
.
forName
(
iModule
.
getDataClass
().
getName
()).
newInstance
()).
getTableName
();
MybatisArgumentAdapter
adapter
=
new
MybatisArgumentAdapter
(
SELECT
,
clazzList
,
whereSql
,
param
,
tableName
);
if
(
cacheOption
!=
null
)
{
PageHelper
.
startPage
(
pageNum
,
pageSize
);
}
List
<
T
>
result
=
this
.
dyncRead
(
iModule
.
getDataClass
(),
adapter
);
List
<
T
>
result
=
this
.
dyncRead
(
iModule
.
getDataClass
(),
adapter
);
iModule
.
addAll
(
result
);
iModule
.
addAll
(
result
);
}
catch
(
InstantiationException
e
)
{
e
.
printStackTrace
();
}
catch
(
IllegalAccessException
e
)
{
e
.
printStackTrace
();
}
catch
(
ClassNotFoundException
e
)
{
e
.
printStackTrace
();
}
}
}
if
(
cacheOption
!=
null
)
{
if
(
cacheOption
!=
null
)
{
...
@@ -476,6 +499,8 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
...
@@ -476,6 +499,8 @@ public class MyBatisDaoSession extends AbstractDaoSession implements IDaoSession
}
}
private
<
T
>
List
<
T
>
dyncRead
(
Class
<
T
>
clazz
,
Map
params
)
{
private
<
T
>
List
<
T
>
dyncRead
(
Class
<
T
>
clazz
,
Map
params
)
{
String
sqlId
=
getSqlId
(
clazz
,
SQLID_DYNCREAD
);
String
sqlId
=
getSqlId
(
clazz
,
SQLID_DYNCREAD
);
...
...
gjjs-bd-mybatis-support/src/main/java/com/brilliance/mda/support/mybatis/MybatisArgumentAdapter.java
View file @
610b8efa
...
@@ -2,8 +2,14 @@ package com.brilliance.mda.support.mybatis;
...
@@ -2,8 +2,14 @@ package com.brilliance.mda.support.mybatis;
import
com.brilliance.mda.runtime.mda.IModule
;
import
com.brilliance.mda.runtime.mda.IModule
;
import
com.brilliance.mda.runtime.mda.impl.Argument
;
import
com.brilliance.mda.runtime.mda.impl.Argument
;
import
com.brilliance.mda.runtime.mda.util.MdaUtils
;
import
com.brilliance.mda.support.mybatis.entity.Column
;
import
com.brilliance.mda.support.mybatis.entity.Column
;
import
com.brilliance.mda.support.mybatis.entity.Table
;
import
com.brilliance.mda.support.mybatis.entity.Table
;
import
net.sf.jsqlparser.parser.CCJSqlParserUtil
;
import
net.sf.jsqlparser.statement.select.Join
;
import
net.sf.jsqlparser.statement.select.PlainSelect
;
import
net.sf.jsqlparser.statement.select.Select
;
import
net.sf.jsqlparser.statement.select.SelectBody
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.util.StringUtils
;
import
org.springframework.util.StringUtils
;
...
@@ -59,6 +65,7 @@ public class MybatisArgumentAdapter {
...
@@ -59,6 +65,7 @@ public class MybatisArgumentAdapter {
private
String
pattern
;
private
String
pattern
;
private
Object
[]
params
;
private
Object
[]
params
;
private
String
tableName
;
private
String
tableName
;
private
String
selectTable
;
public
MybatisArgumentAdapter
(
AdaType
type
,
Class
<?
extends
IModule
>
clazz
,
Argument
...
args
)
{
public
MybatisArgumentAdapter
(
AdaType
type
,
Class
<?
extends
IModule
>
clazz
,
Argument
...
args
)
{
...
@@ -82,6 +89,16 @@ public class MybatisArgumentAdapter {
...
@@ -82,6 +89,16 @@ public class MybatisArgumentAdapter {
this
.
init
();
this
.
init
();
}
}
public
MybatisArgumentAdapter
(
AdaType
type
,
List
<
Class
<?
extends
IModule
>>
clazzList
,
String
whereSql
,
Object
[]
params
,
String
selectTable
)
{
this
.
clazzList
=
clazzList
;
this
.
pattern
=
type
.
getValue
();
this
.
whereSql
=
whereSql
;
this
.
params
=
params
;
this
.
tableName
=
convertTableNames
();
this
.
selectTable
=
selectTable
;
this
.
init
();
}
public
MybatisArgumentAdapter
(
AdaType
type
,
List
<
Class
<?
extends
IModule
>>
clazzList
,
String
whereSql
,
Object
[]
params
)
{
public
MybatisArgumentAdapter
(
AdaType
type
,
List
<
Class
<?
extends
IModule
>>
clazzList
,
String
whereSql
,
Object
[]
params
)
{
this
.
clazzList
=
clazzList
;
this
.
clazzList
=
clazzList
;
this
.
pattern
=
type
.
getValue
();
this
.
pattern
=
type
.
getValue
();
...
@@ -148,11 +165,19 @@ public class MybatisArgumentAdapter {
...
@@ -148,11 +165,19 @@ public class MybatisArgumentAdapter {
String
sql
=
""
;
String
sql
=
""
;
if
(
join
)
{
if
(
join
)
{
if
(
conditions
.
startsWith
(
"SELECT"
)
||
conditions
.
startsWith
(
"select"
)){
sql
=
conditions
;
}
else
{
sql
=
String
.
format
(
pattern
,
conditions
);
sql
=
String
.
format
(
pattern
,
conditions
);
Map
<
String
,
String
>
tableNameMap
=
parseTableNameAndAlias
(
sql
);
String
aliasName
=
tableNameMap
.
get
(
this
.
selectTable
);
if
(!
MdaUtils
.
isEmpty
(
aliasName
)){
sql
=
sql
.
replace
(
"*"
,
aliasName
+
".*"
);
}
}
// if(conditions.startsWith("SELECT") || conditions.startsWith("select")){
// sql = conditions;
// }else {
//
// sql = String.format(pattern, conditions);
// }
}
else
{
}
else
{
sql
=
String
.
format
(
pattern
,
tableName
,
conditions
);
sql
=
String
.
format
(
pattern
,
tableName
,
conditions
);
}
}
...
@@ -161,6 +186,30 @@ public class MybatisArgumentAdapter {
...
@@ -161,6 +186,30 @@ public class MybatisArgumentAdapter {
this
.
sqlParams
.
put
(
HOLDER_CONDS
,
conditions
);
this
.
sqlParams
.
put
(
HOLDER_CONDS
,
conditions
);
}
}
// 获取表及对应的别名
public
Map
<
String
,
String
>
parseTableNameAndAlias
(
String
sql
){
Map
<
String
,
String
>
map
=
new
HashMap
<>();
try
{
Select
select
=
(
Select
)
CCJSqlParserUtil
.
parse
(
sql
);
SelectBody
selectBody
=
select
.
getSelectBody
();
PlainSelect
plainSelect
=
(
PlainSelect
)
selectBody
;
net
.
sf
.
jsqlparser
.
schema
.
Table
table
=
(
net
.
sf
.
jsqlparser
.
schema
.
Table
)
plainSelect
.
getFromItem
();
if
(
table
.
getAlias
()
!=
null
){
map
.
put
(
table
.
getName
(),
table
.
getAlias
().
getName
());
}
for
(
Join
join
:
plainSelect
.
getJoins
()){
net
.
sf
.
jsqlparser
.
schema
.
Table
table1
=
(
net
.
sf
.
jsqlparser
.
schema
.
Table
)
join
.
getRightItem
();
if
(
table1
.
getAlias
()!=
null
){
map
.
put
(
table1
.
getName
(),
table1
.
getAlias
().
getName
());
}
}
}
catch
(
Exception
e
){
e
.
printStackTrace
();
}
return
map
;
}
public
String
getSqlTemplate
()
{
public
String
getSqlTemplate
()
{
return
sqlTemplate
;
return
sqlTemplate
;
...
...
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