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
143d37ee
"src/vscode:/vscode.git/clone" did not exist on "653c403181f10cf48843a24ac57c8754d73b8db8"
Commit
143d37ee
authored
Nov 27, 2021
by
trumansdo
Browse files
更换至beetlsql3最新版本
parent
398a4c6b
Changes
170
Hide whitespace changes
Inline
Side-by-side
plus-admin/admin-console/src/test/java/entity/CmsBlog.java
View file @
143d37ee
package
entity
;
package
entity
;
import
lombok.Data
;
import
lombok.Data
;
import
org.beetl.sql.
core.
annotat
oin
.AutoID
;
import
org.beetl.sql.annotat
ion.entity
.AutoID
;
@Data
@Data
public
class
CmsBlog
{
public
class
CmsBlog
{
@AutoID
@AutoID
private
Long
id
;
private
Long
id
;
private
String
title
;
private
String
title
;
private
String
content
;
private
String
content
;
private
Long
createUserId
;
private
Long
createUserId
;
private
FunctionTypeEnum
type
;
private
FunctionTypeEnum
type
;
private
Long
createTime
;
private
Long
createTime
;
}
}
plus-admin/admin-console/src/test/java/entity/FunctionTypeEnum.java
View file @
143d37ee
...
@@ -3,14 +3,14 @@ package entity;
...
@@ -3,14 +3,14 @@ package entity;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonCreator
;
import
com.fasterxml.jackson.annotation.JsonValue
;
import
com.fasterxml.jackson.annotation.JsonValue
;
import
com.ibeetl.admin.core.util.enums.DictTypeEnum
;
import
com.ibeetl.admin.core.util.enums.DictTypeEnum
;
import
org.beetl.sql.
core.
annotat
oin.EnumMapping
;
import
org.beetl.sql.annotat
ion.entity.EnumValue
;
@EnumMapping
(
"value"
)
public
enum
FunctionTypeEnum
implements
DictTypeEnum
<
FunctionTypeEnum
>
{
public
enum
FunctionTypeEnum
implements
DictTypeEnum
<
FunctionTypeEnum
>
{
FN0
(
"FN0"
,
"导航访问"
,
"function_type"
),
FN0
(
"FN0"
,
"导航访问"
,
"function_type"
),
FN1
(
"FN1"
,
"功能访问"
,
"function_type"
),
FN1
(
"FN1"
,
"功能访问"
,
"function_type"
),
FN2
(
"FN2"
,
"菜单访问"
,
"function_type"
);
FN2
(
"FN2"
,
"菜单访问"
,
"function_type"
);
@EnumValue
private
String
value
;
private
String
value
;
private
String
name
;
private
String
name
;
...
...
plus-admin/admin-core/pom.xml
View file @
143d37ee
...
@@ -53,8 +53,8 @@
...
@@ -53,8 +53,8 @@
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.ibeetl
</groupId>
<groupId>
com.ibeetl
</groupId>
<artifactId>
beetl-framework
-starter
</artifactId>
<artifactId>
sql-springboot
-starter
</artifactId>
<version>
1.2.20.
RELEASE
</version>
<version>
3.12.0-
RELEASE
</version>
</dependency>
</dependency>
<!-- Log4j2 异步支持 -->
<!-- Log4j2 异步支持 -->
<dependency>
<dependency>
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/annotation/Dict.java
View file @
143d37ee
...
@@ -5,8 +5,6 @@ import java.lang.annotation.Retention;
...
@@ -5,8 +5,6 @@ import java.lang.annotation.Retention;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.RetentionPolicy
;
import
java.lang.annotation.Target
;
import
java.lang.annotation.Target
;
import
com.ibeetl.admin.core.util.enums.CoreDictType
;
/**
/**
* 描述: 用来标注词典字段
* 描述: 用来标注词典字段
*
*
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/CacheConfig.java
View file @
143d37ee
...
@@ -3,12 +3,9 @@ package com.ibeetl.admin.core.conf;
...
@@ -3,12 +3,9 @@ package com.ibeetl.admin.core.conf;
import
java.io.UnsupportedEncodingException
;
import
java.io.UnsupportedEncodingException
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.Callable
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.cache.Cache
;
import
org.springframework.cache.Cache
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.data.redis.cache.RedisCache
;
import
org.springframework.data.redis.cache.RedisCache
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheConfiguration
;
import
org.springframework.data.redis.cache.RedisCacheManager
;
import
org.springframework.data.redis.cache.RedisCacheManager
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/CustomErrorController.java
View file @
143d37ee
...
@@ -183,9 +183,15 @@ public class CustomErrorController extends AbstractErrorController {
...
@@ -183,9 +183,15 @@ public class CustomErrorController extends AbstractErrorController {
}
}
/**
/**
* 提取errorAttributes 中的错误信息,包括:<br> timestamp:时间<br> status:http响应码<br> error:响应码的原因<br>
* 提取errorAttributes 中的错误信息,包括:<br>
* exception:异常类名<br> errors:controller可能的校验错误对象集合<br> message:controller的错误信息<br> trace:
* timestamp:时间<br>
* 异常的堆栈信息<br> path:请求路径<br>
* status:http响应码<br>
* error:响应码的原因<br>
* exception:异常类名<br>
* errors:controller可能的校验错误对象集合<br>
* message:controller的错误信息<br>
* trace: 异常的堆栈信息<br>
* path:请求路径<br>
*/
*/
protected
Map
<
String
,
Object
>
wrapErrorInfo
(
HttpServletRequest
request
)
{
protected
Map
<
String
,
Object
>
wrapErrorInfo
(
HttpServletRequest
request
)
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/DataSourceConfig.java
View file @
143d37ee
package
com.ibeetl.admin.core.conf
;
package
com.ibeetl.admin.core.conf
;
import
com.zaxxer.hikari.HikariDataSource
;
import
javax.sql.DataSource
;
import
javax.sql.DataSource
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.Environment
;
import
com.zaxxer.hikari.HikariDataSource
;
@Configuration
@Configuration
public
class
DataSourceConfig
{
public
class
DataSourceConfig
{
@Bean
(
name
=
"baseDataSource"
)
@Bean
(
name
=
"baseDataSource"
)
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/FileSystemConfig.java
View file @
143d37ee
package
com.ibeetl.admin.core.conf
;
package
com.ibeetl.admin.core.conf
;
import
com.ibeetl.admin.core.file.FileService
;
import
com.ibeetl.admin.core.file.LocalFileService
;
import
java.io.File
;
import
java.io.File
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
...
@@ -10,9 +11,6 @@ import org.springframework.context.annotation.Bean;
...
@@ -10,9 +11,6 @@ import org.springframework.context.annotation.Bean;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.Environment
;
import
com.ibeetl.admin.core.file.FileService
;
import
com.ibeetl.admin.core.file.LocalFileService
;
@Configuration
@Configuration
@ConditionalOnMissingBean
(
FileService
.
class
)
@ConditionalOnMissingBean
(
FileService
.
class
)
public
class
FileSystemConfig
{
public
class
FileSystemConfig
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/PasswordConfig.java
View file @
143d37ee
package
com.ibeetl.admin.core.conf
;
package
com.ibeetl.admin.core.conf
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnBean
;
import
com.ibeetl.admin.core.conf.PasswordConfig.PasswordEncryptService
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
com.ibeetl.admin.core.conf.PasswordConfig.PasswordEncryptService
;
/**
/**
* 描述: 密码工具,系统默认采用明文存储,可以自动装配一个加密的
* 描述: 密码工具,系统默认采用明文存储,可以自动装配一个加密的
*
*
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/RbacAnnotationConfig.java
View file @
143d37ee
package
com.ibeetl.admin.core.conf
;
package
com.ibeetl.admin.core.conf
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.ibeetl.admin.core.annotation.Function
;
import
com.ibeetl.admin.core.entity.CoreAudit
;
import
com.ibeetl.admin.core.entity.CoreFunction
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.service.CoreAuditService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.FunctionLocal
;
import
com.ibeetl.admin.core.util.RequestContextThreadLocal
;
import
com.ibeetl.admin.core.util.PlatformException
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Method
;
import
java.util.Date
;
import
java.util.Date
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.Log
;
import
org.apache.commons.logging.LogFactory
;
import
org.apache.commons.logging.LogFactory
;
...
@@ -13,17 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
...
@@ -13,17 +22,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import
org.springframework.core.env.Environment
;
import
org.springframework.core.env.Environment
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.ibeetl.admin.core.annotation.Function
;
import
com.ibeetl.admin.core.entity.CoreAudit
;
import
com.ibeetl.admin.core.entity.CoreFunction
;
import
com.ibeetl.admin.core.entity.CoreUser
;
import
com.ibeetl.admin.core.service.CoreAuditService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.FunctionLocal
;
import
com.ibeetl.admin.core.util.HttpRequestLocal
;
import
com.ibeetl.admin.core.util.PlatformException
;
/**
/**
* 在springboot-plus中,有两种权限:功能点(或者说一个个controller方法)和数据权限。
* 在springboot-plus中,有两种权限:功能点(或者说一个个controller方法)和数据权限。
* 菜单实际上也是绑定在了功能点中
* 菜单实际上也是绑定在了功能点中
...
@@ -34,7 +32,6 @@ import com.ibeetl.admin.core.util.PlatformException;
...
@@ -34,7 +32,6 @@ import com.ibeetl.admin.core.util.PlatformException;
public
class
RbacAnnotationConfig
{
public
class
RbacAnnotationConfig
{
@Autowired
CorePlatformService
platformService
;
@Autowired
CorePlatformService
platformService
;
@Autowired
CoreAuditService
sysAuditService
;
@Autowired
CoreAuditService
sysAuditService
;
@Autowired
HttpRequestLocal
httpRequestLocal
;
@Autowired
Environment
env
;
@Autowired
Environment
env
;
...
@@ -114,7 +111,7 @@ public class RbacAnnotationConfig {
...
@@ -114,7 +111,7 @@ public class RbacAnnotationConfig {
audit
.
setUserName
(
user
.
getName
());
audit
.
setUserName
(
user
.
getName
());
audit
.
setMessage
(
msg
);
audit
.
setMessage
(
msg
);
audit
.
setIp
(
http
RequestLocal
.
getRequestI
P
());
audit
.
setIp
(
Request
ContextThread
Local
.
getRequestI
p
());
sysAuditService
.
save
(
audit
);
sysAuditService
.
save
(
audit
);
}
}
...
@@ -122,7 +119,7 @@ public class RbacAnnotationConfig {
...
@@ -122,7 +119,7 @@ public class RbacAnnotationConfig {
if
(
functionCode
.
startsWith
(
"audit."
))
{
if
(
functionCode
.
startsWith
(
"audit."
))
{
return
true
;
return
true
;
}
}
String
uri
=
http
RequestLocal
.
getRequestU
RI
();
String
uri
=
Request
ContextThread
Local
.
getRequestU
ri
();
if
(
uri
!=
null
&&
uri
.
endsWith
(
"/index/condition.json"
))
{
if
(
uri
!=
null
&&
uri
.
endsWith
(
"/index/condition.json"
))
{
return
true
;
return
true
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/RbacDataAccessConfig.java
View file @
143d37ee
package
com.ibeetl.admin.core.conf
;
package
com.ibeetl.admin.core.conf
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.da.DefaultDataAccessFactory
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.ApplicationContext
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Configuration
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.da.DefaultDataAccessFactory
;
/** 数据权限,可以自动装配 */
/** 数据权限,可以自动装配 */
@Configuration
@Configuration
public
class
RbacDataAccessConfig
{
public
class
RbacDataAccessConfig
{
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/SpringConfiguration.java
View file @
143d37ee
...
@@ -3,7 +3,6 @@ package com.ibeetl.admin.core.conf;
...
@@ -3,7 +3,6 @@ package com.ibeetl.admin.core.conf;
import
javax.validation.Validation
;
import
javax.validation.Validation
;
import
javax.validation.Validator
;
import
javax.validation.Validator
;
import
javax.validation.ValidatorFactory
;
import
javax.validation.ValidatorFactory
;
import
org.apache.commons.digester3.RegexRules
;
import
org.hibernate.validator.HibernateValidator
;
import
org.hibernate.validator.HibernateValidator
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.web.servlet.error.DefaultErrorAttributes
;
import
org.springframework.boot.web.servlet.error.DefaultErrorAttributes
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/SpringWebMvcConfigurer.java
View file @
143d37ee
...
@@ -14,8 +14,6 @@ import com.ibeetl.admin.core.conf.springmvc.interceptor.HttpRequestInterceptor;
...
@@ -14,8 +14,6 @@ import com.ibeetl.admin.core.conf.springmvc.interceptor.HttpRequestInterceptor;
import
com.ibeetl.admin.core.conf.springmvc.interceptor.SessionInterceptor
;
import
com.ibeetl.admin.core.conf.springmvc.interceptor.SessionInterceptor
;
import
com.ibeetl.admin.core.conf.springmvc.resolve.RequestBodyPlusProcessor
;
import
com.ibeetl.admin.core.conf.springmvc.resolve.RequestBodyPlusProcessor
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
com.ibeetl.admin.core.service.CoreUserService
;
import
java.nio.charset.Charset
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
...
@@ -29,7 +27,6 @@ import org.springframework.format.FormatterRegistry;
...
@@ -29,7 +27,6 @@ import org.springframework.format.FormatterRegistry;
import
org.springframework.format.datetime.DateFormatter
;
import
org.springframework.format.datetime.DateFormatter
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.MediaType
;
import
org.springframework.http.converter.HttpMessageConverter
;
import
org.springframework.http.converter.HttpMessageConverter
;
import
org.springframework.http.converter.StringHttpMessageConverter
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.method.support.HandlerMethodArgumentResolver
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
import
org.springframework.web.servlet.config.annotation.CorsRegistry
;
...
@@ -59,12 +56,6 @@ public class SpringWebMvcConfigurer implements WebMvcConfigurer, InitializingBea
...
@@ -59,12 +56,6 @@ public class SpringWebMvcConfigurer implements WebMvcConfigurer, InitializingBea
@Autowired
@Autowired
private
CoreUserService
userService
;
private
CoreUserService
userService
;
@Autowired
private
BeetlGroupUtilConfiguration
beetlGroupUtilConfiguration
;
@Autowired
private
GroupTemplate
groupTemplate
;
@Autowired
@Autowired
private
RequestMappingHandlerAdapter
adapter
;
private
RequestMappingHandlerAdapter
adapter
;
...
@@ -139,14 +130,6 @@ public class SpringWebMvcConfigurer implements WebMvcConfigurer, InitializingBea
...
@@ -139,14 +130,6 @@ public class SpringWebMvcConfigurer implements WebMvcConfigurer, InitializingBea
@Override
@Override
public
void
afterPropertiesSet
()
{
public
void
afterPropertiesSet
()
{
this
.
mvcTestPath
=
env
.
getProperty
(
"mvc.test.path"
);
Map
<
String
,
Object
>
var
=
new
HashMap
<>(
5
);
String
appName
=
env
.
getProperty
(
"app.name"
);
if
(
appName
==
null
)
{
var
.
put
(
"appName"
,
DEFAULT_APP_NAME
);
}
var
.
put
(
"jsVer"
,
System
.
currentTimeMillis
());
groupTemplate
.
setSharedVars
(
var
);
/*自定义参数解析器配置,自定义应该优先级最高*/
/*自定义参数解析器配置,自定义应该优先级最高*/
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
=
CollUtil
.
newArrayList
();
List
<
HandlerMethodArgumentResolver
>
argumentResolvers
=
CollUtil
.
newArrayList
();
argumentResolvers
.
add
(
new
RequestBodyPlusProcessor
(
adapter
.
getMessageConverters
()));
argumentResolvers
.
add
(
new
RequestBodyPlusProcessor
(
adapter
.
getMessageConverters
()));
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/BeetlConf.java
View file @
143d37ee
package
com.ibeetl.admin.core.conf.beetl
;
package
com.ibeetl.admin.core.conf.beetl
;
import
cn.hutool.core.util.CharsetUtil
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
com.ibeetl.admin.core.conf.JacksonConfig
;
import
com.ibeetl.admin.core.conf.JacksonConfig
;
import
com.ibeetl.admin.core.conf.beetl.handler.DateTypeHandler
;
import
com.ibeetl.admin.core.conf.beetl.handler.DateTypeHandler
;
...
@@ -8,7 +7,6 @@ import com.ibeetl.admin.core.conf.beetl.handler.DictTypeHandler;
...
@@ -8,7 +7,6 @@ import com.ibeetl.admin.core.conf.beetl.handler.DictTypeHandler;
import
com.ibeetl.admin.core.conf.beetl.handler.ZonedDateTimeTypeHandler
;
import
com.ibeetl.admin.core.conf.beetl.handler.ZonedDateTimeTypeHandler
;
import
com.ibeetl.admin.core.conf.beetl.processor.JsonBeanProcessor
;
import
com.ibeetl.admin.core.conf.beetl.processor.JsonBeanProcessor
;
import
com.ibeetl.admin.core.entity.DictType
;
import
com.ibeetl.admin.core.entity.DictType
;
import
com.ibeetl.admin.core.rbac.DataAccess
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.rbac.DataAccessFactory
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.service.CorePlatformService
;
import
com.ibeetl.admin.core.util.beetl.DictQueryFunction
;
import
com.ibeetl.admin.core.util.beetl.DictQueryFunction
;
...
@@ -20,29 +18,23 @@ import com.ibeetl.admin.core.util.beetl.OrgFunction;
...
@@ -20,29 +18,23 @@ import com.ibeetl.admin.core.util.beetl.OrgFunction;
import
com.ibeetl.admin.core.util.beetl.RoleFunction
;
import
com.ibeetl.admin.core.util.beetl.RoleFunction
;
import
com.ibeetl.admin.core.util.beetl.SearchCondtionFunction
;
import
com.ibeetl.admin.core.util.beetl.SearchCondtionFunction
;
import
com.ibeetl.admin.core.util.beetl.SysFunctionTreeFunction
;
import
com.ibeetl.admin.core.util.beetl.SysFunctionTreeFunction
;
import
com.ibeetl.admin.core.util.beetl.UUIDFunction
;
import
com.ibeetl.admin.core.util.beetl.XXSDefenderFormat
;
import
com.ibeetl.admin.core.web.query.QueryParser
;
import
com.ibeetl.starter.BeetlSqlMutipleSourceCustomize
;
import
com.ibeetl.starter.BeetlTemplateCustomize
;
import
com.ibeetl.starter.ObjectMapperJsonUtil
;
import
java.io.UnsupportedEncodingException
;
import
java.sql.JDBCType
;
import
java.sql.JDBCType
;
import
java.time.ZonedDateTime
;
import
java.time.ZonedDateTime
;
import
java.util.Date
;
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.beetl.core.Context
;
import
org.beetl.core.Function
;
import
org.beetl.core.GroupTemplate
;
import
org.beetl.core.GroupTemplate
;
import
org.beetl.ext.simulate.JsonUtil
;
import
org.beetl.ext.simulate.WebSimulate
;
import
org.beetl.ext.simulate.WebSimulate
;
import
org.beetl.sql.core.Interceptor
;
import
org.beetl.sql.core.Interceptor
;
import
org.beetl.sql.core.InterceptorContext
;
import
org.beetl.sql.core.InterceptorContext
;
import
org.beetl.sql.core.SqlId
;
import
org.beetl.sql.core.engine.SQLParameter
;
import
org.beetl.sql.core.engine.SQLParameter
;
import
org.beetl.sql.core.engine.SQLPlaceholderST
;
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.beetl.sql.starter.SQLManagerCustomize
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
@@ -55,54 +47,58 @@ import org.springframework.core.env.Environment;
...
@@ -55,54 +47,58 @@ import org.springframework.core.env.Environment;
@Configuration
@Configuration
@AutoConfigureAfter
(
JacksonConfig
.
class
)
@AutoConfigureAfter
(
JacksonConfig
.
class
)
public
class
BeetlConf
{
public
class
BeetlConf
{
@Autowired
Environment
env
;
@Autowired
CorePlatformService
platFormService
;
@Autowired
OrgFunction
orgFunction
;
@Autowired
Environment
env
;
@Autowired
SysFunctionTreeFunction
sysFunctionTreeFunction
;
@Autowired
CorePlatformService
platFormService
;
@Autowired
DictQueryFunction
dictDownQueryFunction
;
@Autowired
OrgFunction
orgFunction
;
@Autowired
RoleFunction
roleFunction
;
@Autowired
@Autowired
FileFunction
fil
eFunction
;
SysFunctionTreeFunction
sysFunctionTre
eFunction
;
@Autowired
SearchCondtionFunction
searchCondtionFunction
;
@Autowired
DictQueryFunction
dictDownQueryFunction
;
@Autowired
DataAccessFactory
dataAccessFactory
;
@Autowired
RoleFunction
roleFunction
;
@Autowired
ApplicationContext
applicationContext
;
@Autowired
FileFunction
fileFunction
;
@Autowired
FunFunction
funFunction
;
@Autowired
SearchCondtionFunction
searchCondtionFunction
;
@Autowired
FunAccessUrlFunction
funAccessUrlFunction
;
@Autowired
DataAccessFactory
dataAccessFactory
;
@Autowired
MenuFunction
menuFunction
;
@Autowired
ApplicationContext
applicationContext
;
@Bean
@Autowired
public
WebSimulate
getWebSimulate
(
GroupTemplate
gt
,
ObjectMapper
objectMapper
)
{
FunFunction
funFunction
;
return
new
WebSimulate
(
gt
,
new
ObjectMapperJsonUtil
(
objectMapper
))
{
@Override
@Autowired
protected
String
getRenderPath
(
HttpServletRequest
request
)
{
FunAccessUrlFunction
funAccessUrlFunction
;
String
defaultRenderPath
=
request
.
getServletPath
();
return
defaultRenderPath
.
replace
(
".do"
,
".html"
);
@Autowired
}
MenuFunction
menuFunction
;
};
}
/**
/**
* 对BeetlSql 的多数据源中每个数据源单独自定义配置
* 对BeetlSql 的多数据源中每个数据源单独自定义配置
*
* @return
*/
*/
@Bean
@Bean
public
BeetlSqlMutipleSourceCustomize
beetlSqlMutipleSourceCustomize
()
{
public
SQLManagerCustomize
beetlSqlMutipleSourceCustomize
()
{
SQLPlaceholderST
.
textFunList
.
add
(
"mapping"
);
SQLPlaceholderST
.
textFunList
.
add
(
"mapping"
);
return
(
dataSource
,
manager
)
->
{
return
(
dataSource
,
manager
)
->
{
/*bean转换处理器*/
/*bean转换处理器*/
JsonBeanProcessor
jsonBeanProcessor
=
new
JsonBeanProcessor
(
manager
);
//
JsonBeanProcessor jsonBeanProcessor = new JsonBeanProcessor();
manager
.
setDefaultBeanProcessors
(
jsonBeanProcessor
);
//
manager.setDefaultBeanProcessors(jsonBeanProcessor);
/*类型处理器*/
/*类型处理器*/
Map
<
Class
,
JavaSqlTypeHandler
>
typeHandlerMap
=
Map
<
Class
,
JavaSqlTypeHandler
>
typeHandlerMap
=
manager
.
getDefaultBeanProcessors
().
getHandlers
();
manager
.
getDefaultBeanProcessors
().
getHandlers
();
...
@@ -113,89 +109,19 @@ public class BeetlConf {
...
@@ -113,89 +109,19 @@ public class BeetlConf {
typeHandlerMap
.
put
(
DictType
.
class
,
new
DictTypeHandler
());
typeHandlerMap
.
put
(
DictType
.
class
,
new
DictTypeHandler
());
/*拦截器*/
/*拦截器*/
manager
.
setInters
(
manager
.
setInters
(
new
Interceptor
[]
{
new
StarterDebugInterceptor
(),
new
TypeHandlerInterceptor
()});
new
Interceptor
[]{
new
StarterDebugInterceptor
(),
new
TypeHandlerInterceptor
()});
};
}
/**
* Beetl模板引擎的自定义配置
*
* @return
*/
@Bean
public
BeetlTemplateCustomize
beetlTemplateCustomize
()
{
return
groupTemplate
->
{
groupTemplate
.
registerFunctionPackage
(
"platform"
,
platFormService
);
groupTemplate
.
registerFunctionPackage
(
"queryCondtion"
,
new
QueryParser
());
groupTemplate
.
registerFunction
(
"core.orgName"
,
orgFunction
);
groupTemplate
.
registerFunction
(
"core.functionName"
,
funFunction
);
groupTemplate
.
registerFunction
(
"core.funAccessUrl"
,
funAccessUrlFunction
);
groupTemplate
.
registerFunction
(
"core.menuName"
,
menuFunction
);
groupTemplate
.
registerFunction
(
"core.searchCondtion"
,
searchCondtionFunction
);
groupTemplate
.
registerFunction
(
"core.roles"
,
roleFunction
);
groupTemplate
.
registerFunction
(
"core.file"
,
fileFunction
);
groupTemplate
.
registerFormat
(
"xss"
,
new
XXSDefenderFormat
());
groupTemplate
.
registerFunction
(
"uuid"
,
new
UUIDFunction
());
groupTemplate
.
registerFunctionPackage
(
"dict"
,
dictDownQueryFunction
);
// 模板页面判断是否有按钮权限,比如canAccess
groupTemplate
.
registerFunction
(
"canAccess"
,
(
paras
,
ctx
)
->
{
Long
userId
=
platFormService
.
getCurrentUser
().
getId
();
Long
orgId
=
platFormService
.
getCurrentOrgId
();
String
functionCode
=
(
String
)
paras
[
0
];
return
platFormService
.
canAcessFunction
(
userId
,
orgId
,
functionCode
);
});
groupTemplate
.
registerFunction
(
"env"
,
new
Function
()
{
@Override
public
String
call
(
Object
[]
paras
,
Context
ctx
)
{
String
key
=
(
String
)
paras
[
0
];
String
value
=
env
.
getProperty
(
key
);
if
(
value
!=
null
)
{
return
getStr
(
value
);
}
if
(
paras
.
length
==
2
)
{
return
(
String
)
paras
[
1
];
}
return
null
;
}
protected
String
getStr
(
String
str
)
{
try
{
return
new
String
(
str
.
getBytes
(
CharsetUtil
.
ISO_8859_1
),
CharsetUtil
.
UTF_8
);
}
catch
(
UnsupportedEncodingException
e
)
{
throw
new
RuntimeException
(
e
);
}
}
});
groupTemplate
.
registerFunction
(
"dataAccessList"
,
new
Function
()
{
@Override
public
List
<
DataAccess
>
call
(
Object
[]
paras
,
Context
ctx
)
{
return
dataAccessFactory
.
all
();
}
});
};
};
}
}
static
class
StarterDebugInterceptor
extends
DebugInterceptor
{
static
class
StarterDebugInterceptor
extends
DebugInterceptor
{
private
Logger
logger
=
LoggerFactory
.
getLogger
(
"beetlsql"
);
private
Logger
logger
=
LoggerFactory
.
getLogger
(
"beetlsql"
);
/**
/**
* 将内置生成的SQL排除打印
* 将内置生成的SQL排除打印
*
* @param sqlId
* @return
*/
*/
@Override
@Override
protected
boolean
isSimple
(
S
tring
sqlId
)
{
protected
boolean
isSimple
(
S
qlId
sqlId
)
{
// if (sqlId.indexOf("_gen_") != -1) {
// if (sqlId.indexOf("_gen_") != -1) {
// return true;
// return true;
// } else {
// } else {
...
@@ -203,7 +129,9 @@ public class BeetlConf {
...
@@ -203,7 +129,9 @@ public class BeetlConf {
// }
// }
return
super
.
isSimple
(
sqlId
);
return
super
.
isSimple
(
sqlId
);
}
}
}
}
}
}
/**
/**
...
@@ -216,7 +144,8 @@ class TypeHandlerInterceptor implements Interceptor {
...
@@ -216,7 +144,8 @@ class TypeHandlerInterceptor implements Interceptor {
@Override
@Override
public
void
before
(
InterceptorContext
ctx
)
{
public
void
before
(
InterceptorContext
ctx
)
{
List
<
SQLParameter
>
paras
=
ctx
.
getParas
();
List
<
SQLParameter
>
paras
=
ctx
.
getExecuteContext
().
sqlResult
.
jdbcPara
;
for
(
SQLParameter
para
:
paras
)
{
for
(
SQLParameter
para
:
paras
)
{
if
(
para
.
value
instanceof
Date
)
{
if
(
para
.
value
instanceof
Date
)
{
para
.
value
=
((
Date
)
para
.
value
).
getTime
();
para
.
value
=
((
Date
)
para
.
value
).
getTime
();
...
@@ -226,8 +155,13 @@ class TypeHandlerInterceptor implements Interceptor {
...
@@ -226,8 +155,13 @@ class TypeHandlerInterceptor implements Interceptor {
}
}
@Override
@Override
public
void
after
(
InterceptorContext
ctx
)
{}
public
void
after
(
InterceptorContext
ctx
)
{
}
@Override
@Override
public
void
exception
(
InterceptorContext
ctx
,
Exception
ex
)
{}
public
void
exception
(
InterceptorContext
ctx
,
Exception
ex
)
{
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/handler/DateTypeHandler.java
View file @
143d37ee
...
@@ -8,11 +8,13 @@ import java.sql.Types;
...
@@ -8,11 +8,13 @@ import java.sql.Types;
import
java.time.Instant
;
import
java.time.Instant
;
import
java.util.Date
;
import
java.util.Date
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.TypeParameter
;
import
org.beetl.sql.core.mapping.type.
Read
TypeParameter
;
public
class
DateTypeHandler
extends
JavaSqlTypeHandler
{
public
class
DateTypeHandler
extends
JavaSqlTypeHandler
{
@Override
@Override
public
Object
getValue
(
TypeParameter
typePara
)
throws
SQLException
{
public
Object
getValue
(
ReadTypeParameter
typePara
)
throws
SQLException
{
if
(
ObjectUtil
.
isNull
(
typePara
.
getRs
().
getObject
(
typePara
.
getIndex
())))
{
if
(
ObjectUtil
.
isNull
(
typePara
.
getRs
().
getObject
(
typePara
.
getIndex
())))
{
return
null
;
return
null
;
}
}
...
@@ -27,4 +29,5 @@ public class DateTypeHandler extends JavaSqlTypeHandler {
...
@@ -27,4 +29,5 @@ public class DateTypeHandler extends JavaSqlTypeHandler {
return
null
;
return
null
;
}
}
}
}
}
}
\ No newline at end of file
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/handler/DictTypeHandler.java
View file @
143d37ee
...
@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
...
@@ -4,7 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
import
com.ibeetl.admin.core.entity.DictType
;
import
com.ibeetl.admin.core.entity.DictType
;
import
java.sql.SQLException
;
import
java.sql.SQLException
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.TypeParameter
;
import
org.beetl.sql.core.mapping.type.
Read
TypeParameter
;
/**
/**
* 字典字段的映射处理器
* 字典字段的映射处理器
...
@@ -12,7 +12,7 @@ import org.beetl.sql.core.mapping.type.TypeParameter;
...
@@ -12,7 +12,7 @@ import org.beetl.sql.core.mapping.type.TypeParameter;
public
class
DictTypeHandler
extends
JavaSqlTypeHandler
{
public
class
DictTypeHandler
extends
JavaSqlTypeHandler
{
@Override
@Override
public
Object
getValue
(
TypeParameter
typePara
)
throws
SQLException
{
public
Object
getValue
(
Read
TypeParameter
typePara
)
throws
SQLException
{
if
(
ObjectUtil
.
isNull
(
typePara
.
getRs
().
getObject
(
typePara
.
getIndex
())))
{
if
(
ObjectUtil
.
isNull
(
typePara
.
getRs
().
getObject
(
typePara
.
getIndex
())))
{
return
null
;
return
null
;
...
...
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/handler/MappingFunction.java
View file @
143d37ee
...
@@ -14,15 +14,20 @@ import org.beetl.core.GroupTemplate;
...
@@ -14,15 +14,20 @@ import org.beetl.core.GroupTemplate;
import
org.beetl.core.resource.StringTemplateResourceLoader
;
import
org.beetl.core.resource.StringTemplateResourceLoader
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.SQLManager
;
import
org.beetl.sql.core.SQLResult
;
import
org.beetl.sql.core.SQLResult
;
import
org.beetl.sql.core.SqlId
;
import
org.beetl.sql.core.engine.template.BeetlTemplateContext
;
import
org.beetl.sql.core.engine.template.BeetlTemplateEngine
;
public
class
MappingFunction
implements
Function
{
public
class
MappingFunction
implements
Function
{
private
static
final
StringWriter
STRING_WRITER
=
new
StringWriter
();
private
static
final
StringWriter
STRING_WRITER
=
new
StringWriter
();
private
static
final
StringTemplateResourceLoader
STRING_TEMPLATE_RESOURCE_LOADER
=
private
static
final
StringTemplateResourceLoader
STRING_TEMPLATE_RESOURCE_LOADER
=
new
StringTemplateResourceLoader
();
new
StringTemplateResourceLoader
();
@Override
@Override
public
Object
call
(
Object
[]
paras
,
Context
ctx
)
{
public
Object
call
(
Object
[]
paras
,
Context
ctx
)
{
String
currentSqlId
=
ctx
.
getGlobal
(
"_id"
).
toString
();
String
currentSqlId
=
ctx
.
getGlobal
(
"_id"
).
toString
();
Object
cache
=
CacheUtil
.
get
(
currentSqlId
);
Object
cache
=
CacheUtil
.
get
(
currentSqlId
);
if
(
ObjectUtil
.
isNotNull
(
cache
))
{
if
(
ObjectUtil
.
isNotNull
(
cache
))
{
...
@@ -44,17 +49,19 @@ public class MappingFunction implements Function {
...
@@ -44,17 +49,19 @@ public class MappingFunction implements Function {
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
(
SqlId
.
of
(
file
,
sqlSegmentId
),
inputParas
,
new
BeetlTemplateContext
(
ctx
));
}
else
{
}
else
{
/*另一个md文件的sql段*/
/*另一个md文件的sql段*/
result
=
sm
.
getSQLResult
(
sqlSegmentId
,
inputParas
,
ctx
);
result
=
sm
.
getSQLResult
(
SqlId
.
of
(
sqlSegmentId
)
,
inputParas
,
new
BeetlTemplateContext
(
ctx
)
)
;
}
}
// 追加参数
// 追加参数
list
.
addAll
(
result
.
jdbcPara
);
list
.
addAll
(
result
.
jdbcPara
);
ctx
.
set
(
"_paras"
,
list
);
ctx
.
set
(
"_paras"
,
list
);
GroupTemplate
groupTemplate
=
sm
.
getBeetl
().
getGroupTemplate
();
GroupTemplate
groupTemplate
=
((
BeetlTemplateEngine
)
sm
.
getSqlTemplateEngine
()).
getBeetl
()
.
getGroupTemplate
();
Map
rsMap
=
Map
rsMap
=
groupTemplate
.
runScript
(
groupTemplate
.
runScript
(
result
.
jdbcSql
,
inputParas
,
STRING_WRITER
,
STRING_TEMPLATE_RESOURCE_LOADER
);
result
.
jdbcSql
,
inputParas
,
STRING_WRITER
,
STRING_TEMPLATE_RESOURCE_LOADER
);
...
@@ -69,9 +76,11 @@ public class MappingFunction implements Function {
...
@@ -69,9 +76,11 @@ public class MappingFunction implements Function {
}
}
private
String
getParentId
(
Context
ctx
)
{
private
String
getParentId
(
Context
ctx
)
{
String
id
=
(
String
)
ctx
.
getGlobal
(
"_id"
);
String
id
=
(
String
)
ctx
.
getGlobal
(
"_id"
);
int
index
=
id
.
lastIndexOf
(
"."
);
int
index
=
id
.
lastIndexOf
(
"."
);
String
file
=
id
.
substring
(
0
,
index
);
String
file
=
id
.
substring
(
0
,
index
);
return
file
;
return
file
;
}
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/handler/ZonedDateTimeTypeHandler.java
View file @
143d37ee
...
@@ -9,11 +9,13 @@ import java.time.Instant;
...
@@ -9,11 +9,13 @@ import java.time.Instant;
import
java.time.ZoneId
;
import
java.time.ZoneId
;
import
java.time.ZonedDateTime
;
import
java.time.ZonedDateTime
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.TypeParameter
;
import
org.beetl.sql.core.mapping.type.
Read
TypeParameter
;
public
class
ZonedDateTimeTypeHandler
extends
JavaSqlTypeHandler
{
public
class
ZonedDateTimeTypeHandler
extends
JavaSqlTypeHandler
{
@Override
@Override
public
Object
getValue
(
TypeParameter
typePara
)
throws
SQLException
{
public
Object
getValue
(
ReadTypeParameter
typePara
)
throws
SQLException
{
if
(
ObjectUtil
.
isNull
(
typePara
.
getRs
().
getObject
(
typePara
.
getIndex
())))
{
if
(
ObjectUtil
.
isNull
(
typePara
.
getRs
().
getObject
(
typePara
.
getIndex
())))
{
return
null
;
return
null
;
}
}
...
@@ -30,4 +32,5 @@ public class ZonedDateTimeTypeHandler extends JavaSqlTypeHandler {
...
@@ -30,4 +32,5 @@ public class ZonedDateTimeTypeHandler extends JavaSqlTypeHandler {
return
null
;
return
null
;
}
}
}
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/processor/JsonBeanProcessor.java
View file @
143d37ee
...
@@ -24,26 +24,20 @@ import java.util.Map;
...
@@ -24,26 +24,20 @@ import java.util.Map;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.Set
;
import
org.beetl.sql.c
ore.SQLManager
;
import
org.beetl.sql.c
lazz.kit.BeanKit
;
import
org.beetl.sql.core.
db.DBStyle
;
import
org.beetl.sql.core.
ExecuteContext
;
import
org.beetl.sql.core.
kit.BeanKit
;
import
org.beetl.sql.core.
db.DBType
;
import
org.beetl.sql.core.mapping.BeanProcessor
;
import
org.beetl.sql.core.mapping.BeanProcessor
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.JavaSqlTypeHandler
;
import
org.beetl.sql.core.mapping.type.TypeParameter
;
import
org.beetl.sql.core.mapping.type.
Read
TypeParameter
;
public
class
JsonBeanProcessor
extends
BeanProcessor
{
public
class
JsonBeanProcessor
extends
BeanProcessor
{
public
JsonBeanProcessor
(
SQLManager
sm
)
{
super
(
sm
);
}
/**
/**
* 网格化输出结果集
* 网格化输出结果集
*
* @param resultSet
* @throws SQLException
*/
*/
public
void
printfResultSet
(
ResultSet
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
();
...
@@ -75,21 +69,19 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -75,21 +69,19 @@ public class JsonBeanProcessor extends BeanProcessor {
System
.
out
.
println
();
System
.
out
.
println
();
}
}
}
}
/**
/**
* 将ResultSet映射为一个POJO对象
* 将ResultSet映射为一个POJO对象
*
* @param rs
* @param type
* @return
* @throws SQLException
*/
*/
@Override
@Override
public
<
T
>
T
toBean
(
String
sqlId
,
ResultSet
rs
,
Class
<
T
>
type
)
throws
SQLException
{
public
<
T
>
T
toBean
(
ExecuteContext
ctx
,
ResultSet
rs
,
Class
<
T
>
type
)
throws
SQLException
{
String
sqlId
=
ctx
.
sqlId
.
toString
();
List
<
T
>
results
=
new
ArrayList
<
T
>();
List
<
T
>
results
=
new
ArrayList
<
T
>();
PropertyDescriptor
[]
props
=
this
.
propertyDescriptors
(
type
);
PropertyDescriptor
[]
props
=
this
.
propertyDescriptors
(
type
);
ResultSetMetaData
rsmd
=
rs
.
getMetaData
();
ResultSetMetaData
rsmd
=
rs
.
getMetaData
();
int
[]
columnToProperty
=
this
.
mapColumnsToProperties
(
type
,
rsmd
,
props
);
int
[]
columnToProperty
=
this
.
mapColumnsToProperties
(
ctx
,
type
,
rsmd
,
props
);
GridMapping
mapping
=
null
;
GridMapping
mapping
=
null
;
if
(
StrUtil
.
isNotBlank
(
sqlId
))
{
if
(
StrUtil
.
isNotBlank
(
sqlId
))
{
...
@@ -98,14 +90,14 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -98,14 +90,14 @@ public class JsonBeanProcessor extends BeanProcessor {
if
(
mapping
==
null
)
{
if
(
mapping
==
null
)
{
/*无映射的情况下使用beetlsql默认自带的映射*/
/*无映射的情况下使用beetlsql默认自带的映射*/
do
{
do
{
T
bean
=
super
.
createBean
(
sqlId
,
rs
,
type
,
props
,
columnToProperty
);
T
bean
=
super
.
createBean
(
ctx
,
rs
,
type
,
props
,
columnToProperty
);
results
.
add
(
bean
);
results
.
add
(
bean
);
}
while
(
rs
.
next
());
}
while
(
rs
.
next
());
}
else
{
}
else
{
/*复杂结果集映射,取消TailBean的便利性*/
/*复杂结果集映射,取消TailBean的便利性*/
rs
.
absolute
(
0
);
rs
.
absolute
(
0
);
mapping
.
getVirtualCell
().
getNestedCells
().
clear
();
mapping
.
getVirtualCell
().
getNestedCells
().
clear
();
fillMappingNestedCells
(
sqlId
,
rs
,
mapping
);
fillMappingNestedCells
(
ctx
,
rs
,
mapping
);
results
=
parserMappingNestedCells
(
mapping
);
results
=
parserMappingNestedCells
(
mapping
);
}
}
return
CollUtil
.
isNotEmpty
(
results
)
?
CollUtil
.
getFirst
(
results
)
:
null
;
return
CollUtil
.
isNotEmpty
(
results
)
?
CollUtil
.
getFirst
(
results
)
:
null
;
...
@@ -113,37 +105,32 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -113,37 +105,32 @@ public class JsonBeanProcessor extends BeanProcessor {
/**
/**
* 将ResultSet映射为一个List<POJO>集合
* 将ResultSet映射为一个List<POJO>集合
*
* @param sqlId
* @param rs
* @param type
* @param <T>
* @return
* @throws SQLException
*/
*/
@Override
@Override
public
<
T
>
List
<
T
>
toBeanList
(
String
sqlId
,
ResultSet
rs
,
Class
<
T
>
type
)
throws
SQLException
{
public
<
T
>
List
<
T
>
toBeanList
(
ExecuteContext
ctx
,
ResultSet
rs
,
Class
<
T
>
type
)
throws
SQLException
{
if
(!
rs
.
next
())
{
if
(!
rs
.
next
())
{
return
new
ArrayList
<
T
>(
0
);
return
new
ArrayList
<
T
>(
0
);
}
}
String
sqlId
=
ctx
.
sqlId
.
toString
();
List
<
T
>
results
=
new
ArrayList
<
T
>();
List
<
T
>
results
=
new
ArrayList
<
T
>();
PropertyDescriptor
[]
props
=
this
.
propertyDescriptors
(
type
);
PropertyDescriptor
[]
props
=
this
.
propertyDescriptors
(
type
);
ResultSetMetaData
rsmd
=
rs
.
getMetaData
();
ResultSetMetaData
rsmd
=
rs
.
getMetaData
();
int
[]
columnToProperty
=
this
.
mapColumnsToProperties
(
type
,
rsmd
,
props
);
int
[]
columnToProperty
=
this
.
mapColumnsToProperties
(
ctx
,
type
,
rsmd
,
props
);
GridMapping
mapping
=
(
GridMapping
)
CacheUtil
.
get
(
sqlId
);
GridMapping
mapping
=
(
GridMapping
)
CacheUtil
.
get
(
sqlId
);
if
(
null
==
mapping
)
{
if
(
null
==
mapping
)
{
/*无映射的情况下使用beetlsql默认自带的映射*/
/*无映射的情况下使用beetlsql默认自带的映射*/
do
{
do
{
T
bean
=
super
.
createBean
(
sqlId
,
rs
,
type
,
props
,
columnToProperty
);
T
bean
=
super
.
createBean
(
ctx
,
rs
,
type
,
props
,
columnToProperty
);
results
.
add
(
bean
);
results
.
add
(
bean
);
}
while
(
rs
.
next
());
}
while
(
rs
.
next
());
}
else
{
}
else
{
/*复杂结果集映射,取消TailBean的便利性*/
/*复杂结果集映射,取消TailBean的便利性*/
rs
.
absolute
(
0
);
rs
.
absolute
(
0
);
mapping
.
getVirtualCell
().
getNestedCells
().
clear
();
mapping
.
getVirtualCell
().
getNestedCells
().
clear
();
fillMappingNestedCells
(
sqlId
,
rs
,
mapping
);
fillMappingNestedCells
(
ctx
,
rs
,
mapping
);
results
=
parserMappingNestedCells
(
mapping
);
results
=
parserMappingNestedCells
(
mapping
);
}
}
return
results
;
return
results
;
...
@@ -152,19 +139,17 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -152,19 +139,17 @@ public class JsonBeanProcessor extends BeanProcessor {
/**
/**
* 循环转换整个网格映射为最终的映射类型
* 循环转换整个网格映射为最终的映射类型
*
*
* @param mapping
预先处理好的网格映射
* @param mapping
*
@return
*
预先处理好的网格映射
*/
*/
public
List
parserMappingNestedCells
(
GridMapping
mapping
)
throws
SQLException
{
public
List
parserMappingNestedCells
(
GridMapping
mapping
)
throws
SQLException
{
List
results
=
parserRealContainerCell
(
mapping
.
getVirtualCell
());
List
results
=
parserRealContainerCell
(
mapping
.
getVirtualCell
());
return
results
;
return
results
;
}
}
/**
/**
* 递归转换整个网格
* 递归转换整个网格
*
* @param virtualCell
* @return
*/
*/
public
List
parserRealContainerCell
(
GridCell
virtualCell
)
throws
SQLException
{
public
List
parserRealContainerCell
(
GridCell
virtualCell
)
throws
SQLException
{
/*判断是单个对象还是集合*/
/*判断是单个对象还是集合*/
...
@@ -203,6 +188,7 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -203,6 +188,7 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
private
Object
createObjectFromResultSetMap
(
GridCell
contentCell
)
throws
SQLException
{
private
Object
createObjectFromResultSetMap
(
GridCell
contentCell
)
throws
SQLException
{
Object
bean
;
Object
bean
;
Map
<
String
,
Object
>
valueMap
=
contentCell
.
getBeanMap
();
Map
<
String
,
Object
>
valueMap
=
contentCell
.
getBeanMap
();
GridHeader
relationGridHeader
=
contentCell
.
getRelationGridHeader
();
GridHeader
relationGridHeader
=
contentCell
.
getRelationGridHeader
();
...
@@ -233,35 +219,37 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -233,35 +219,37 @@ public class JsonBeanProcessor extends BeanProcessor {
}
}
return
bean
;
return
bean
;
}
}
/**
/**
* 填充整个网格映射mapping数据结构:通过网格头映射生成一个个网格单元。<br>
* 填充整个网格映射mapping数据结构:通过网格头映射生成一个个网格单元。<br>
* 并没有对大数据量结果集做处理。而且递归有深度限制,列数映射过多可能会出现递归堆栈溢出,不过应该极少出现。
* 并没有对大数据量结果集做处理。而且递归有深度限制,列数映射过多可能会出现递归堆栈溢出,不过应该极少出现。
*
* @param resultSet
* @param mapping
* @throws SQLException
*/
*/
protected
void
fillMappingNestedCells
(
String
sqlId
,
ResultSet
resultSet
,
GridMapping
mapping
)
protected
void
fillMappingNestedCells
(
ExecuteContext
ctx
,
ResultSet
resultSet
,
GridMapping
mapping
)
throws
SQLException
{
throws
SQLException
{
if
(!
resultSet
.
next
())
return
;
if
(!
resultSet
.
next
())
{
return
;
}
GridHeader
header
=
mapping
.
getHeader
();
GridHeader
header
=
mapping
.
getHeader
();
processJdbcColumn
(
header
,
resultSet
);
processJdbcColumn
(
ctx
,
header
,
resultSet
);
/*必须给一个虚假容器,为了实现递归*/
/*必须给一个虚假容器,为了实现递归*/
do
{
do
{
fillNestedGridCell
(
sqlId
,
resultSet
,
header
,
mapping
.
getVirtualCell
());
fillNestedGridCell
(
ctx
,
resultSet
,
header
,
mapping
.
getVirtualCell
());
}
while
(
resultSet
.
next
());
}
while
(
resultSet
.
next
());
}
}
/** 填充网格映射中的单元格映射结构。 */
/** 填充网格映射中的单元格映射结构。 */
protected
void
fillNestedGridCell
(
protected
void
fillNestedGridCell
(
String
sqlId
,
ResultSet
resultSet
,
GridHeader
header
,
GridCell
virtualCell
)
{
ExecuteContext
ctx
,
ResultSet
resultSet
,
GridHeader
header
,
GridCell
virtualCell
)
{
/*通过当前header获取对应的结果集列*/
/*通过当前header获取对应的结果集列*/
Map
<
String
,
Object
>
beanMap
=
extractMapFromRs
(
sqlId
,
resultSet
,
header
);
Map
<
String
,
Object
>
beanMap
=
extractMapFromRs
(
ctx
,
resultSet
,
header
);
GridCell
realContainerCell
=
virtualCell
.
findOrCreateNestedCell
(
header
,
beanMap
);
GridCell
realContainerCell
=
virtualCell
.
findOrCreateNestedCell
(
header
,
beanMap
);
List
<
GridHeader
>
nestedHeaders
=
header
.
getNestedHeaders
();
List
<
GridHeader
>
nestedHeaders
=
header
.
getNestedHeaders
();
for
(
GridHeader
nestedHeader
:
nestedHeaders
)
{
for
(
GridHeader
nestedHeader
:
nestedHeaders
)
{
/*在 realContainerCell 中找到对应header的虚拟cell*/
/*在 realContainerCell 中找到对应header的虚拟cell*/
GridCell
nestedVirtualCell
=
realContainerCell
.
findVirtualCell
(
nestedHeader
);
GridCell
nestedVirtualCell
=
realContainerCell
.
findVirtualCell
(
nestedHeader
);
fillNestedGridCell
(
sqlId
,
resultSet
,
nestedHeader
,
nestedVirtualCell
);
fillNestedGridCell
(
ctx
,
resultSet
,
nestedHeader
,
nestedVirtualCell
);
}
}
}
}
...
@@ -269,13 +257,16 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -269,13 +257,16 @@ public class JsonBeanProcessor extends BeanProcessor {
* Method processJdbcColumn ...<br>
* Method processJdbcColumn ...<br>
* 根据当前sql语句的resultset 处理gridheader中的fieldToColumnMap。
* 根据当前sql语句的resultset 处理gridheader中的fieldToColumnMap。
*
*
* @param header of type GridHeader
* @param header
* @param resultSet of type ResultSet
* of type GridHeader
* @param resultSet
* of type ResultSet
*/
*/
private
void
processJdbcColumn
(
GridHeader
header
,
ResultSet
resultSet
)
{
private
void
processJdbcColumn
(
ExecuteContext
ctx
,
GridHeader
header
,
ResultSet
resultSet
)
{
List
<
GridHeader
>
nestedHeaders
=
header
.
getNestedHeaders
();
List
<
GridHeader
>
nestedHeaders
=
header
.
getNestedHeaders
();
for
(
GridHeader
nestedHeader
:
nestedHeaders
)
{
for
(
GridHeader
nestedHeader
:
nestedHeaders
)
{
processJdbcColumn
(
nestedHeader
,
resultSet
);
processJdbcColumn
(
ctx
,
nestedHeader
,
resultSet
);
}
}
try
{
try
{
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
ResultSetMetaData
metaData
=
resultSet
.
getMetaData
();
...
@@ -294,8 +285,9 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -294,8 +285,9 @@ public class JsonBeanProcessor extends BeanProcessor {
dbColumnProperty
.
setHasEffective
(
false
);
dbColumnProperty
.
setHasEffective
(
false
);
continue
;
continue
;
}
}
int
dbType
=
ctx
.
sqlManager
.
getDbStyle
().
getDBType
();
boolean
isSpecialDbRn
=
boolean
isSpecialDbRn
=
(
super
.
dbType
==
DB
Styl
e
.
DB_ORACLE
||
super
.
dbType
==
DB
Styl
e
.
DB_SQLSERVER
)
(
dbType
==
DB
Typ
e
.
DB_ORACLE
||
dbType
==
DB
Typ
e
.
DB_SQLSERVER
)
&&
columnLabel
.
equalsIgnoreCase
(
"beetl_rn"
);
&&
columnLabel
.
equalsIgnoreCase
(
"beetl_rn"
);
if
(
isSpecialDbRn
)
{
if
(
isSpecialDbRn
)
{
dbColumnProperty
.
setHasEffective
(
false
);
dbColumnProperty
.
setHasEffective
(
false
);
...
@@ -314,13 +306,10 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -314,13 +306,10 @@ public class JsonBeanProcessor extends BeanProcessor {
/**
/**
* 遍历网格头,由网格头的信息从结果集中读取值。<br>
* 遍历网格头,由网格头的信息从结果集中读取值。<br>
*
* @param resultSet
* @param header
* @return
*/
*/
private
Map
<
String
,
Object
>
extractMapFromRs
(
private
Map
<
String
,
Object
>
extractMapFromRs
(
String
sqlId
,
ResultSet
resultSet
,
GridHeader
header
)
{
ExecuteContext
ctx
,
ResultSet
resultSet
,
GridHeader
header
)
{
Map
<
String
,
Object
>
tempBeanMap
=
MapUtil
.
newHashMap
();
Map
<
String
,
Object
>
tempBeanMap
=
MapUtil
.
newHashMap
();
/*处理每个头部映射的bean类型与结果集的列的类型转换*/
/*处理每个头部映射的bean类型与结果集的列的类型转换*/
Map
<
JavaFieldProperty
,
DBColumnProperty
>
fieldToColumnMap
=
header
.
getFieldToColumnMap
();
Map
<
JavaFieldProperty
,
DBColumnProperty
>
fieldToColumnMap
=
header
.
getFieldToColumnMap
();
...
@@ -344,14 +333,14 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -344,14 +333,14 @@ public class JsonBeanProcessor extends BeanProcessor {
handler
=
super
.
getDefaultHandler
();
handler
=
super
.
getDefaultHandler
();
}
}
TypeParameter
typeParameter
=
Read
TypeParameter
typeParameter
=
new
TypeParameter
(
new
Read
TypeParameter
(
sqlId
,
ctx
.
sqlId
,
super
.
db
Name
,
ctx
.
sqlManager
.
getDbStyle
().
get
Name
()
,
fieldType
,
fieldType
,
resultSet
,
resultSet
,
resultSet
.
getMetaData
(),
resultSet
.
getMetaData
(),
dbColumnProperty
.
getColumnIndex
());
dbColumnProperty
.
getColumnIndex
()
,
ctx
);
tempBeanMap
.
put
(
javaFieldProperty
.
getKey
(),
handler
.
getValue
(
typeParameter
));
tempBeanMap
.
put
(
javaFieldProperty
.
getKey
(),
handler
.
getValue
(
typeParameter
));
}
catch
(
SQLException
e
)
{
}
catch
(
SQLException
e
)
{
...
@@ -364,10 +353,6 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -364,10 +353,6 @@ public class JsonBeanProcessor extends BeanProcessor {
/**
/**
* 根据class取得属性描述PropertyDescriptor
* 根据class取得属性描述PropertyDescriptor
*
* @param c
* @return
* @throws SQLException
*/
*/
private
PropertyDescriptor
[]
propertyDescriptors
(
Class
<?>
c
)
throws
SQLException
{
private
PropertyDescriptor
[]
propertyDescriptors
(
Class
<?>
c
)
throws
SQLException
{
...
@@ -377,4 +362,5 @@ public class JsonBeanProcessor extends BeanProcessor {
...
@@ -377,4 +362,5 @@ public class JsonBeanProcessor extends BeanProcessor {
throw
new
SQLException
(
"Bean introspection failed: "
+
e
.
getMessage
());
throw
new
SQLException
(
"Bean introspection failed: "
+
e
.
getMessage
());
}
}
}
}
}
}
plus-admin/admin-core/src/main/java/com/ibeetl/admin/core/conf/beetl/resultmap/GridCell.java
View file @
143d37ee
...
@@ -7,7 +7,6 @@ import java.io.Serializable;
...
@@ -7,7 +7,6 @@ import java.io.Serializable;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.Map.Entry
;
import
java.util.Map.Entry
;
import
java.util.Optional
;
import
java.util.Set
;
import
java.util.Set
;
/**
/**
...
...
Prev
1
2
3
4
5
6
7
…
9
Next
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