Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
jinli gu
Springboot Plus
Commits
f610086a
"...main/resources/git@ustchcs.com:gujinli1118/eladmin.git" did not exist on "40c2c880ca76a27935c0c61ce43df7ca3ea97d68"
Commit
f610086a
authored
Sep 25, 2019
by
trumansdo
Browse files
待提交文档
parent
a3d658f6
Changes
6
Hide whitespace changes
Inline
Side-by-side
plus-admin/admin-console/src/main/resources/btsql-ext.properties
View file @
f610086a
DELIMITER_PLACEHOLDER_START
=
#
DELIMITER_PLACEHOLDER_START
=
#
DELIMITER_PLACEHOLDER_END=#
DELIMITER_PLACEHOLDER_END=#
DELIMITER_STATEMENT_START
=
-
-:
DELIMITER_STATEMENT_START
=
>
-
DELIMITER_STATEMENT_END
=
DELIMITER_STATEMENT_END
=
#\u51FD\u6570\u6CE8\u518C
#\u51FD\u6570\u6CE8\u518C
FN.isEmpty
=
org.beetl.ext.fn.EmptyExpressionFunction
FN.isEmpty
=
org.beetl.ext.fn.EmptyExpressionFunction
...
...
plus-admin/admin-console/src/test/java/CustomBeanProcessorTest.java
View file @
f610086a
...
@@ -38,64 +38,15 @@ public class CustomBeanProcessorTest {
...
@@ -38,64 +38,15 @@ public class CustomBeanProcessorTest {
@Autowired
GroupTemplate
template
;
@Autowired
GroupTemplate
template
;
static
JSONObject
resultMappping
;
@BeforeClass
public
static
void
init
()
{
resultMappping
=
new
JSONObject
();
resultMappping
.
put
(
"id"
,
"core_route_map"
);
JSONObject
routeMapping
=
new
JSONObject
();
routeMapping
.
put
(
"id"
,
"id"
);
routeMapping
.
put
(
"parentId"
,
"parent_id"
);
routeMapping
.
put
(
"path"
,
"path"
);
routeMapping
.
put
(
"name"
,
"name"
);
routeMapping
.
put
(
"seq"
,
"seq"
);
JSONObject
metaMapping
=
new
JSONObject
();
metaMapping
.
put
(
"title"
,
"title"
);
metaMapping
.
put
(
"icon"
,
"icon"
);
JSONArray
roles
=
new
JSONArray
();
JSONObject
roleidMapping
=
new
JSONObject
();
roleidMapping
.
put
(
"id"
,
"role_id"
);
roles
.
add
(
roleidMapping
);
metaMapping
.
put
(
"roles"
,
roles
);
metaMapping
.
put
(
"resultType"
,
CoreRouteMeta
.
class
.
getCanonicalName
());
JSONObject
testMapping
=
new
JSONObject
();
testMapping
.
put
(
"id"
,
"test_id"
);
testMapping
.
put
(
"username"
,
"username"
);
testMapping
.
put
(
"password"
,
"password"
);
testMapping
.
put
(
"resultType"
,
entity
.
Test
.
class
.
getCanonicalName
());
routeMapping
.
put
(
"meta"
,
metaMapping
);
routeMapping
.
put
(
"resultType"
,
CoreRoute
.
class
.
getCanonicalName
());
resultMappping
.
put
(
"mapping"
,
routeMapping
);
}
@Before
@Before
public
void
beanProcessor
()
{
public
void
beanProcessor
()
{
JsonBeanProcessor
jsonBeanProcessor
=
new
JsonBeanProcessor
(
sqlManager
);
JsonBeanProcessor
jsonBeanProcessor
=
new
JsonBeanProcessor
(
sqlManager
);
sqlManager
.
setDefaultBeanProcessors
(
jsonBeanProcessor
);
sqlManager
.
setDefaultBeanProcessors
(
jsonBeanProcessor
);
Map
<
Class
,
JavaSqlTypeHandler
>
typeHandlerMap
=
sqlManager
.
getDefaultBeanProcessors
().
getHandlers
();
/*Java bean的属性类型处理器,从数据库类型转化到属性Date类型*/
typeHandlerMap
.
remove
(
Date
.
class
);
typeHandlerMap
.
put
(
Date
.
class
,
new
DateTypeHandler
());
typeHandlerMap
.
put
(
ZonedDateTime
.
class
,
new
ZonedDateTimeTypeHandler
());
}
}
@Test
@Test
public
void
maptest
()
{
public
void
maptest
()
{
GridMapping
gridMapping
=
new
GridMapping
(
resultMappping
);
CacheUtil
.
put
(
"Route_Mapping"
,
gridMapping
);
List
<
CoreRoute
>
routesList
=
coreFunctionDao
.
getAllRoutes
();
List
<
CoreRoute
>
routesList
=
coreFunctionDao
.
getAllRoutes
();
System
.
out
.
println
(
routesList
);
System
.
out
.
println
(
routesList
);
System
.
out
.
println
(
JSONUtil
.
toJsonPrettyStr
(
resultMappping
));
}
}
}
}
plus-admin/admin-console/src/test/java/processor/JsonBeanProcessor.java
View file @
f610086a
...
@@ -33,7 +33,12 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -33,7 +33,12 @@ public class JsonBeanProcessor extends BeanProcessor {
super
(
sm
);
super
(
sm
);
}
}
public
void
getResultSet
(
ResultSet
resultSet
)
throws
SQLException
{
/**
* 网格化输出结果集
* @param resultSet
* @throws SQLException
*/
public
void
printfResultSet
(
ResultSet
resultSet
)
throws
SQLException
{
Map
<
String
,
List
<
Object
>>
map
=
MapUtil
.<
String
,
List
<
Object
>>
builder
().
build
();
Map
<
String
,
List
<
Object
>>
map
=
MapUtil
.<
String
,
List
<
Object
>>
builder
().
build
();
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
int
count
=
metaData
.
getColumnCount
();
int
count
=
metaData
.
getColumnCount
();
...
@@ -80,10 +85,12 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -80,10 +85,12 @@ public class JsonBeanProcessor extends BeanProcessor {
Map
json
=
(
Map
)
CacheUtil
.
get
(
sqlId
);
Map
json
=
(
Map
)
CacheUtil
.
get
(
sqlId
);
GridMapping
mapping
=
new
GridMapping
(
json
);
GridMapping
mapping
=
new
GridMapping
(
json
);
if
(
null
==
mapping
)
{
if
(
null
==
mapping
)
{
/*无映射的情况下使用beetlsql默认自带的映射*/
do
{
do
{
results
.
add
(
super
.
createBean
(
sqlId
,
rs
,
type
,
props
,
columnToProperty
));
results
.
add
(
super
.
createBean
(
sqlId
,
rs
,
type
,
props
,
columnToProperty
));
}
while
(
rs
.
next
());
}
while
(
rs
.
next
());
}
else
{
}
else
{
/*复杂结果集映射,取消TailBean的便利性*/
rs
.
absolute
(
0
);
rs
.
absolute
(
0
);
fillMappingRow
(
rs
,
mapping
);
fillMappingRow
(
rs
,
mapping
);
results
=
convertMapping
(
mapping
,
type
);
results
=
convertMapping
(
mapping
,
type
);
...
@@ -162,12 +169,12 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -162,12 +169,12 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
}
}
}
}
/*TODO 重写,以便提供命名转换*/
BeanUtil
.
fillBeanWithMap
(
curObjCol
.
getBeanMap
(),
obj
,
fals
e
,
true
);
BeanUtil
.
fillBeanWithMap
(
curObjCol
.
getBeanMap
(),
obj
,
tru
e
,
true
);
return
obj
;
return
obj
;
}
}
/**
/**
* 填充整个网格映射mapping数据结构
* 填充整个网格映射mapping数据结构
:通过网格头映射生成一个个网格行
*
*
* @param resultSet
* @param resultSet
* @param mapping
* @param mapping
...
@@ -184,9 +191,10 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -184,9 +191,10 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
}
}
}
}
/** 递归填充mapping结构中的每一行 */
/**
protected
GridRow
fillRowColumn
(
ResultSet
resultSet
,
GridHeader
header
,
GridColumn
column
)
* 网格行中存在一个个网格列,也对应着相应的网格头结构
throws
SQLException
{
* */
protected
GridRow
fillRowColumn
(
ResultSet
resultSet
,
GridHeader
header
,
GridColumn
column
)
{
/*搜寻已经存在的row,如果没有,则插入一个*/
/*搜寻已经存在的row,如果没有,则插入一个*/
Map
<
String
,
Object
>
beanMap
=
extractMapFromRs
(
resultSet
,
header
);
Map
<
String
,
Object
>
beanMap
=
extractMapFromRs
(
resultSet
,
header
);
Integer
calculateKey
=
GridColumn
.
calculateKey
(
beanMap
);
Integer
calculateKey
=
GridColumn
.
calculateKey
(
beanMap
);
...
@@ -212,6 +220,13 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -212,6 +220,13 @@ public class JsonBeanProcessor extends BeanProcessor {
return
row
;
return
row
;
}
}
/**
* 遍历网格头,由网格头的信息从结果集中读取值。<br/>
* 这样做的好处是方便算法编写;坏处是失去了tailbean的处理,因为无法确定结果集列的读取状态。
* @param resultSet
* @param header
* @return
*/
private
Map
<
String
,
Object
>
extractMapFromRs
(
ResultSet
resultSet
,
GridHeader
header
)
{
private
Map
<
String
,
Object
>
extractMapFromRs
(
ResultSet
resultSet
,
GridHeader
header
)
{
Map
<
String
,
Object
>
tempBeanMap
=
MapUtil
.
newHashMap
();
Map
<
String
,
Object
>
tempBeanMap
=
MapUtil
.
newHashMap
();
/*第一步、先处理当前可以处理的*/
/*第一步、先处理当前可以处理的*/
...
@@ -221,7 +236,7 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -221,7 +236,7 @@ public class JsonBeanProcessor extends BeanProcessor {
try
{
try
{
tempBeanMap
.
put
(
entry
.
getKey
(),
resultSet
.
getObject
(
entry
.
getValue
()));
tempBeanMap
.
put
(
entry
.
getKey
(),
resultSet
.
getObject
(
entry
.
getValue
()));
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
/*普遍错误
时
从resultset中获取一个不存在的列,但可以忽视*/
/*普遍错误
:
从resultset中获取一个不存在的列,但可以忽视*/
}
}
}
}
return
tempBeanMap
;
return
tempBeanMap
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/BeetlConf.java
View file @
f610086a
...
@@ -19,6 +19,7 @@ import com.ibeetl.admin.core.util.beetl.SysFunctionTreeFunction;
...
@@ -19,6 +19,7 @@ import com.ibeetl.admin.core.util.beetl.SysFunctionTreeFunction;
import
com.ibeetl.admin.core.util.beetl.UUIDFunction
;
import
com.ibeetl.admin.core.util.beetl.UUIDFunction
;
import
com.ibeetl.admin.core.util.beetl.XXSDefenderFormat
;
import
com.ibeetl.admin.core.util.beetl.XXSDefenderFormat
;
import
com.ibeetl.admin.core.web.query.QueryParser
;
import
com.ibeetl.admin.core.web.query.QueryParser
;
import
com.ibeetl.starter.BeetlSqlMutipleSourceCustomize
;
import
com.ibeetl.starter.BeetlTemplateCustomize
;
import
com.ibeetl.starter.BeetlTemplateCustomize
;
import
com.ibeetl.starter.ObjectMapperJsonUtil
;
import
com.ibeetl.starter.ObjectMapperJsonUtil
;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
...
@@ -27,14 +28,20 @@ import java.util.Date;
...
@@ -27,14 +28,20 @@ import java.util.Date;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
javax.servlet.http.HttpServletRequest
;
import
org.apache.commons.jexl2.internal.MapGetExecutor
;
import
org.beetl.core.Context
;
import
org.beetl.core.Context
;
import
org.beetl.core.Function
;
import
org.beetl.core.Function
;
import
org.beetl.core.GroupTemplate
;
import
org.beetl.core.GroupTemplate
;
import
org.beetl.ext.simulate.WebSimulate
;
import
org.beetl.ext.simulate.WebSimulate
;
import
org.beetl.sql.core.Interceptor
;
import
org.beetl.sql.core.InterceptorContext
;
import
org.beetl.sql.core.InterceptorContext
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.engine.SQLPlaceholderST
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.ext.DebugInterceptor
;
import
org.beetl.sql.ext.DebugInterceptor
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.Marker
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
...
@@ -82,15 +89,18 @@ public class BeetlConf {
...
@@ -82,15 +89,18 @@ public class BeetlConf {
}
}
@Bean
@Bean
public
SQLManager
sqlManager
(
public
BeetlSqlMutipleSourceCustomize
beetlSqlMutipleSourceCustomize
(){
@Qualifier
(
"baseDataSourceSqlManagerFactoryBean"
)
SQLManager
sqlManager
)
{
SQLPlaceholderST
.
textFunList
.
add
(
"mapping"
);
Map
<
Class
,
JavaSqlTypeHandler
>
typeHandlerMap
=
return
(
dataSource
,
manager
)
->
{
sqlManager
.
getDefaultBeanProcessors
().
getHandlers
();
Map
<
Class
,
JavaSqlTypeHandler
>
typeHandlerMap
=
/*Java bean的属性类型处理器,从数据库类型转化到属性Date类型*/
manager
.
getDefaultBeanProcessors
().
getHandlers
();
typeHandlerMap
.
remove
(
Date
.
class
);
/*Java bean的属性类型处理器,从数据库类型转化到属性Date类型*/
typeHandlerMap
.
put
(
Date
.
class
,
new
DateTypeHandler
());
typeHandlerMap
.
remove
(
Date
.
class
);
typeHandlerMap
.
put
(
ZonedDateTime
.
class
,
new
ZonedDateTimeTypeHandler
());
typeHandlerMap
.
put
(
Date
.
class
,
new
DateTypeHandler
());
return
sqlManager
;
typeHandlerMap
.
put
(
ZonedDateTime
.
class
,
new
ZonedDateTimeTypeHandler
());
manager
.
setInters
(
new
Interceptor
[]{
new
StarterDebugInterceptor
()});
};
}
}
@Bean
@Bean
...
@@ -167,6 +177,8 @@ public class BeetlConf {
...
@@ -167,6 +177,8 @@ public class BeetlConf {
}
}
static
class
StarterDebugInterceptor
extends
DebugInterceptor
{
static
class
StarterDebugInterceptor
extends
DebugInterceptor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
"beetlsql"
);
@Override
@Override
protected
boolean
isSimple
(
String
sqlId
)
{
protected
boolean
isSimple
(
String
sqlId
)
{
if
(
sqlId
.
indexOf
(
"_gen_"
)
!=
-
1
)
{
if
(
sqlId
.
indexOf
(
"_gen_"
)
!=
-
1
)
{
...
@@ -177,8 +189,8 @@ public class BeetlConf {
...
@@ -177,8 +189,8 @@ public class BeetlConf {
}
}
@Override
@Override
protected
void
simpleOut
(
InterceptorContext
ctx
)
{
protected
void
println
(
String
str
)
{
return
;
logger
.
info
(
str
)
;
}
}
}
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/util/beetl/MappingFunction.java
View file @
f610086a
...
@@ -24,6 +24,11 @@ public class MappingFunction implements Function {
...
@@ -24,6 +24,11 @@ public class MappingFunction implements Function {
@Override
@Override
public
Object
call
(
Object
[]
paras
,
Context
ctx
)
{
public
Object
call
(
Object
[]
paras
,
Context
ctx
)
{
String
currentSqlId
=
ctx
.
getGlobal
(
"_id"
).
toString
();
Object
cache
=
CacheUtil
.
get
(
currentSqlId
);
if
(
ObjectUtil
.
isNotNull
(
cache
)){
return
StrUtil
.
EMPTY
;
}
String
sqlSegmentId
=
(
String
)
paras
[
0
];
String
sqlSegmentId
=
(
String
)
paras
[
0
];
Map
inputParas
=
ctx
.
globalVar
;
Map
inputParas
=
ctx
.
globalVar
;
if
(
paras
.
length
==
2
)
{
if
(
paras
.
length
==
2
)
{
...
@@ -39,7 +44,7 @@ public class MappingFunction implements Function {
...
@@ -39,7 +44,7 @@ public class MappingFunction implements Function {
String
file
=
this
.
getParentId
(
ctx
);
String
file
=
this
.
getParentId
(
ctx
);
SQLResult
result
;
SQLResult
result
;
if
(
sqlSegmentId
.
indexOf
(
"."
)==-
1
){
if
(
sqlSegmentId
.
indexOf
(
"."
)==-
1
){
/*
证明是
同一个md文件的sql段*/
/*同一个md文件的sql段*/
result
=
sm
.
getSQLResult
(
file
+
"."
+
sqlSegmentId
,
inputParas
,
ctx
);
result
=
sm
.
getSQLResult
(
file
+
"."
+
sqlSegmentId
,
inputParas
,
ctx
);
}
else
{
}
else
{
/*另一个md文件的sql段*/
/*另一个md文件的sql段*/
...
@@ -56,7 +61,7 @@ public class MappingFunction implements Function {
...
@@ -56,7 +61,7 @@ public class MappingFunction implements Function {
result
.
jdbcSql
,
inputParas
,
STRING_WRITER
,
STRING_TEMPLATE_RESOURCE_LOADER
);
result
.
jdbcSql
,
inputParas
,
STRING_WRITER
,
STRING_TEMPLATE_RESOURCE_LOADER
);
if
(
MapUtil
.
isNotEmpty
(
rsMap
))
{
if
(
MapUtil
.
isNotEmpty
(
rsMap
))
{
String
currentSqlId
=
ctx
.
getGlobal
(
"_id"
).
toString
();
/*TODO 待移到非测试代码中,重写为保持GridMapping,而不是保持Map*/
CacheUtil
.
put
(
currentSqlId
,
rsMap
.
values
().
stream
().
findFirst
().
get
());
CacheUtil
.
put
(
currentSqlId
,
rsMap
.
values
().
stream
().
findFirst
().
get
());
}
}
...
...
plus-admin/admin-core/src/main/resources/sql/core/coreFunction.md
View file @
f610086a
...
@@ -14,8 +14,9 @@ select router.id,
...
@@ -14,8 +14,9 @@ select router.id,
from
core_function
router
from
core_function
router
left
join
core_menu
menu
on
menu
.
FUNCTION_ID
=
router
.
ID
left
join
core_menu
menu
on
menu
.
FUNCTION_ID
=
router
.
ID
left
join
core_role_menu
crm
on
crm
.
MENU_ID
=
menu
.
id
left
join
core_role_menu
crm
on
crm
.
MENU_ID
=
menu
.
id
order
by
router
.
ID
#
text
(
mapping
(
"RouteMapping"
))
#
order
by
router
.
ID
```
```
>- mapping("RouteMapping");
RouteMapping
RouteMapping
===
===
...
...
Write
Preview
Supports
Markdown
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