文章目录
通过本指南快速上手lcp开发平台
以下工具都可以从公司内部ftp上获取
从svn上下载项目开发模板
http://172.16.1.78:81/svn/06_源代码管理/S008_LCP平台/applicationTemplete
从首页地址获取并访问Maven私有仓库,查找并修改为最新稳定的extension版本号
<dependency>
<groupId>com.fslgroupId>
<artifactId>lcp.extensionartifactId>
<type>wartype>
<version>2.5-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.fslgroupId>
<artifactId>lcp.extensionartifactId>
<classifier>classesclassifier>
<scope>providedscope>
<version>2.5-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.fslgroupId>
<artifactId>lcp.wrapperartifactId>
<type>wartype>
<version>2.1-SNAPSHOTversion>
dependency>
<dependency>
<groupId>com.fslgroupId>
<artifactId>lcp.wrapperartifactId>
<classifier>classesclassifier>
<scope>providedscope>
<version>2.1-SNAPSHOTversion>
dependency>
基于项目实际需求修改pom文件中的如下属性
<project>
……
<artifactId>applicationTempleteartifactId>
<version>1.0-RELEASEversion>
……
<build>
……
<finalName>applicationTempletefinalName>
……
build>
project>
执行如下命令,完成项目首次打包
mvn clean package
使用如下信息连接数据库
ip:172.16.20.118
port:3306
user:root
pwd:fswl@1234
平台使用Mysql数据库完成开发。登录数据库服务器,在my.cnf(或my.ini)完成以下配置
# 忽略大小写
lower_case_table_names=1
# 采用utf8mb4编码,utf8mb4才是真正的utf8编码,能够存储各类符号
character_set_server=utf8mb4
# 默认值为100,调整到500
max_connections=500
如果数据库开启了bin-log日志,则还需在my.cnf(或my.ini)添加以下配置
log_bin_trust_function_creators=1
使用utf8mb4
字符集,创建名为applicationTemplete
的数据库。数据库名称可按需求修改。
访问target\war\work\com.fsl\lcp.extension\WEB-INF\classes\db
路径,按顺序执行脚本,初始化表结构与表数据
平台默认使用JNDI配置数据源。数据源的配置独立于项目配置。打开tomcat安装目录/conf/context.xml
文件,添加如下配置。注意各参数应按需修改
<Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" name="jdbc/lcp_db" type="javax.sql.DataSource" url="jdbc:mysql://172.16.20.118:3306/applicationTemplete" username="root" password="fswl@1234"/>
本地先行启动Redis。使用Idea打开项目并完成Tomcat配置。使用admin/Fslgz@1234!!登录,成功启动后的面如下。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5vzASari-1586308930974)(.\pic\20190324-205613.png)]
在src\main\resources\profiles
目录下,存储了项目四套环境参数配置,说明如下
名称 | 描述 |
---|---|
dev | 开发环境参数 |
sit | 综测环境参数 |
uat | 业测环境参数 |
prod | 正式环境参数 |
需要指定Apollo上应用程序编码与Apollo服务器地址。此配置放置在app.properties
app.id=lcp
apollo.meta=http://172.16.20.136:8080
目前项目的所有配置统一由Apollo管理。
系统级参数配置
# system
env.code = DEV
sys.code = TEMPLETE
sys.name = 模板
sys.log.dir = /lcp_logs
sys.webroot.url = http://localhost:8080/applicationTemplete/
sys.home.refresh.interval = 60
当前未启用
# redisson
# multiple redis such as
# redisson.server.url=\
# 127.0.0.1:6379,\
# 10.211.103.142:6379
# redisson.server.url=
# redissson.server.password=
# mail notify
mail.smtp.host=mail.fslgz.com
mail.smtp.port=587
mail.smtp.username=lcpnotice
mail.smtp.password=lcp!@2019
mail.smtp.auth=true
mail.smtp.timeout=50000
#[email protected]
# sms notify
sms.corpid=105686
sms.loginname=system
sms.password=390323
sms.url=https://sms.mobset.com:843/SDK3/SMS
# dd nofity
dingtalk.corp.id=ding6b6ffebcd75ef63335c2f4657eb6378f
dingtalk.app.key=dinggkwxz61kgu7vvw8a
dingtalk.app.secret=VnA-wL-bqviMkIsw_Qn81TqH-Q7fqzCchOglmBjplbjeBZvdzH5MZ8e66vDNefo-
dingtalk.default.agentid=280426666
# weixin
weixin.app.id = wxdaa8c45050e1968c
weixin.app.secret = cf958a9dd8882631b8c5b6beb2d19a64
启动后自动执行任务调度
# job
job.autoStartup=true
# Activiti
activiti.dd.todo.open=N
activiti.dd.process.open = N
注意jndiName
的配置需与tomcat中保持一致
# db
db.jndiName=java:comp/env/jdbc/lcp_db
# db.type property is used for activiti
db.type=mysql
#db.type=oracle
#db.type=mysql
#db.type=hana
mybatis.identity=JDBC
#mybatis.identity=SEQUENCE
在正式项目中需配置为分配的主键区间
# snow generate Id
snow.workerId=0
snow.datacenterId=0
默认未使用集群。可添加访问密码保证缓存不被其它应用干扰
# redis
redis.sentinel=\
10.86.20.183:26379,\
10.86.20.184:26379
# if redis.useSentinel is true, then redis.ip and redis.port is useless
# this value should always be true except local dev test
redis.useSentinel=false
redis.ip=localhost
redis.port=6379
redis.db=10
redis.password=
redis.queue.retry.times = 5
# rabbitmq intergration
rabbit.mq.open=false
rabbit.mq.host=172.16.20.121
rabbit.mq.port=5672
rabbit.mq.username=fsl
rabbit.mq.password=fsl
rabbit.mq.exchange=exchange.topic.sit
rabbit.mq.queue=queue.ams.sit
rabbit.mq.queue.concurrency=10
可删除默认配置,使用本地登录
# cas intergration
cas.service=http://localhost:8080/applicationTemplete/login/cas
cas.ssoserver.url=http://172.16.20.124:8080/cas
cas.ssoserver.loginurl=http://172.16.20.124:8080/cas/login
cas.ssoserver.logouturl=http://172.16.20.124:8080/cas/logout?service=http://localhost:8080/applicationTemplete
# ldap intergration
ldap.server.url=ldap://localhost:389/
ldap.conn.userDn=cn=Manager,dc=hand,dc=com
ldap.conn.password=secret
ldap.user.search.base=dc=hand,dc=com
ldap.user.search.filter=(uid={0})
# FastDFS intergration
#fastdfs.connect_timeout_in_seconds = 5
#fastdfs.network_timeout_in_seconds = 30
#fastdfs.charset = UTF-8
#fastdfs.http_anti_steal_token = false
#fastdfs.http_secret_key = FastDFS1234567890
#fastdfs.http_tracker_http_port = 80
fastdfs.tracker_servers = 172.16.20.147:22122
fastdfs.nginx.url=http://172.16.20.148:6001/
# portal address
portal.address=http://172.16.20.119/portal/
portal.token.url=http://172.16.20.119/portal/api/public/lcp/restful/get_token?clientId=82c15660e444467b9cb78578c6864b04&clientSecret=a4faf06c-7bab-4a99-a144-034358fafc9f
gateway.num.retry = 1
当前平台存在30个组件配置文件,清单如下
配置文件名称 | 模块名称 | 项目覆盖 |
---|---|---|
Spring根容器注册对象 | ||
applicationContext.xml | 公共对象注册 | |
applicationContext-ext.xml | 扩展对象注册 | |
applicationContext-beans.xml | 项目对象注册 | 是 |
Mvc子容器注册对象 | ||
appServlet/servlet-context.xml | 公共对象注册 | |
appServlet/controllers.xml | 控制器对象注册 | |
接口认证管理 | ||
applicationContext-gateway.xml | 网关设置 | |
oauth2Security-gateway.xml | 网关安全设置 | |
applicationContext-oauth2.xml | OAuth2设置 | |
oauth2Security.xml | OAuth2安全认证 | |
applicationContext-cxf.xml | CXF设置 | |
cxfSecurity.xml | CXF安全认证 | |
cxf-beans-demo.xml | CXF使用样例 | |
用户认证管理 | ||
applicationContext-security.xml | 登录开关 | 是 |
casSecurity.xml | 单点认证 | |
standardSecurity.xml | 标准认证 | |
standardSecurity-LDAP.xml | 基于目录服务的标准认证 | |
通知管理 | ||
applicationContext-msg.xml | 消息管理开关(始终指向Redis) | |
message/rabbitmq.xml | RabbitMQ消息配置(废弃) | |
message/redis.xml | Redis消息管理 | |
applicationContext-nofify.xml | 通知管理 | |
applicationContext-mail.xml | 邮件管理 | |
applicationContext-rabbitmq.xml | 队列管理 | |
applicationContext-rabbitmq-customer.xml | 消费者个性化配置 | 是 |
工作流 | ||
applicationContext-activiti.xml | 工作流管理 | |
appServlet/servlet-activiti.xml | 工作流Web应用管理 | |
其它模块 | ||
applicationContext-apollo.xml | Apollo配置 | |
applicationContext-db.xml | 数据库连接 | 是 |
applicationContext-job.xml | 调度管理 | |
applicationContext-redis.xml | 缓存配置 | |
applicationContext-websocket.xml | webSocket配置 |
最多支持四级菜单。项目标准菜单如下
一级菜单 | 二级菜单 | 三级菜单 | 备注 | 原菜单 |
---|---|---|---|---|
业务担当使用 | ||||
业务办理 | 协同管理 | 我待办的流程 | 等待我办理的工作流节点信息 | 工作流/我的待办列表 |
业务办理 | 协同管理 | 抄送我的流程 | 抄送我知晓的工作流节点信息 | 工作流/我的抄送流程 |
业务办理 | 协同管理 | 我发起的流程 | 我完成发起的工作流节点信息 | 工作流/我发起的流程 |
业务办理 | 协同管理 | 我参与的流程 | 我完成办理的工作流节点信息 | 工作流/我参与的流程 |
业务办理 | 协同管理 | 自动转交配置 | 将规定时间内的所有流程任务转交其它人处理 | 工作流/自动转交配置 |
报表管理 | 报表管理 | 业务系统报表展示菜单 | ||
配置管理 | 配置管理 | 业务系统配置设置菜单 | ||
系统管理员使用 | ||||
业务办理 | 协同管理 | 所有待办的流程 | 获取系统所有的待办节点信息 | 流程管理/待办事项(管理员) |
业务办理 | 协同管理 | 所有的流程 | 获取系统所有的工作流节点信息 | |
系统管理 | 账户管理 | 账户管理 | 管理系统的登录账户信息,为账户分配角色与权限 | 同运维管理/账户管理 |
系统管理 | 账户管理 | 角色管理 | 管理系统的角色信息 | 同运维管理/角色管理 |
系统管理 | 账户管理 | 默认角色配置 | 为岗位设定默认的角色 | 同运维管理/默认角色配置 |
系统管理 | 功能管理 | 功能分配 | 为角色分配系统功能 | 同系统管理/同运维管理/功能分配 |
系统管理 | 流程管理 | 职能主担配置 | 配置各部门职能主担人员 | 同运维管理/流程管理 |
系统管理 | 流程管理 | 职能主担报表 | 集中展示系统配置的所有部门职能主担 | 同运维管理/流程管理 |
运维部门使用 | ||||
运维管理 | 组织管理 | 组织管理 | 管理公司信息 | 组织管理/公司管理 |
运维管理 | 组织管理 | 部门管理 | 管理公司内各层级部门信息 | 组织管理/组织管理 |
运维管理 | 组织管理 | 岗位管理 | 管理部门内各岗位信息 | 组织管理/岗位管理 |
运维管理 | 组织管理 | 员工管理 | 管理岗位内各员工信息 | 组织管理/员工管理 |
运维管理 | 账户管理 | 账户管理 | 管理系统的登录账户信息,为账户分配角色与权限 | 系统管理/账户管理/用户管理 |
运维管理 | 账户管理 | 登录配置 | 管理各账户的安全/密码/登录策略 | 系统管理/系统配置 |
运维管理 | 账户管理 | 角色管理 | 管理系统的角色信息 | 系统管理/账户管理/角色管理 |
运维管理 | 账户管理 | 默认角色配置 | 为岗位设定默认的角色 | |
运维管理 | 功能管理 | 资源管理 | 管理系统内所有的请求地址资源,定义资源权限 | 系统管理/功能管理/资源管理 |
运维管理 | 功能管理 | 功能维护 | 管理系统内功能清单,为功能绑定地址资源 | 系统管理/功能管理/功能维护 |
运维管理 | 功能管理 | 功能分配 | 为角色分配系统功能 | 系统管理/功能管理/功能分配 |
运维管理 | 数据权限 | 数据资源管理 | 管理系统内所有的数据权限规则 | |
运维管理 | 数据权限 | 数据资源分配 | 为账户分配数据权限 | |
运维管理 | 参数管理 | 外观维护 | 管理系统标题与图标 | 系统管理/系统配置 |
运维管理 | 参数管理 | 首页配置 | 管理登录首页的仪表盘 | 系统管理/仪表盘配置 |
运维管理 | 参数管理 | 系统参数 | 管理系统参数信息 | 系统管理/配置维护 |
运维管理 | 参数管理 | 数据字典 | 管理系统数据字典信息 | 系统管理/代码维护 |
运维管理 | 参数管理 | LOV定义 | 管理系统LOV信息 | 系统管理/LOV定义 |
运维管理 | 参数管理 | 流水号配置 | 管理系统流水号信息 | 系统管理/编码规则 |
运维管理 | 参数管理 | 快捷键配置 | 管理页面操作快捷键信息 | 系统管理/热键配置 |
运维管理 | 参数管理 | 多语言定义 | 管理系统多语言类型 | 系统管理/语言维护 |
运维管理 | 参数管理 | 多语言描述 | 管理系统各语言具体描述 | 系统管理/描述维护 |
运维管理 | 审批管理 | 流程设计 | 绘制系统工作流 | 流程管理/流程设计 |
运维管理 | 审批管理 | 流程部署 | 查询流程布署信息 | 流程管理/流程部署 |
运维管理 | 审批管理 | 流程监控 | 管理系统正在运行的工作流实例 | 流程管理/流程监控 |
运维管理 | 审批管理 | 流程异常日志 | 管理工作流异常日志 | 流程管理/报错日志 |
运维管理 | 审批管理 | 审批方式配置 | 配置流程节点的通过条件 | 流程管理/审批配置/审批方式 |
运维管理 | 审批管理 | 审批规则配置 | 配置接收流程节点待办任务的人员筛选规则 | 流程管理/审批配置/审批规则 |
运维管理 | 审批管理 | 职能主担配置 | 配置各部门职能主担人员 | |
运维管理 | 审批管理 | 职能主担报表 | 集中展示系统配置的所有部门职能主担 | |
运维管理 | 审批管理 | 审批权限配置 | 配置流程走向的判定条件 | 流程管理/审批配置/审批权限 |
运维管理 | 任务管理 | 任务调度 | 配置系统自动调度执行的计划任务 | 计划任务/任务明细 |
运维管理 | 任务管理 | 任务日志 | 管理系统任务的执行日志 | 计划任务/执行记录 |
运维管理 | 通知管理 | 通知模板 | 设定通知消息的正文格式 | |
运维管理 | 通知管理 | 通知列表 | 管理所有的通知执行 | |
运维管理 | 附件管理 | 文件管理 | 查询目前所有已上传的文件清单 | 附件管理/文件管理 |
运维管理 | 附件管理 | 上传测试 | 文件上传测试 | 附件管理/上传附件 |
运维管理 | 服务管理 | 服务发布 | 生产者将服务发布至消息总线 | 服务管理/服务注册 |
运维管理 | 服务管理 | 服务订阅 | 消费者在消息总线上订阅服务 | 服务管理/应用管理 |
运维管理 | 服务管理 | 调用日志 | 管理服务的调用日志 | 服务管理/调用记录 |
运维管理 | 集成管理 | 系统集成配置 | 将指定系统的菜单与待办集成至本系统(钉钉工作台) | |
运维管理 | 集成管理 | 微信集成配置 | 将指定系统的入口集成至本系统(微信工作台) | |
运维管理 | 日志管理 | MQ消息日志 | 管理与MQ平台交互的日志信息 | |
运维管理 | 日志管理 | 钉钉接口日志 | 管理与钉钉服务器交互的日志信息 | |
运维管理 | 日志管理 | RESTFul接口日志 | 管理与钉钉服务器交互的日志信息 |
平台默认已包含单数据源配置。如需连接更多数据源则需修改 applicationContext-db.xml
,添加如下配置。
一段代码只能使用一个事务管理器。当存在同时操作两个数据源的时候,默认情况下,发生异常时只能回滚一个数据源的事务。示例配置如下,注意需添加多个数据库配置。
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${db.jndiName}"/>
bean>
<bean id="dataSource2" class="org.springframework.jndi.JndiObjectFactoryBean">
<property name="jndiName" value="${db.jndiName2}"/>
bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="mapperLocations" value="classpath*:com/hand/hap/**/*Mapper.xml"/>
<property name="plugins">
<array>
<bean class="com.hand.hap.core.interceptor.RequestContextInterceptor"/>
<bean class="com.hand.hap.core.interceptor.MultiLanguageInterceptor"/>
<bean class="com.hand.hap.core.interceptor.SecurityTokenInterceptor"/>
<bean class="com.hand.hap.core.interceptor.OvnInterceptor"/>
<bean class="com.hand.hap.core.interceptor.AuditInterceptor"/>
<bean class="com.hand.hap.core.interceptor.DataPermissionInterceptor"/>
<bean class="com.github.pagehelper.PageHelper"/>
<bean class="com.hand.hap.core.interceptor.CacheJoinInterceptor">
<property name="cacheJoinType" ref="cacheJoinType">property>
bean>
array>
property>
<property name="configLocation" value="classpath:mybatis-configuration.xml"/>
bean>
<bean id="sqlSessionFactory2" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource2"/>
<property name="mapperLocations" value="classpath*:com/hand/test/**/*Mapper.xml"/>
<property name="plugins">
<array>
<bean class="com.hand.hap.core.interceptor.RequestContextInterceptor"/>
<bean class="com.hand.hap.core.interceptor.MultiLanguageInterceptor"/>
<bean class="com.hand.hap.core.interceptor.SecurityTokenInterceptor"/>
<bean class="com.hand.hap.core.interceptor.OvnInterceptor"/>
<bean class="com.hand.hap.core.interceptor.AuditInterceptor"/>
<bean class="com.hand.hap.core.interceptor.DataPermissionInterceptor"/>
<bean class="com.github.pagehelper.PageHelper"/>
<bean class="com.hand.hap.core.interceptor.CacheJoinInterceptor">
<property name="cacheJoinType" ref="cacheJoinType">property>
bean>
array>
property>
<property name="configLocation" value="classpath:mybatis-configuration.xml"/>
bean>
<bean id="mapperScannerConfigurer" class="com.hand.hap.mybatis.spring.MapperScannerConfigurer">
<property name="basePackage" value="com.hand.hap.**.mapper"/>
<property name="processPropertyPlaceHolders" value="true"/>
<property name="propertiesMap">
<map>
<entry key="mappers" value="com.hand.hap.mybatis.common.Mapper"/>
<entry key="IDENTITY" value="${mybatis.identity}"/>
<entry key="dataBaseType" value="${db.type}"/>
<entry key="seqFormat" value="{3}_s.nextVal"/>
<entry key="enableMethodAnnotation" value="true"/>
map>
property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
bean>
<bean id="mapperScannerConfigurer2" class="com.hand.hap.mybatis.spring.MapperScannerConfigurer">
<property name="basePackage" value="com.hand.test.**.mapper"/>
<property name="processPropertyPlaceHolders" value="true"/>
<property name="propertiesMap">
<map>
<entry key="mappers" value="com.hand.hap.mybatis.common.Mapper"/>
<entry key="IDENTITY" value="${mybatis.identity2}"/>
<entry key="dataBaseType" value="${db.type2}"/>
<entry key="seqFormat" value="{3}_s.nextVal"/>
<entry key="enableMethodAnnotation" value="true"/>
map>
property>
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory2"/>
bean>
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
bean>
<bean id="transactionManager2" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource2"/>
bean>
代码使用分布式事务,所有数据源的事务都将统一管理
首先在pom里添加如下依赖
<dependency>
<groupId>com.atomikosgroupId>
<artifactId>transactions-jdbcartifactId>
<version>4.0.2version>
dependency>
<dependency>
<groupId>javax.transactiongroupId>
<artifactId>jtaartifactId>
<version>1.1version>
dependency>
分布式事务使用独立的数据源连接配置与事务管理配置,数据源工厂配置与数据映射配置和之前保持一致
<bean id="abstractXADataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close" abstract="true">
<property name="poolSize" value="10" />
<property name="minPoolSize" value="10"/>
<property name="maxPoolSize" value="30"/>
<property name="borrowConnectionTimeout" value="60"/>
<property name="reapTimeout" value="20"/>
<property name="maxIdleTime" value="60"/>
<property name="maintenanceInterval" value="60" />
<property name="loginTimeout" value="60"/>
<property name="logWriter" value="60"/>
bean>
<bean id="dataSource" parent="abstractXADataSource">
<property name="uniqueResourceName" value="oracle/sitestone" />
<property name="xaDataSourceClassName" value="oracle.jdbc.xa.client.OracleXADataSource"/>
<property name="xaProperties">
<props>
<prop key="URL">jdbc:oracle:thin:@10.211.107.202:1521:xeprop>
<prop key="user">hap_devprop>
<prop key="password">hap_devprop>
props>
property>
bean>
<bean id="dataSource2" parent="abstractXADataSource">
<property name="uniqueResourceName" value="mysql/sitesttwo" />
<property name="xaDataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlXADataSource"/>
<property name="xaProperties">
<props>
<prop key="url">jdbc:mysql://10.211.107.202:3306/hap_devprop>
<prop key="user">hap_devprop>
<prop key="password">hap_devprop>
props>
property>
bean>
<bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close">
<property name="forceShutdown" value="true"/>
bean>
<bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp">
<property name="transactionTimeout" value="300"/>
bean>
<bean id="transactionManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManager" ref="atomikosTransactionManager"/>
<property name="userTransaction" ref="atomikosUserTransaction"/>
bean>
访问如下地址,填写必要参数后,系统将自动生成对应业务的Html,Controller,Service,ServiceImp,Mapper,MapperXml,Dto。注意,在正式项目中,主键策略一率选择雪花Id。
http://localhost:8080/applicationTemplete/generator/generator.html
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QgOS1L6m-1586308930975)(.\pic\20190315-152620.png)]
DTO类
项目模块
的 xxx..dto
包下。_
替换为驼峰命名法,首字母大写,且忽略前缀。如:UserRole
对应表为 sys_user_role
。java bean
命名规范。请严格遵循规范定义属性
,getter
,setter
等.@Table(name = "table_name")
指定 DTO 对应数据库中表的名称。ExtensionBaseDto
类。DTO属性
private
属性。getter
和 setter
方法。驼峰命名规则
从数据库列名转换过来
@Column(name = "xxx")
注解,指定数据库列名@Transient
标注
Long
对应数据库中的 INTEGER
,而不是使用 long
Long
BigDecimal
@Id
标注
@GeneratedValue
表名_S
Mapper接口
interface
不同,Mapper 本身就是对数据访问的具体实现,所以属于供应方的服务实现层。创建在 项目模块
的 xxx..mapper
包下。Mapper
。如:UserRoleMapper
对应表为 UserRole
类。ExtensionMapper
类实现。其中 T 为 对应 DTO 的泛型。Mapper脚本
项目模块
resources 目录的 xxx..mapper
包下。Service接口
项目模块
的 xxx..service
包下。I
做为命名前缀I
+ DTO 类名 + Service
。如:IUserRoleService
对应表为 UserRole
类。IExtensionBaseService
与ProxySelf
接口
Service实现类
项目模块
的 xxx..service.impl
包下。I
前缀) + Impl
。如:UserRoleServiceImpl
对应 IUserRoleService
类。@Service
标注,以自动扫描注册ExtensionBaseServiceImpl
来获得标准的 CRUD 操作支持
IExtensionBaseService
按照web目录规范,前端文件存放在如下目录
webapp
├─lib
│ ├─asserts
│ ├─bootstrap-3.3.7
│ ├─dashboard
│ ├─font-awesome-4.6.3
│ ├─form-builder
│ ├─jquery-ui
│ ├─kendoui
│ ├─polyfill
│ └─websocket
├─resources
│ ├─css
│ ├─diagram-viewer
│ ├─editor-app
│ ├─font
│ ├─images
│ ├─js
│ ├─upload
└─WEB-INF
├─web.xml
└─view
资源文件按照类型划分为两个目录:lib
和resources
lib
目录存放kendoui的所有文件resources
目录存放程序通用的资源文件功能文件存放在view
目录下
[模块代码]/[功能项代码]
src/main/webapp/WEB-INF/view/sys/sys001/
界面文件,按照如下格式:[模块代码]/[业务对象]/query
系统中url地址,按照以下格式命名:[contextPath]/[模块代码]/[业务对象]/[操作类型]
。对于常见的几种操作类型定义如下
[模块代码]/[业务对象]/query
[模块代码]/[业务对象]/submit
[模块代码]/[业务对象]/remove
PC客户端,使用JQuery,KendoUI,Bootstrap,Fort Awesome等框架进行开发。移动端,使用VUE,MUI等框架进行开发。访问首页地址,可获取以上所有框架的帮助文档。
<#include "../include/header.html">