Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
I
iot-service
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Container Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
SuperHive
back-end
iot-service
Commits
29485f98
Commit
29485f98
authored
Jul 31, 2020
by
huangcb
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
1.调整mybatis配置;2.增加物模型代码;
parent
e7db7235
Changes
29
Hide whitespace changes
Inline
Side-by-side
Showing
29 changed files
with
1101 additions
and
4 deletions
+1101
-4
pom.xml
pom.xml
+5
-0
IoTApplication.java
src/main/java/com/esv/datacenter/iot/IoTApplication.java
+2
-2
ReqUtils.java
...ain/java/com/esv/datacenter/iot/common/util/ReqUtils.java
+125
-2
ThreadLocalCacheUtils.java
...esv/datacenter/iot/common/util/ThreadLocalCacheUtils.java
+67
-0
DataPermHandler.java
...om/esv/datacenter/iot/config/mybatis/DataPermHandler.java
+103
-0
DataPermParser.java
...com/esv/datacenter/iot/config/mybatis/DataPermParser.java
+131
-0
EsvMetaObjectHandler.java
...v/datacenter/iot/config/mybatis/EsvMetaObjectHandler.java
+63
-0
MybatisPlusConfig.java
.../esv/datacenter/iot/config/mybatis/MybatisPlusConfig.java
+43
-0
InstanceTopicDao.java
...sv/datacenter/iot/module/omodel/dao/InstanceTopicDao.java
+17
-0
ObjectModelDao.java
.../esv/datacenter/iot/module/omodel/dao/ObjectModelDao.java
+17
-0
ObjectModelInstanceDao.java
...acenter/iot/module/omodel/dao/ObjectModelInstanceDao.java
+17
-0
ObjectModelPropertyDao.java
...acenter/iot/module/omodel/dao/ObjectModelPropertyDao.java
+17
-0
InstanceTopicEntity.java
...acenter/iot/module/omodel/entity/InstanceTopicEntity.java
+44
-0
ObjectModelEntity.java
...atacenter/iot/module/omodel/entity/ObjectModelEntity.java
+58
-0
ObjectModelInstanceEntity.java
...r/iot/module/omodel/entity/ObjectModelInstanceEntity.java
+62
-0
ObjectModelPropertyEntity.java
...r/iot/module/omodel/entity/ObjectModelPropertyEntity.java
+78
-0
ObjectModelForm.java
...sv/datacenter/iot/module/omodel/form/ObjectModelForm.java
+41
-0
InstanceTopicService.java
...enter/iot/module/omodel/service/InstanceTopicService.java
+16
-0
ObjectModelInstanceService.java
...iot/module/omodel/service/ObjectModelInstanceService.java
+16
-0
ObjectModelPropertyService.java
...iot/module/omodel/service/ObjectModelPropertyService.java
+16
-0
ObjectModelService.java
...acenter/iot/module/omodel/service/ObjectModelService.java
+26
-0
InstanceTopicServiceImpl.java
.../module/omodel/service/impl/InstanceTopicServiceImpl.java
+13
-0
ObjectModelInstanceServiceImpl.java
...e/omodel/service/impl/ObjectModelInstanceServiceImpl.java
+14
-0
ObjectModelPropertyServiceImpl.java
...e/omodel/service/impl/ObjectModelPropertyServiceImpl.java
+13
-0
ObjectModelServiceImpl.java
...ot/module/omodel/service/impl/ObjectModelServiceImpl.java
+18
-0
InstanceTopicDao.xml
src/main/resources/mapper/omodel/InstanceTopicDao.xml
+16
-0
ObjectModelDao.xml
src/main/resources/mapper/omodel/ObjectModelDao.xml
+19
-0
ObjectModelInstanceDao.xml
src/main/resources/mapper/omodel/ObjectModelInstanceDao.xml
+20
-0
ObjectModelPropertyDao.xml
src/main/resources/mapper/omodel/ObjectModelPropertyDao.xml
+24
-0
No files found.
pom.xml
View file @
29485f98
...
...
@@ -110,6 +110,11 @@
<artifactId>
druid-spring-boot-starter
</artifactId>
<version>
${alibaba-druid.version}
</version>
</dependency>
<dependency>
<groupId>
com.esv.platform
</groupId>
<artifactId>
gateway-common
</artifactId>
<version>
1.0.0-SNAPSHOT
</version>
</dependency>
</dependencies>
<dependencyManagement>
...
...
src/main/java/com/esv/datacenter/iot/
Base
Application.java
→
src/main/java/com/esv/datacenter/iot/
IoT
Application.java
View file @
29485f98
...
...
@@ -18,10 +18,10 @@ import java.util.TimeZone;
*/
@SpringBootApplication
@EnableDiscoveryClient
public
class
Base
Application
{
public
class
IoT
Application
{
public
static
void
main
(
String
[]
args
)
{
SpringApplication
.
run
(
Base
Application
.
class
,
args
);
SpringApplication
.
run
(
IoT
Application
.
class
,
args
);
}
@Bean
...
...
src/main/java/com/esv/datacenter/iot/common/util/ReqUtils.java
View file @
29485f98
...
...
@@ -4,21 +4,85 @@ import com.alibaba.fastjson.JSONObject;
import
com.esv.datacenter.iot.common.constants.CommonConstants
;
import
com.esv.datacenter.iot.common.exception.EException
;
import
com.esv.datacenter.iot.common.response.ECode
;
import
com.esv.gateway.common.GatewayHeaders
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.web.context.request.RequestContextHolder
;
import
org.springframework.web.context.request.ServletRequestAttributes
;
import
javax.servlet.http.HttpServletRequest
;
import
java.io.BufferedReader
;
import
java.io.IOException
;
import
java.io.InputStream
;
import
java.io.InputStreamReader
;
import
java.nio.charset.Charset
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @description: Http请求工具类
* @project: freight-base-service
* @name: com.esv.htwl.base.common.util.ReqUtils
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/05/26 19:09
* @version:1.0
*/
@Slf4j
public
class
ReqUtils
{
public
static
String
getRequestHeader
(
String
headerKey
)
{
ServletRequestAttributes
servletRequestAttributes
=
(
ServletRequestAttributes
)
RequestContextHolder
.
getRequestAttributes
();
if
(
null
==
servletRequestAttributes
)
{
Object
value
=
ThreadLocalCacheUtils
.
getByKey
(
headerKey
);
return
null
==
value
?
null
:
value
.
toString
();
}
else
{
HttpServletRequest
request
=
servletRequestAttributes
.
getRequest
();
return
request
.
getHeader
(
headerKey
);
}
}
/**
* description 获取当前请求的用户ID
* param []
* return java.lang.Long
* author Administrator
* createTime 2020/04/28 14:08
**/
public
static
Long
getRequestUserId
()
{
String
userId
=
getRequestHeader
(
GatewayHeaders
.
USER_ID
);
if
(
StringUtils
.
isNotBlank
(
userId
))
{
return
Long
.
parseLong
(
userId
);
}
else
{
return
null
;
}
}
/**
* description 获取当前请求的租户ID
* param []
* return java.lang.Long
* author Administrator
* createTime 2020/05/25 13:55
**/
public
static
Long
getRequestTenantId
()
{
String
userId
=
getRequestHeader
(
GatewayHeaders
.
TENANT_ID
);
if
(
StringUtils
.
isNotBlank
(
userId
))
{
return
Long
.
parseLong
(
userId
);
}
else
{
return
null
;
}
}
/**
* description 获取当前请求的用户帐号
* param []
* return java.lang.String
* author Administrator
* createTime 2020/04/28 14:12
**/
public
static
String
getRequestUserAccount
()
{
return
getRequestHeader
(
GatewayHeaders
.
USER_ACCOUNT
);
}
/**
* 获得Http客户端的ip
* @param req
...
...
@@ -52,4 +116,63 @@ public class ReqUtils {
}
}
}
/**
* description 获取Post请求Body
* param [req]
* return java.lang.String
* author HuangChaobin
* createTime 2020/06/02 19:45
**/
public
static
String
getPostBody
(
HttpServletRequest
req
)
{
String
reqBody
=
null
;
String
method
=
req
.
getMethod
();
if
(!
CommonConstants
.
HTTP_REQUEST_METHOD_POST
.
equalsIgnoreCase
(
method
))
{
return
reqBody
;
}
StringBuilder
sb
=
new
StringBuilder
();
InputStream
inputStream
=
null
;
BufferedReader
reader
=
null
;
try
{
inputStream
=
req
.
getInputStream
();
reader
=
new
BufferedReader
(
new
InputStreamReader
(
inputStream
,
Charset
.
forName
(
CommonConstants
.
DEFAULT_CHARACTER_ENCODING
)));
String
line
=
""
;
while
((
line
=
reader
.
readLine
())
!=
null
)
{
sb
.
append
(
line
);
}
if
(
0
==
sb
.
length
())
{
Map
<
String
,
String
>
bodyMap
=
new
HashMap
<>();
Map
<
String
,
String
[]>
parameterMap
=
req
.
getParameterMap
();
for
(
Map
.
Entry
<
String
,
String
[]>
entry
:
parameterMap
.
entrySet
())
{
for
(
String
value
:
entry
.
getValue
())
{
bodyMap
.
put
(
entry
.
getKey
(),
value
);
}
}
reqBody
=
bodyMap
.
toString
();
}
else
{
reqBody
=
sb
.
toString
();
}
}
catch
(
IOException
e
)
{
log
.
error
(
"解析post参数时发生错误:{}"
,
e
.
getMessage
(),
e
);
}
finally
{
if
(
inputStream
!=
null
)
{
try
{
inputStream
.
close
();
}
catch
(
IOException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
if
(
reader
!=
null
)
{
try
{
reader
.
close
();
}
catch
(
IOException
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
}
}
}
return
reqBody
;
}
}
src/main/java/com/esv/datacenter/iot/common/util/ThreadLocalCacheUtils.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
common
.
util
;
import
java.util.HashMap
;
import
java.util.Map
;
/**
* @description: ThreadLocal Cache工具类
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/06/11 15:27
* @version:1.0
*/
public
class
ThreadLocalCacheUtils
{
private
static
ThreadLocal
<
Map
<
String
,
Object
>>
threadLocal
=
new
ThreadLocal
<>();
/**
* 向ThreadLocal缓存值
**/
public
static
void
setByKey
(
String
key
,
Object
value
)
{
Map
<
String
,
Object
>
map
=
threadLocal
.
get
();
if
(
null
==
map
)
{
map
=
new
HashMap
<>(
8
);
}
map
.
put
(
key
,
value
);
threadLocal
.
set
(
map
);
}
/**
* 从ThreadLocal里获取缓存Key的值
**/
public
static
Object
getByKey
(
String
key
)
{
Map
<
String
,
Object
>
map
=
threadLocal
.
get
();
if
(
null
==
map
)
{
return
null
;
}
else
{
return
map
.
get
(
key
);
}
}
/**
* 从ThreadLocal里移除缓存Key
**/
public
static
void
removeByKey
(
String
key
)
{
Map
<
String
,
Object
>
map
=
threadLocal
.
get
();
if
(
null
!=
map
)
{
map
.
remove
(
key
);
threadLocal
.
set
(
map
);
}
}
/**
* 从ThreadLocal里获取缓存
**/
public
static
Object
get
()
{
return
threadLocal
.
get
();
}
/**
* 移除当前线程缓存
* 用于释放当前线程ThreadLocal资源
*/
public
static
void
remove
()
{
threadLocal
.
remove
();
}
}
src/main/java/com/esv/datacenter/iot/config/mybatis/DataPermHandler.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
config
.
mybatis
;
import
com.baomidou.mybatisplus.extension.plugins.tenant.TenantHandler
;
import
com.esv.datacenter.iot.common.util.ReqUtils
;
import
com.esv.gateway.common.DataPermsType
;
import
com.esv.gateway.common.GatewayHeaders
;
import
net.sf.jsqlparser.expression.Expression
;
import
net.sf.jsqlparser.expression.LongValue
;
import
net.sf.jsqlparser.expression.operators.relational.ExpressionList
;
import
net.sf.jsqlparser.expression.operators.relational.InExpression
;
import
net.sf.jsqlparser.schema.Column
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* @description:
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/17 13:35
* @version:1.0
*/
public
class
DataPermHandler
implements
TenantHandler
{
/**
* 不需要数据权限查询的表
**/
private
final
List
<
String
>
filterTableNames
=
Arrays
.
asList
(
""
);
@Override
public
Expression
getTenantId
(
boolean
where
)
{
String
dataPerm
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
DATA_PERM
);
//这里只是演示切换单个tenantId和多个tenantId
final
boolean
multipleTenantIds
=
DataPermsType
.
DATA_PERM_DEPARTMENT
.
equals
(
dataPerm
);
//具体场景,可以根据情况来拼接
if
(
where
&&
multipleTenantIds
)
{
//演示如何实现tenant_id in (1,2)
return
multipleTenantIdCondition
();
}
else
{
return
singleTenantIdCondition
();
}
}
// 获取tenantId
private
Expression
singleTenantIdCondition
()
{
String
tenantId
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
TENANT_ID
);
return
new
LongValue
(
tenantId
);
}
// 获取departmentId
private
Expression
multipleTenantIdCondition
()
{
String
departmentChildren
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
DEPARTMENT_CHILDREN
);
final
InExpression
inExpression
=
new
InExpression
();
inExpression
.
setLeftExpression
(
new
Column
(
getTenantIdColumn
()));
final
ExpressionList
itemsList
=
new
ExpressionList
();
final
List
<
Expression
>
inValues
=
new
ArrayList
<>();
for
(
String
departmentId
:
departmentChildren
.
split
(
","
))
{
inValues
.
add
(
new
LongValue
(
departmentId
));
}
itemsList
.
setExpressions
(
inValues
);
inExpression
.
setRightItemsList
(
itemsList
);
return
inExpression
;
}
@Override
public
String
getTenantIdColumn
()
{
String
dataPerm
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
DATA_PERM
);
//这里只是演示切换单个tenantId和多个tenantId
final
boolean
multipleTenantIds
=
DataPermsType
.
DATA_PERM_DEPARTMENT
.
equals
(
dataPerm
);
if
(
multipleTenantIds
)
{
return
"department_id"
;
}
return
"tenant_id"
;
}
/**
* description 判断是否过滤表
* param [tableName]
* return boolean
* author chenfm
* createTime 2020/4/8 9:31
**/
@Override
public
boolean
doTableFilter
(
String
tableName
)
{
// 只有查询时添加条件
if
(
tableName
.
endsWith
(
"|select"
))
{
tableName
=
tableName
.
replace
(
"|select"
,
""
);
}
else
{
return
true
;
}
if
(
filterTableNames
.
contains
(
tableName
))
{
return
true
;
}
// 全局数据权限不加入条件
String
dataPerm
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
DATA_PERM
);
if
(
DataPermsType
.
DATA_PERM_ALL
.
equals
(
dataPerm
))
{
return
true
;
}
return
false
;
}
}
src/main/java/com/esv/datacenter/iot/config/mybatis/DataPermParser.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
config
.
mybatis
;
import
com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser
;
import
lombok.extern.slf4j.Slf4j
;
import
net.sf.jsqlparser.expression.BinaryExpression
;
import
net.sf.jsqlparser.expression.Expression
;
import
net.sf.jsqlparser.expression.Parenthesis
;
import
net.sf.jsqlparser.expression.operators.conditional.AndExpression
;
import
net.sf.jsqlparser.expression.operators.conditional.OrExpression
;
import
net.sf.jsqlparser.expression.operators.relational.*
;
import
net.sf.jsqlparser.schema.Column
;
import
net.sf.jsqlparser.schema.Table
;
import
net.sf.jsqlparser.statement.select.*
;
import
java.util.List
;
/**
* @description:
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/17 13:34
* @version:1.0
*/
@Slf4j
public
class
DataPermParser
extends
TenantSqlParser
{
/**
* 目前仅支持:in, between, >, <, =, !=等比较操作,处理多租户的字段加上表别名
*
* @param expression
* @param table
* @return
*/
protected
Expression
processTableAlias
(
Expression
expression
,
Table
table
)
{
String
tableAliasName
;
if
(
table
.
getAlias
()
==
null
)
{
tableAliasName
=
table
.
getName
();
}
else
{
tableAliasName
=
table
.
getAlias
().
getName
();
}
if
(
expression
instanceof
InExpression
)
{
InExpression
in
=
(
InExpression
)
expression
;
if
(
in
.
getLeftExpression
()
instanceof
Column
)
{
setTableAliasNameForColumn
((
Column
)
in
.
getLeftExpression
(),
tableAliasName
);
}
}
else
if
(
expression
instanceof
BinaryExpression
)
{
BinaryExpression
compare
=
(
BinaryExpression
)
expression
;
if
(
compare
.
getLeftExpression
()
instanceof
Column
)
{
setTableAliasNameForColumn
((
Column
)
compare
.
getLeftExpression
(),
tableAliasName
);
}
else
if
(
compare
.
getRightExpression
()
instanceof
Column
)
{
setTableAliasNameForColumn
((
Column
)
compare
.
getRightExpression
(),
tableAliasName
);
}
}
else
if
(
expression
instanceof
Between
)
{
Between
between
=
(
Between
)
expression
;
if
(
between
.
getLeftExpression
()
instanceof
Column
)
{
setTableAliasNameForColumn
((
Column
)
between
.
getLeftExpression
(),
tableAliasName
);
}
}
return
expression
;
}
private
void
setTableAliasNameForColumn
(
Column
column
,
String
tableAliasName
)
{
column
.
setColumnName
(
tableAliasName
+
"."
+
column
.
getColumnName
());
}
/**
* 默认是按 tenant_id=1 按等于条件追加
*
* @param currentExpression 现有的条件:比如你原来的sql查询条件
* @param table
* @return
*/
@Override
protected
Expression
builderExpression
(
Expression
currentExpression
,
Table
table
)
{
final
Expression
tenantExpression
=
this
.
getTenantHandler
().
getTenantId
(
true
);
Expression
appendExpression
;
if
(!(
tenantExpression
instanceof
SupportsOldOracleJoinSyntax
))
{
appendExpression
=
new
EqualsTo
();
((
EqualsTo
)
appendExpression
).
setLeftExpression
(
this
.
getAliasColumn
(
table
));
((
EqualsTo
)
appendExpression
).
setRightExpression
(
tenantExpression
);
}
else
{
appendExpression
=
processTableAlias
(
tenantExpression
,
table
);
}
if
(
currentExpression
==
null
)
{
return
appendExpression
;
}
if
(
currentExpression
instanceof
BinaryExpression
)
{
BinaryExpression
binaryExpression
=
(
BinaryExpression
)
currentExpression
;
if
(
binaryExpression
.
getLeftExpression
()
instanceof
FromItem
)
{
processFromItem
((
FromItem
)
binaryExpression
.
getLeftExpression
());
}
if
(
binaryExpression
.
getRightExpression
()
instanceof
FromItem
)
{
processFromItem
((
FromItem
)
binaryExpression
.
getRightExpression
());
}
}
else
if
(
currentExpression
instanceof
InExpression
)
{
InExpression
inExp
=
(
InExpression
)
currentExpression
;
ItemsList
rightItems
=
inExp
.
getRightItemsList
();
if
(
rightItems
instanceof
SubSelect
)
{
processSelectBody
(((
SubSelect
)
rightItems
).
getSelectBody
());
}
}
if
(
currentExpression
instanceof
OrExpression
)
{
return
new
AndExpression
(
new
Parenthesis
(
currentExpression
),
appendExpression
);
}
else
{
return
new
AndExpression
(
currentExpression
,
appendExpression
);
}
}
@Override
protected
void
processPlainSelect
(
PlainSelect
plainSelect
,
boolean
addColumn
)
{
FromItem
fromItem
=
plainSelect
.
getFromItem
();
if
(
fromItem
instanceof
Table
)
{
Table
fromTable
=
(
Table
)
fromItem
;
if
(!
this
.
getTenantHandler
().
doTableFilter
(
fromTable
.
getName
()
+
"|select"
))
{
plainSelect
.
setWhere
(
builderExpression
(
plainSelect
.
getWhere
(),
fromTable
));
if
(
addColumn
)
{
plainSelect
.
getSelectItems
().
add
(
new
SelectExpressionItem
(
new
Column
(
this
.
getTenantHandler
().
getTenantIdColumn
())));
}
}
}
else
{
processFromItem
(
fromItem
);
}
List
<
Join
>
joins
=
plainSelect
.
getJoins
();
if
(
joins
!=
null
&&
joins
.
size
()
>
0
)
{
joins
.
forEach
(
j
->
{
processJoin
(
j
);
processFromItem
(
j
.
getRightItem
());
});
}
}
}
src/main/java/com/esv/datacenter/iot/config/mybatis/EsvMetaObjectHandler.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
config
.
mybatis
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.esv.datacenter.iot.common.util.ReqUtils
;
import
com.esv.gateway.common.GatewayHeaders
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.ibatis.reflection.MetaObject
;
import
org.springframework.stereotype.Component
;
import
java.util.Date
;
/**
* @description:
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/17 13:31
* @version:1.0
*/
@Slf4j
@Component
public
class
EsvMetaObjectHandler
implements
MetaObjectHandler
{
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
if
(
metaObject
.
hasSetter
(
"createUser"
))
{
String
userAccount
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
USER_ACCOUNT
);
this
.
setFieldValByName
(
"createUser"
,
userAccount
,
metaObject
);
}
if
(
metaObject
.
hasSetter
(
"createTime"
))
{
this
.
setFieldValByName
(
"createTime"
,
new
Date
(),
metaObject
);
}
if
(
metaObject
.
hasSetter
(
"updateUser"
))
{
String
userAccount
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
USER_ACCOUNT
);
this
.
setFieldValByName
(
"updateUser"
,
userAccount
,
metaObject
);
}
if
(
metaObject
.
hasSetter
(
"updateTime"
))
{
this
.
setFieldValByName
(
"updateTime"
,
new
Date
(),
metaObject
);
}
if
(
metaObject
.
hasSetter
(
"tenantId"
)
&&
metaObject
.
getValue
(
"tenantId"
)
==
null
)
{
String
tenantId
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
TENANT_ID
);
this
.
setFieldValByName
(
"tenantId"
,
Long
.
parseLong
(
tenantId
),
metaObject
);
}
if
(
metaObject
.
hasSetter
(
"departmentId"
)
&&
metaObject
.
getValue
(
"departmentId"
)
==
null
)
{
String
departmentId
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
DEPARTMENT_ID
);
if
(
StringUtils
.
isBlank
(
departmentId
))
{
departmentId
=
"-1"
;
}
this
.
setFieldValByName
(
"departmentId"
,
Long
.
parseLong
(
departmentId
),
metaObject
);
}
}
@Override
public
void
updateFill
(
MetaObject
metaObject
)
{
if
(
metaObject
.
hasSetter
(
"updateUser"
))
{
String
userAccount
=
ReqUtils
.
getRequestHeader
(
GatewayHeaders
.
USER_ACCOUNT
);
this
.
setFieldValByName
(
"updateUser"
,
userAccount
,
metaObject
);
}
if
(
metaObject
.
hasSetter
(
"updateTime"
))
{
this
.
setFieldValByName
(
"updateTime"
,
new
Date
(),
metaObject
);
}
}
}
src/main/java/com/esv/datacenter/iot/config/MybatisPlusConfig.java
→
src/main/java/com/esv/datacenter/iot/config/
mybatis/
MybatisPlusConfig.java
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
config
;
package
com
.
esv
.
datacenter
.
iot
.
config
.
mybatis
;
import
com.baomidou.mybatisplus.
extension.plugins.OptimisticLockerIntercepto
r
;
import
com.baomidou.mybatisplus.
core.parser.ISqlParse
r
;
import
com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* @description:
* @project: htwl-base-service
* @name: com.esv.htwl.base.config.MybatisPlusConfig
* @author: 黄朝斌
* @email: huangchaobin@esvtek.com
* @createTime: 2020/04/
09 9:58
* @createTime: 2020/04/
17 13:30
* @version:1.0
*/
@Configuration
...
...
@@ -20,23 +22,22 @@ import org.springframework.context.annotation.Configuration;
public
class
MybatisPlusConfig
{
/**
* 分页插件
*/
@Bean
public
PaginationInterceptor
paginationInterceptor
()
{
return
new
PaginationInterceptor
();
}
/**
* description MybatisPlus乐观锁插件
* description 多租户分页插件
* param []
* return com.baomidou.mybatisplus.extension.plugins.
OptimisticLocker
Interceptor
* author
chenfm
* createTime 2020/
4/13 20:17
* return com.baomidou.mybatisplus.extension.plugins.
Pagination
Interceptor
* author
Administrator
* createTime 2020/
04/17 14:56
**/
@Bean
public
OptimisticLockerInterceptor
optimisticLockerInterceptor
()
{
return
new
OptimisticLockerInterceptor
();
}
public
PaginationInterceptor
paginationInterceptor
()
{
PaginationInterceptor
paginationInterceptor
=
new
PaginationInterceptor
();
List
<
ISqlParser
>
sqlParserList
=
new
ArrayList
<>();
TenantSqlParser
tenantSqlParser
=
new
DataPermParser
();
tenantSqlParser
.
setTenantHandler
(
new
DataPermHandler
());
sqlParserList
.
add
(
tenantSqlParser
);
paginationInterceptor
.
setSqlParserList
(
sqlParserList
);
return
paginationInterceptor
;
}
}
src/main/java/com/esv/datacenter/iot/module/omodel/dao/InstanceTopicDao.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
dao
;
import
com.esv.datacenter.iot.module.omodel.entity.InstanceTopicEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 物模型实例Topic表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Mapper
public
interface
InstanceTopicDao
extends
BaseMapper
<
InstanceTopicEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/dao/ObjectModelDao.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
dao
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 物模型表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Mapper
public
interface
ObjectModelDao
extends
BaseMapper
<
ObjectModelEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/dao/ObjectModelInstanceDao.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
dao
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelInstanceEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 物模型实例表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Mapper
public
interface
ObjectModelInstanceDao
extends
BaseMapper
<
ObjectModelInstanceEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/dao/ObjectModelPropertyDao.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
dao
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelPropertyEntity
;
import
com.baomidou.mybatisplus.core.mapper.BaseMapper
;
import
org.apache.ibatis.annotations.Mapper
;
/**
* 物模型属性表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Mapper
public
interface
ObjectModelPropertyDao
extends
BaseMapper
<
ObjectModelPropertyEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/entity/InstanceTopicEntity.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
entity
;
import
com.baomidou.mybatisplus.annotation.TableId
;
import
com.baomidou.mybatisplus.annotation.TableName
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 物模型实例Topic表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Data
@TableName
(
"base_instance_topic"
)
public
class
InstanceTopicEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
@TableId
private
Long
id
;
/**
* 模型ID
*/
private
Long
modelId
;
/**
* 实例ID
*/
private
Long
instanceId
;
/**
* MQTT Topic
*/
private
String
topic
;
/**
* 创建时间
*/
private
Date
createTime
;
}
src/main/java/com/esv/datacenter/iot/module/omodel/entity/ObjectModelEntity.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 物模型表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Data
@TableName
(
"base_object_model"
)
public
class
ObjectModelEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
@TableId
private
Long
id
;
/**
* 模型名称
*/
private
String
name
;
/**
* 模型描述
*/
private
String
description
;
/**
* 是否删除:0-未删除、1-已删除
*/
@TableLogic
private
Boolean
deleted
;
/**
* 创建者
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
String
createUser
;
/**
* 修改者
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
String
updateUser
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
src/main/java/com/esv/datacenter/iot/module/omodel/entity/ObjectModelInstanceEntity.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 物模型实例表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Data
@TableName
(
"base_object_model_instance"
)
public
class
ObjectModelInstanceEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
@TableId
private
Long
id
;
/**
* 模型ID
*/
private
Long
modelId
;
/**
* 实例名称
*/
private
String
instanceName
;
/**
* 实例描述
*/
private
String
description
;
/**
* 是否删除:0-未删除、1-已删除
*/
@TableLogic
private
Boolean
deleted
;
/**
* 创建者
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
String
createUser
;
/**
* 修改者
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
String
updateUser
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
src/main/java/com/esv/datacenter/iot/module/omodel/entity/ObjectModelPropertyEntity.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
entity
;
import
com.baomidou.mybatisplus.annotation.*
;
import
java.io.Serializable
;
import
java.util.Date
;
import
lombok.Data
;
/**
* 物模型属性表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
@Data
@TableName
(
"base_object_model_property"
)
public
class
ObjectModelPropertyEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
*
*/
@TableId
private
Long
id
;
/**
* 模型ID
*/
private
Long
modelId
;
/**
* 属性代码
*/
private
String
propertyCode
;
/**
* 属性名称
*/
private
String
propertyName
;
/**
* 属性类型(字典表)
*/
private
Integer
propertyType
;
/**
* 属性默认值
*/
private
String
propertyDefaultValue
;
/**
* 属性单位
*/
private
String
propertyUnit
;
/**
* 排列序号
*/
private
Long
sortNum
;
/**
* 是否删除:0-未删除、1-已删除
*/
@TableLogic
private
Boolean
deleted
;
/**
* 创建者
*/
@TableField
(
fill
=
FieldFill
.
INSERT
)
private
String
createUser
;
/**
* 修改者
*/
@TableField
(
fill
=
FieldFill
.
INSERT_UPDATE
)
private
String
updateUser
;
/**
* 创建时间
*/
private
Date
createTime
;
/**
* 修改时间
*/
private
Date
updateTime
;
}
src/main/java/com/esv/datacenter/iot/module/omodel/form/ObjectModelForm.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
form
;
import
com.esv.datacenter.iot.common.validator.groups.ValidatorInsert
;
import
lombok.Data
;
import
org.apache.commons.lang3.builder.ToStringBuilder
;
import
org.apache.commons.lang3.builder.ToStringStyle
;
import
org.hibernate.validator.constraints.Length
;
import
javax.validation.constraints.NotBlank
;
/**
* @description:
* @author: huangchaobin@esvtek.com
* @createTime: 2020/07/31 13:47
* @version:1.0
*/
@Data
public
class
ObjectModelForm
{
/**
*
*/
private
Long
id
;
/**
* 模型名称
*/
@Length
(
max
=
50
,
message
=
"[模型名称]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
})
@NotBlank
(
message
=
"[模型名称]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
String
name
;
/**
* 模型描述
*/
@Length
(
max
=
200
,
message
=
"[模型描述]长度不合法"
,
groups
=
{
ValidatorInsert
.
class
})
@NotBlank
(
message
=
"[模型描述]不能为空"
,
groups
=
{
ValidatorInsert
.
class
})
private
String
description
;
@Override
public
String
toString
()
{
return
ToStringBuilder
.
reflectionToString
(
this
,
ToStringStyle
.
JSON_STYLE
);
}
}
src/main/java/com/esv/datacenter/iot/module/omodel/service/InstanceTopicService.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.omodel.entity.InstanceTopicEntity
;
/**
* 物模型实例Topic表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
public
interface
InstanceTopicService
extends
IService
<
InstanceTopicEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/service/ObjectModelInstanceService.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelInstanceEntity
;
/**
* 物模型实例表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
public
interface
ObjectModelInstanceService
extends
IService
<
ObjectModelInstanceEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/service/ObjectModelPropertyService.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelPropertyEntity
;
/**
* 物模型属性表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
public
interface
ObjectModelPropertyService
extends
IService
<
ObjectModelPropertyEntity
>
{
}
src/main/java/com/esv/datacenter/iot/module/omodel/service/ObjectModelService.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
;
import
com.baomidou.mybatisplus.extension.service.IService
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelEntity
;
import
com.esv.datacenter.iot.module.omodel.form.ObjectModelForm
;
/**
* 物模型表
*
* @author 黄朝斌
* @email huangchaobin@esvtek.com
* @date 2020-07-31 13:35:49
*/
public
interface
ObjectModelService
extends
IService
<
ObjectModelEntity
>
{
/**
* @description 创建模型
* @param form:
* @return java.lang.Long
* @author huangChaobin@esvtek.com
* @createTime 2020/07/31 13:52
**/
Long
createObjectModel
(
ObjectModelForm
form
);
}
src/main/java/com/esv/datacenter/iot/module/omodel/service/impl/InstanceTopicServiceImpl.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.omodel.dao.InstanceTopicDao
;
import
com.esv.datacenter.iot.module.omodel.entity.InstanceTopicEntity
;
import
com.esv.datacenter.iot.module.omodel.service.InstanceTopicService
;
import
org.springframework.stereotype.Service
;
@Service
(
"instanceTopicService"
)
public
class
InstanceTopicServiceImpl
extends
ServiceImpl
<
InstanceTopicDao
,
InstanceTopicEntity
>
implements
InstanceTopicService
{
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/omodel/service/impl/ObjectModelInstanceServiceImpl.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.omodel.dao.ObjectModelInstanceDao
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelInstanceEntity
;
import
com.esv.datacenter.iot.module.omodel.service.ObjectModelInstanceService
;
import
org.springframework.stereotype.Service
;
@Service
(
"objectModelInstanceService"
)
public
class
ObjectModelInstanceServiceImpl
extends
ServiceImpl
<
ObjectModelInstanceDao
,
ObjectModelInstanceEntity
>
implements
ObjectModelInstanceService
{
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/omodel/service/impl/ObjectModelPropertyServiceImpl.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.omodel.dao.ObjectModelPropertyDao
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelPropertyEntity
;
import
com.esv.datacenter.iot.module.omodel.service.ObjectModelPropertyService
;
import
org.springframework.stereotype.Service
;
@Service
(
"objectModelPropertyService"
)
public
class
ObjectModelPropertyServiceImpl
extends
ServiceImpl
<
ObjectModelPropertyDao
,
ObjectModelPropertyEntity
>
implements
ObjectModelPropertyService
{
}
\ No newline at end of file
src/main/java/com/esv/datacenter/iot/module/omodel/service/impl/ObjectModelServiceImpl.java
0 → 100644
View file @
29485f98
package
com
.
esv
.
datacenter
.
iot
.
module
.
omodel
.
service
.
impl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.esv.datacenter.iot.module.omodel.dao.ObjectModelDao
;
import
com.esv.datacenter.iot.module.omodel.entity.ObjectModelEntity
;
import
com.esv.datacenter.iot.module.omodel.form.ObjectModelForm
;
import
com.esv.datacenter.iot.module.omodel.service.ObjectModelService
;
import
org.springframework.stereotype.Service
;
@Service
(
"objectModelService"
)
public
class
ObjectModelServiceImpl
extends
ServiceImpl
<
ObjectModelDao
,
ObjectModelEntity
>
implements
ObjectModelService
{
@Override
public
Long
createObjectModel
(
ObjectModelForm
form
)
{
return
null
;
}
}
\ No newline at end of file
src/main/resources/mapper/omodel/InstanceTopicDao.xml
0 → 100644
View file @
29485f98
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.omodel.dao.InstanceTopicDao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.omodel.entity.InstanceTopicEntity"
id=
"instanceTopicMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"modelId"
column=
"model_id"
/>
<result
property=
"instanceId"
column=
"instance_id"
/>
<result
property=
"topic"
column=
"topic"
/>
<result
property=
"createTime"
column=
"create_time"
/>
</resultMap>
</mapper>
\ No newline at end of file
src/main/resources/mapper/omodel/ObjectModelDao.xml
0 → 100644
View file @
29485f98
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.omodel.dao.ObjectModelDao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.omodel.entity.ObjectModelEntity"
id=
"objectModelMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"name"
column=
"name"
/>
<result
property=
"description"
column=
"description"
/>
<result
property=
"deleted"
column=
"deleted"
/>
<result
property=
"createUser"
column=
"create_user"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
</mapper>
\ No newline at end of file
src/main/resources/mapper/omodel/ObjectModelInstanceDao.xml
0 → 100644
View file @
29485f98
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.omodel.dao.ObjectModelInstanceDao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.omodel.entity.ObjectModelInstanceEntity"
id=
"objectModelInstanceMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"modelId"
column=
"model_id"
/>
<result
property=
"instanceName"
column=
"instance_name"
/>
<result
property=
"description"
column=
"description"
/>
<result
property=
"deleted"
column=
"deleted"
/>
<result
property=
"createUser"
column=
"create_user"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
</mapper>
\ No newline at end of file
src/main/resources/mapper/omodel/ObjectModelPropertyDao.xml
0 → 100644
View file @
29485f98
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.esv.datacenter.iot.module.omodel.dao.ObjectModelPropertyDao"
>
<!-- 可根据自己的需求,是否要使用 -->
<resultMap
type=
"com.esv.datacenter.iot.module.omodel.entity.ObjectModelPropertyEntity"
id=
"objectModelPropertyMap"
>
<result
property=
"id"
column=
"id"
/>
<result
property=
"modelId"
column=
"model_id"
/>
<result
property=
"propertyCode"
column=
"property_code"
/>
<result
property=
"propertyName"
column=
"property_name"
/>
<result
property=
"propertyType"
column=
"property_type"
/>
<result
property=
"propertyDefaultValue"
column=
"property_default_value"
/>
<result
property=
"propertyUnit"
column=
"property_unit"
/>
<result
property=
"sortNum"
column=
"sort_num"
/>
<result
property=
"deleted"
column=
"deleted"
/>
<result
property=
"createUser"
column=
"create_user"
/>
<result
property=
"updateUser"
column=
"update_user"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
</resultMap>
</mapper>
\ No newline at end of file
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