开发说明 | AchieveIt和lenosp脚手架 Q&A
配置
配置文件application.yml在
如图,现在选中的是application-mysql-dev 可选的配置文件,用于环境切换(测试、开发、生产)可以在配置文件中,设置tomcat的端口(springboot内置了Tomcat),要连接的数据库。
server:
port: 8081 #这里写Tomcat端口
spring:
devtools:
restart:
enabled: true
datasource:
url: jdbc:mysql://xx.xx.xx.xx:xxxx/DB_NAME?useUnicode=true&characterEncoding=UTF-8
username: 用户名
password: "密码"
目前,最好都从我的数据库(lenos_origin)克隆一个自己的数据库,在自己的上面改,防止乱掉。自己建表时记得ENGINE=InnoDB DEFAULT CHARSET=utf8;
,尽量少用外键(逻辑上外键可,物理外键尽量少,可以存一些冗余信息,减少query次数还好写,比如某表存了xxxid,还经常需要显示xxx_name,不妨把name也直接存表了)。
lenosp脚手架说明
- 使用了开源脚手架lenos (p为spring boot版本扩展名)一款快速开发模块化脚手架,采用spring boot 2.0.1+spring+SpringMvc+mybatis+shiro+swagger+ehcache+quartz+freemarker+layui技术开发,集成了Activiti5.22。
- 项目部署说明
- 修改 application.yml imagePath 路径 把image文件夹图片赋值进路径,即可正常展示头像
- 数据库使用mysql5.6,在云端,项目可直接运行。
启动说明
mvn clean package
mvn package
java -jar len-web.jar
技术
采用的技术即lenos脚手架集成的部分技术。
- jdk:1.8
- 核心框架:spring boot 2.0.1.RELEASE
- 安全框架:Apache Shiro(用于用户角色权限控制)
- 工作流引擎:Activiti5.22
- 数据库连接池:druid
- 视图框架:spring mvc
- 持久层框架:MyBatis
- 模板引擎:freemarker
- 缓存:redis、ehcache(目前未使用)
- 定时:quartz 2.3.0(目前未使用)
- 前端页面:layui
模块和可参考的内容✨
典型的springMVC+MyBatis,可以自己查一下。
-
注意区分系统内权限和项目内权限。涉及工作范围的疑问一定要群里说,私聊可能更乱😂。
-
已有的模块:
除了负责工作流部分的(这个系统应该仅有立项审批流程用到工作流),都写在len-web里就可以了,或者自己开模块,自己开模块可以先写套hello controller,确定能正常工作了再写。
-
len-activiti @我
引入了activiti5.22,数据库里act_开头的23张表都是activiti引擎需要操纵的,通过在这个模块调用activiti的xxxxxService来管理。 -
len-core @all 不需要修改,只需要使用
这里有个通用service层,通用数据库操作增删改都有了,使用只需要public interface xxxxxService extends BaseService<entity类型,‘主键’类型>
,xxxxxService就可以直接调这些操作了。
-
len-sys @all 尽量不要修改,只使用
要修改,先在群里商量。这块主要是系统内的用户,角色,用户-角色,菜单,角色-菜单,菜单和用户系统内的权限挂钩。 -
len-web @all
🏀🏀🏀典型的springMVC+MyBatis,一套大概是:
数据库表 — entity,resource里的mapper
mapper — service(service的impl)—controller里调service — ftl页面
常见操作一览
- 获取当前用户id和当前用户
String id = Principal.getPrincipal().getId(); // getPrincipal() return type: CurrentUser
SysUser user = userService.selectByPrimaryKey(id);
-
pull、push
push前需要邀请为collaborator。
push前最好在群里说一哈 -
用IDEA自带/Navicat/Workbench操作数据库很方便,连接信息在前面说过的application.yml
-
shiro拦截(建议先忽略,之后来得及再加,目前只是拦截不登录就访问)
shiro配置
filterMap.put("xxxxxxx", "anon");
xxxxxxx是不登录就可访问的url。
shiro也是一写写一套的= = -
Git在IDEA中的使用(详细图文全解)
大家各自新建分支,push到分支。merge前一定要检查!!!- Git回滚
git log
git reset --hard yourCommitNum
git push origin HEAD --force - 还能再滚回去= =
首先得到要回退到的版本号git reflog
执行回退 git reset --hard yourCommitNum
- Git回滚
-
在实体类上加lombok注解@Data,就不用自己写get set toString了。
-
给前台传数据,model.addAttribute("xxxxx", obj) ,在页面获取${xxxxx}
@ModelAttribute注解的使用 -
layui的layer type
layer提供了5种层类型:
0:信息框,默认
1:页面层
2:iframe层
3:加载层
4:tips层 -
慎用@PathVariable,有坑,注意和@RequestParam区分。
-
在普通的(非controller的)类中使用XxxxService,
SpringUtil.getBean(XxxxService.class)
即可。 - 流程设计
-
部署到服务器后,流程节点动态显示,出现中文乱码
解决:给服务器(Centos7)装中文字体
Linux CentOS 7 安装字体库 & 中文字体 -
screen 让进程保持运行
kill进程:screen -r screen_id -X quit