JDK1.8、MYSQL8、Maven3.6.3+
进入菜单的默认账号为:
账号:system
密码:123456
数据库里的密码看起来有点奇怪,这是因为进行了1次md5加密。
技术选型:前端使用layui,后端使用springboot+maven+mybatis-plus
技术参考:https://www.bilibili.com/video/BV1UJ411T7w2?p=1
现有的都是学他的。 现在已完成的模块:公告模块、部门模块、登录信息模块。
在mysql中运行/dumps文件夹下的最新sql,向数据库中导入数据
1.application.yml
将这两处修改为自己MYSQL数据库的账号和密码
2.CodeGenerator_MIS
修改以下配置配置,方便之后生成代码。
此处改为本地项目的地址。
此处更改为本地MYSQL的账号密码。
3.给IDEA装一个Lombok插件,解决getter/setter飘红的问题
目标:完成某个表的增删查改
此处开发规范:
与系统功能相关的,归入sys模块,与业务功能有关的,归入bus模块。
例:
1.在entity/中,生成的表中若有日期数据,要将自动生成的LocalDateTime改为Date:
如:
(导入包时选用java.util)
2.移动mapper文件:
生成的mapper映射会出现在mapper/xml/ ,而我们要将其移动到/resources/mappper/[模块名]下。
如:
以notice(公告管理)为例子,做一个会分页的查询
noticeVo可以用来体现查询条件与限定初始显示的页面情况。
例子中是现实第一页,每页10条。ids是选中情况
其中DataGridView其实就是查询所得结果,querywarpper就是包装查询语句。
noticeManager.html
放在templates目录下。
使用layui表格组件初始化数据表:
这个页面大部分东西都可以复用。
启动MedMISApplication,访问localhost:8088
其中,createtime、user、opername都是后端增加的,从前端传来的数据只有content。
如果只想保存前端传来的数据,使用this.noticeService.saveOrUpdate(noticeVo)即可。
其中,url为数据提交的接口。
###5.做删除和批量删除功能
把id传过去。
如果是批量删除:
传一个列表。详情见noticeManager.html
直接调用removebyId即可。
若是批量删除:
组合成列表后,调用removebyIds
同样,接收到了id就进行修改即可。
mybatis支持使用SQL来查询数据库,写一个mapper interface的方法,然后通过@Select("一条sql")的注解定义这个方法如何查询数据库,写好mapper的方法后通过service层的套娃,在controller调用service层的套娃方法。插入和删除也可以,注解具体写法请自行探索。
例子参考mapper/PermissionMapper的getMenu方法。
controller的返回值除了返回template中的视图资源,还可以返回实体对象或者数据传输对象。
如果只需要返回成功或者失败的信息,你可以偷懒使用ResultObj对象,前端在请求成功的方法里处理请求失败的情况,但是不建议这样做。
推荐的做法是通过JAVA的异常处理。在可能请求失败的地方捕获并抛出异常,抛出异常统一使用medMISException,需要填入异常信息和Httpstatus,然后前端根据Httpstatus是否为200来处理接口的请求。
例子参考controler/LoginController和templates/index/login.html。
如果一个controller中的接口是只能某个或某些角色的用户使用,需要使用@RequiresRoles注解做权限控制
如果在controller的类加上注解@RequiresRoles("ADMIN"),那么这个类的所有接口都需要ADMIN权限
或者如果只是在controller类中的某个方法加上注解@RequiresRoles("DOCTOR"),那么就只是这个方法需要DOCTOR权限
角色的权限码有ADMIN、DOCTOR、PHARMACIST、LABORATORIAN、NURSE、PATIENT
建议给IDEA安装Google-Java-Format和Save-Actions插件,在保存时自动格式化代码,使代码更美观
千万不要做这个,他会在你修改JS的时候格式化,然后会炸穿你的thymeleaf
IDEA必须安装lombok插件 否则会报错
增加新功能时,请新建分支feature/【功能名】,修改bug时,请新建分支hotfix/【修改内容】。内容用-分隔,如feature/user-login。
写好代码后pull一下master分支,在本地处理冲突,调试完成后再push。最后merge到master上,不确定写得有没有问题可以@一个伙伴检查一下再合并。
除了getSession(),还有getRequest()方法可以获得ip等信息,示例见LoginController。
- 请使用驼峰命名
- 接口的url需要加上api/作为前缀,资源和路由的url则不需要
- 需要保存在sys_permission表的资源使用toXxxYyy的命名格式,普通路径则不需要
或者参考已有的界面。不懂得用的就去开头的b站视频那里选一个章节看一下。
建议跟着那个b站视频看几期,比如公告管理那几p
常数统一集合在/common/contrast,返回的集中在/common/ResultObj
-
不要人眼调试代码。服务端可以使用IDEA的debug功能,也可以使用Postman测试接口返回的数据,用Postman发请求时如果有请求体,选x-www-form-urlencoded的格式。当然也可以从前端测试接口返回的数据,前端建议使用chrome的F12,在Sources里加断点调试。
-
善用搜索引擎。