# MyBatisPlus **Repository Path**: hmfdev/MyBatisPlus ## Basic Information - **Project Name**: MyBatisPlus - **Description**: MyBatis-Plus + SpringBoot实现简单权限管理 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2021-09-08 - **Last Updated**: 2024-06-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # MyBatisPlus #### 介绍 MyBatis-Plus + SpringBoot实现简单权限管理 #### 软件架构 ##### 技术栈 前端:Layui 2.5.6、JQuery 3.5.1 后端:Spring Boot 2.5.4、MP(MyBatisPlus) 3.4.1、Thymeleaf 3.0.11 #### 安装教程 1. xxxx 2. xxxx 3. xxxx #### 使用说明 1. xxxx 2. xxxx 3. xxxx #### 项目图片展示 ##### 登录页 ![输入图片说明](https://images.gitee.com/uploads/images/2021/0910/225027_45010341_5474516.png "login.png") #### 提交日志细节记录 1. 【1.本地初始化提交】 1)IDEA中使用 Spring Initializr 创建一个SpringBoot项目 2)使用git clone gitee版本库中新建的repository项目到本地,加入clone下来的内容到新建的SpringBoot项目中,整合后,做本地初始化提交 3)我把IDEA生成的.gitignore和gitee中clone下来的.gitignore合并到一起了 2. 【2.引入需要的 pom.xml 依赖】 1)把版本号统一放到了<properties>标签中 2)hutool工具依赖,可以简化我们的代码开发;MD5 的加盐加密使用到了它 3)使用webjars引入有关的js,它把前端的js、html内容打包成了jar包的方式,我们直接引入jar包即可使用 3. 【3.application.yml配置 和 MyBatisPlus 配置类配置】 1)配置数据源,注意配置 url 时不要忘记了配置时区 2)MyBatisPlus配置的是:主键策略 id-type: auto 表示依赖数据库的自增 等 3)配置日志的输出级别 4)在启动类上配置包扫描 @MapperScan 5)引入MyBatisPlus的插件,通过配置类的方式,别忘加上@Configuration注解 4. 【4.MyBatisPlus代码生成器-1】 1)引入代码生成器所需的依赖,和它所需要的模板引擎的依赖 2)在test目录里把测试类删掉,在里面编写代码生成器 3)代码生成器 CodeGenerator 其实可以直接到 MyBatis-plus 的官网中去直接copy,我就是这么做的 4)修改官网 copy下来的 CodeGenerator 代码生成器配置,根据需要配置为自己的内容 5. 【5.MyBatisPlus代码生成器-2】 1)主要是代码生成器 CodeGenerator 类的各个配置 2)具体的每个配置我都加了注释,其中有三个 /// 斜杠开头的就是我另外加的注释 6. 【6.MyBatisPlus代码生成器-3】 1)有的表有创建时间、修改时间、创建人、修改人、和 逻辑删除字段,这些需要在代码生成器的策略中设置一下 2)逻辑删除字段也可以在实体类中通过注解去配置:如 @TableField("deleted"),这其实是策略中配置后,生成代码时自动添加上的注解 3)设置自动填充,也可以通过在实体类中通过注解去配置:如 @TableField(value = "create_time", fill = FieldFill.INSERT) 这其实是策略中配置后,生成代码时自动添加上的注解 4)FieldFill.INSERT 插入时填充、FieldFill.UPDATE 修改时填充 5)其中 创建时间、修改时间、创建人id、修改人id 设置到数组列表中,然后再设置到策略中 6)上面的都配置完成后,运行 CodeGenerator 类的 main 方法,输入模块名 project、然后再输入表名(用英文逗号隔开),完成后就生成了各层的代码了 7. 【7.MyBatisPlus代码生成器-4】 1)把表对应实体类的创建时间、修改时间、创建人、修改人、和 逻辑删除字段,这5个字段提取出来作为一个公共字段的 BaseEntity 类,需要时继承就行,这样做是为了减少实体类字段代码的冗余 2)因为提取出来了上面五个字段的基类 BaseEntity 类,所以需要重新生成,所以这里就需要在代码生成器 CodeGenerator 类中,设置配置重新生成 3)还需要设置实体类基础的父类,和写于父类中的公共字段,最后打开 cfg.setFileCreate() 这段代码,重新覆盖生成的内容 4)已经生成的实体类是有上面说的五个字段的,怎么办呢?可以通过判断执行配置的代码来解决 5)运行之后,需要继承基类的就输入 y,然后输入需要继承基类的表名,英文逗号分隔 6)再次运行,不需要继承基类的就输入 n,然后输入不需要继承基类的表名,英文逗号分隔 7)自定义模板的话,可以参照官方文档来设置 8)代码生成器的依赖只是在生成代码的时候有用,在项目中其实是没有用的,为了减小实际项目中包的大小,需要配置一下: 解决方法是,第一种:把作用域改为test <scope>test</scope> 这样就只在测试的时候依赖它,即只有测试目录的文件才引用他,这就是为什么把 CodeGenerator 类,放到 test 文件夹中的原因了 第二种:把代码生成器设置到子项目中(在我的云E办项目中,使用的就是这种方法) 8. 【8.加入数据库脚本文件 project.sql】 9. 【9.登录功能实现-1】 1)数据库脚本文件中已经初始化了一些数据 2)该项目为非前后端分离项目 3)页面文件放在 resources/templates 目录下,使用的是 LayUI 框架 4)把静态页面改造为动态页面,需要在页面的<html>标签中引入thymeleaf的依赖 xmlns:th="http://www.thymeleaf.org" 5)th:action="@{/auth/login} 使用thymeleaf的风格写提交表单的路径,它会自动带上项目的根路径 6)引入样式的方式 th:href="@{/webjars/layui/css/layui.css} 不用写版本号是因为我们在pom.xml文件中引入了 webjars-locator 依赖 7)thymeleaf页面中使用@默认从static下面寻找资源文件,这里就是从引入包下的static文件中找 10. 【10.登录功能实现-2】 1)限制用户名输入的长度 2)登录流程的代码编写 11. 【11.登录功能实现-3】 1)把原的mapper层包名,修改为 dao 2)在 login.html 中,设置错误提示信息 3)设置一个配置类 WebConfig 在该类中设置跳转路径 4)到这里就可以运行,在 localhost:8080 中查看到登录页了 5)然后输入用户名:mp,密码:123456,就可以登录跳转到首页,登录功能也基本完成了 12. 【12.添加项目图片展示-登录页】 13. 【13.登出及显示当前登录人姓名】 1)编写 main.html 页面,引入 thymeleaf 命名空间,改造为动态页面 2)系统登录要注销 session 3)在登录页中写上默认的登录名和密码,方便开发过程中直接登录 14. 【14.动态渲染资源列表-1】 1)更新 readme 部分内容 2)因为之前修改过 mapper 层的包名为就 dao,所以这里 xxxmapper.xml 的命名空间也要修改为相应的包名 3)${ew.customSqlSegment} 在 ResourceMapper.xml 文件的 sql 语句中是固定写法 15. 【15.动态渲染资源列表-2】 1)修改 ResourceVO 类主键字段错误问题 2)这里service层的代码需要好好理解一下才行 16. 【16.点击菜单进入功能区的js方法】 1)在main.html页面中使用到了JQuery,所以这里要做JQuery的引入 2)js方法写在了单独的js文件中,然后在main.html页面中引入该js方法文件,还要注意他们之间绑定的写法 17. 【17.客户管理查询一】 1)在加入的四个静态页面中,引入thymeleaf的依赖 xmlns:th="http://www.thymeleaf.org",改造为动态页面 2)在 customerList.html 页面中引入了 layui 和 jQuery 的js 18. 【18.客户管理查询二】 1)通过layui动态渲染表格,思路是:使用layui的js方法,它向后端通过AJAX的方式请求数据,返回数据后做表格的渲染 2)js方法文件一般写在一个文件夹里头,如这里在static/js目录下新建了 customer 目录 并在目录中 创建了 customer.js 文件 3)使用 toolbar 绑定工具条 4)调整使用AJAX请求返回的数据格式 19. 【19.客户管理查询三】 1)在 customerList.html 页面中,引入该页面对应的方法js文件 customer.js 2)修改 CustomerController 类的请求类路径为 /customer 3)通过 CustomerController 类的 toList() 方法直接返回视图,注意返回的视图路径,正确的话,方法的前面是会有一个图标的,点击图标可以直接跳到页面是 4)返回的数据对象,你可以自己封装,也可以使用现成的 R 对象(由于使用度底,所以就被废弃了,但还可以用),是 MyBatisPlus 提供的 5)在 CustomerController 类的 list() 方法中,直接通过调用方法的方式来实现模糊查询返回数据 6)使用 postman 测试 list() 返回成功,测试是 page 和 limit 参数不能为空 20. 【20.客户管理查询四】 1)通过 JQuery 获取到查询条件的值,如 realName、phone 2)绑定点击查询按钮,执行 js 中的查询方法 query() 3)通过在实体类的时间字段上添加注解 @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss") 来格式化为我们需要的时间格式 4)抽离出公共的部分封装为一个类 ResultUtil 中的方法,减少重复的代码 21. 【21.客户新增一】 1)把弹出层放到Ajax请求里,这样在获取数据后就能直接设置到弹出层中 2)这里有一个页面的重新渲染 layui.form.render(); 需要注意 22. 【22.客户新增二】 1)在controller层添加跳转到新增页面的toAdd()方法 2)在controller层写提交的add()方法,入参直接就是实体类了 3)成功或失败的响应,封装成一个方法写在 ResultUtil 中,减少冗余 4)前端弹出层的代码也封装了,这里还用到了控制同步和异步请求的设置处理 23. 【23.修复客户管理列表不显示问题】 1)原因是前端数据展示的字段写错了 #### 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解 Gitee 上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是 Gitee 最有价值开源项目,是综合评定出的优秀开源项目 5. Gitee 官方提供的使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物是一档用来展示 Gitee 会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)