
快速开发平台基于Spring Boot与Spring Security构建,整合了MyBatis作为持久层框架,使用Thymeleaf作为前端模板引擎,并且引入了Activiti工作流引擎。该平台基于Layui后台管理系统模板,扩展了原生UI样式,提供了便捷的开发方式,延续LayuiAdmin的设计风格,持续完善组件的维护和菜单构建的异步Ajax方式。
一、内置功能
1. 用户管理:配置系统操作者,完成系统用户配置。
2. 权限管理:配置系统菜单、操作权限、按钮权限标识等。
3. 角色管理:分配角色菜单权限、按机构进行数据范围权限划分。
4. 字典管理:维护系统中经常使用的一些固定数据。
5. 参数管理:配置系统动态参数。
6. 通知公告:发布和维护系统通知公告信息。
7. 操作日志:记录和查询系统正常操作日志和系统异常信息日志。
8. 登录日志:记录查询系统登录日志,包括登录异常。
11. 系统接口:根据业务代码自动生成相关的api接口文档。
12. 服务监控:当前系统CPU、内存、磁盘、堆栈等信息。
13. 在线构建器:通过拖动表单元素生成相应的HTML代码。
14. 连接池:当前系统数据库连接池状态,分析SQL找出系统性能瓶颈。
二、技术细节
1. MyBatis简介:
– MyBatis是一个半ORM框架,内部封装了JDBC,只需关注SQL语句本身,无需处理繁琐的JDBC过程。
– MyBatis使用XML或注解配置和映射原生信息,将POJO映射成数据库记录。
– MyBatis通过xml文件或注解方式配置各种statement,通过java对象和statement中的动态sql参数进行映射,生成最终执行的sql,并返回结果。
2. MyBatis优点与缺点:
– 优点:基于SQL编程,灵活;不会对现有应用或数据库设计造成影响;提供XML标签支持编写动态SQL,可重用;减少JDBC代码和手动设置参数、获取结果集;兼容各种数据库;与Spring集成良好;提供对象关系映射标签,支持对象关系组件维护。
– 缺点:SQL语句编写工作量大,尤其当字段多、关联表多时;对开发人员SQL功底有一定要求;数据库移植性差。
3. MyBatis中{}和${}的区别:
– {…}是预编译处理,用于防止SQL注入,提高系统安全性;${…}是字符串替换。
– MyBatis在处理{…}时,会替换为?号,调用PreparedStatement的set方法来赋值;处理${…}时则直接替换成变量的值。
4. 当实体类属性名与数据库表字段名不一致时,可通过以下两种方式解决:
– 在查询的sql语句中使用别名,让别名和实体类属性名一致。
– 在MyBatis映射文件中,通过标签映射字段名和实体类属性名的关系。
5. MyBatis分页原理:
– 使用RowBounds对象进行内存分页,而非物理分页。
– 可在sql内直接拼写带有物理分页的参数完成物理分页功能,或使用分页插件实现物理分页。
6. MyBatis如何执行批量插入:
– 创建简单的insert语句。
– 在Java代码中通过SqlSession执行批处理插入。
7. MyBatis中的其他XML映射标签:除了常见的select|insert|update|delete标签外,还有动态sql的9个标签等。
8. MyBatis实现一对一、一对多的方式及操作:
– 有联合查询和嵌套查询两种方式。联合查询是通过在resultMap里配置association节点配置一对一的类完成;嵌套查询是根据一个表的结果外键id去另一个表查询数据,也是通过association配置,但另一个表的查询通过select属性配置。
9. MyBatis的缓存机制:
– 整体缓存包括一级缓存(LocalCache)和二级缓存(分布在多个SqlSession间的共享缓存)。
– 一级缓存是SqlSession级别的,命中一级缓存可避免直接对数据库查询,提高性能。
– 二级缓存是SqlSession之间共享的,通过Cache接口实现细粒度的控制。在分布式环境下需考虑使用集中式缓存解决脏数据问题。默认缓存实现是基于本地的,不适用于分布式环境。直接使用Redis、Memcached等分布式缓存可能更为合适。更多源码资料获取方式请私信获取!
