背景:著名开源管理系统ruoyi-vue是基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统(https://gitee.com/y_project/RuoYi-Vue)

需求:站在巨人的肩膀上打造一个更符合自己使用习惯的管理系统

源码:https://gitee.com/baohaipeng/ruoyi-plus-server

方法:

   一、下载资源,项目跑起来

    1、下载地址:https://gitee.com/y_project/RuoYi-Vue.git

    2、按照官方提供的sql文件,创建数据库

    3、打开ruoyi项目修改数据库连接(application-druid.yml),修改redis等其他配置后,启动无误代表项目源码正常、数据库正常

    4、为示区别,修改包名(com.ruoyi——>com.bhp.ruoyiplus),此时不能直接启动,还需修改以下两处

     ①typeAliasesPackage

      

      ②ApplicationConfig

      

      备注:可以在这里直接改为com.bhp.ruoyiplus.project.**.mapper,也可以把这里的@MapperScan删掉,加在启动类。由于后期我想将该包发布成依赖供其他项目使用,为避免冲突,我选择删掉该处注解,在启动类上进行扫描

      

   二、引入lombok,对象代码更干净

    1、版本:1.16.10

    2、依赖

  1. <dependency>
  2. <groupId>org.projectlombok</groupId>
  3. <artifactId>lombok</artifactId>
  4. <version>1.16.10</version>
  5. </dependency>

   三、引入MP,sql操作更简便

    1、官方文档:https://mp.baomidou.com/

    2、版本:3.3.0

    3、依赖

  1. <dependency>
  2. <groupId>com.baomidou</groupId>
  3. <artifactId>mybatis-plus-boot-starter</artifactId>
  4. <version>3.3.</version>
  5. </dependency>
  6. <dependency>
  7. <groupId>com.baomidou</groupId>
  8. <artifactId>mybatis-plus-extension</artifactId>
  9. <version>3.3.</version>
  10. </dependency>

   四、project目录下新建demo模块

    1、数据库脚本

  1. CREATE TABLE `demo` (
  2. `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  3. `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  4. `des` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  5. PRIMARY KEY (`id`) USING BTREE
  6. ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;
  7.  
  8. INSERT INTO `demo` VALUES ('', 'demomom', '好');

    2、目录结构

      

    3、模块代码

     ①Demo

  1. import com.baomidou.mybatisplus.annotation.IdType;
  2. import com.baomidou.mybatisplus.annotation.TableField;
  3. import com.baomidou.mybatisplus.annotation.TableId;
  4. import com.baomidou.mybatisplus.annotation.TableName;
  5. import lombok.Data;
  6.  
  7. /**
  8. * @ClassName Demo
  9. * @Description TODO
  10. * @Author 北海派
  11. * @Date 2020/5/18 19:24
  12. * @Version 1.0
  13. **/
  14. @Data
  15. @TableName("demo")
  16. public class Demo{
  17.  
  18. @TableId(value = "id", type = IdType.UUID)
  19. private String id;
  20. @TableField("name")
  21. private String name;
  22. @TableField("des")
  23. private String des;
  24. }

     ②DemoMapper

  1. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  2. import com.bhp.ruoyiplus.project.demo.domain.Demo;
  3.  
  4. /**
  5. * @ClassName DemoMapper
  6. * @Description TODO
  7. * @Author 北海派
  8. * @Date 2020/5/18 19:30
  9. * @Version 1.0
  10. **/
  11. public interface DemoMapper extends BaseMapper<Demo> {
  12. }

     ③DemoService

  1. import com.baomidou.mybatisplus.extension.service.IService;
  2. import com.bhp.ruoyiplus.project.demo.domain.Demo;
  3.  
  4. /**
  5. * @ClassName DemoService
  6. * @Description TODO
  7. * @Author 北海派
  8. * @Date 2020/5/18 19:32
  9. * @Version 1.0
  10. **/
  11. public interface DemoService extends IService<Demo> {
  12. }

      ④DemoServiceImpl

  1. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  2. import com.bhp.ruoyiplus.project.demo.domain.Demo;
  3. import com.bhp.ruoyiplus.project.demo.mapper.DemoMapper;
  4. import com.bhp.ruoyiplus.project.demo.service.DemoService;
  5. import org.springframework.stereotype.Service;
  6.  
  7. /**
  8. * @ClassName DemoServiceImpl
  9. * @Description TODO
  10. * @Author 北海派
  11. * @Date 2020/5/18 19:32
  12. * @Version 1.0
  13. **/
  14. @Service
  15. public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService {
  16. }

     ⑤DemoController

  1. import com.bhp.ruoyiplus.framework.web.controller.BaseController;
  2. import com.bhp.ruoyiplus.project.demo.domain.Demo;
  3. import com.bhp.ruoyiplus.project.demo.service.DemoService;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.web.bind.annotation.GetMapping;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8.  
  9. /**
  10. * @ClassName DemoController
  11. * @Description TODO
  12. * @Author 北海派
  13. * @Date 2020/5/18 19:22
  14. * @Version 1.0
  15. **/
  16. @RestController
  17. @RequestMapping("/demo")
  18. public class DemoController extends BaseController {
  19.  
  20. @Autowired
  21. private DemoService demoService;
  22.  
  23. @GetMapping()
  24. public Demo get(){
  25. Demo demo = demoService.getById("1");
  26. return demo;
  27. }
  28. }

    4、重启项目,用Postman获取验证码、登录获取token、访问接口,报如下错误

      

     原因:项目使用的mybatis及其相关配置MP中自带的mybatis冲突,需要排除项目中的依赖及配置

     ①修改POM文件,删除如下依赖

      

     ②修改配置文件,删除application.yml中的mybatis配置,增加MP配置      

  1. # MyBatis配置
  2. #mybatis:
  3. # # 搜索指定包别名
  4. # typeAliasesPackage: com.bhp.ruoyiplus.project.**.domain
  5. # # 配置mapper的扫描,找到所有的mapper.xml映射文件
  6. # mapperLocations: classpath*:mybatis/**/*Mapper.xml
  7. # # 加载全局的配置文件
  8. # configLocation: classpath:mybatis/mybatis-config.xml
  9.  
  10. # MyBatis-Plus配置
  11. mybatis-plus:
  12. mapper-locations: classpath*:mybatis/**/*Mapper.xml
  13. #实体扫描
  14. typeAliasesPackage: com.bhp.ruoyiplus.project.**.domain

     ③删除MybatisConfig配置类

      

       ④重启项目,再次访问接口,响应正常

      

     ⑤修改DemoController,测试框架统一响应,与框架分页响应是否正常,经测试接口均正常

  1. import com.bhp.ruoyiplus.framework.web.controller.BaseController;
  2. import com.bhp.ruoyiplus.framework.web.domain.AjaxResult;
  3. import com.bhp.ruoyiplus.framework.web.page.TableDataInfo;
  4. import com.bhp.ruoyiplus.project.demo.domain.Demo;
  5. import com.bhp.ruoyiplus.project.demo.service.DemoService;
  6. import org.springframework.beans.factory.annotation.Autowired;
  7. import org.springframework.web.bind.annotation.GetMapping;
  8. import org.springframework.web.bind.annotation.RequestMapping;
  9. import org.springframework.web.bind.annotation.RestController;
  10.  
  11. /**
  12. * @ClassName DemoController
  13. * @Description TODO
  14. * @Author 北海派
  15. * @Date 2020/5/18 19:22
  16. * @Version 1.0
  17. **/
  18. @RestController
  19. @RequestMapping("/demo")
  20. public class DemoController extends BaseController {
  21.  
  22. @Autowired
  23. private DemoService demoService;
  24.  
  25. @GetMapping()
  26. public AjaxResult get() {
  27. Demo demo = demoService.getById("1");
  28. if (null==demo){
  29. return AjaxResult.error("无数据");
  30. }
  31. return AjaxResult.success(demo);
  32. }
  33.  
  34. @GetMapping("/list")
  35. public TableDataInfo getList() {
  36. startPage();
  37. return getDataTable(demoService.list());
  38. }
  39. }
备注:因为该接口使用的是MP的内置方法,如果响应正常,说明MP已经引入成功,并且分页使用也正常。MP本身也带有分页插件,此处选择继续使用框架提供的pagehelper,目前这个地方不是很关键,后期需要时,会进行变更。

ruoyi-plus-server(一):引入Mybatis-Plus的更多相关文章

  1. springboot引入mybatis遇到的坑

      前边分享了springboot项目的创建及springboot项目的默认配置文件等,想温习的小伙伴可移步至文章末尾阅读,感谢.今天来分享下springboot引入mybatis框架的步骤,有小伙伴 ...

  2. sring引入mybatis

    1.首先框架结构是这样的(jar包还是要导的) 2.web.xml和springMVC-servlet.xml未作任何新的配置,这里简单贴一下代码: <?xml version="1. ...

  3. 在eclipse中引入mybatis和spring的约束文件

    eclipse中引入mybatis约束文件步骤: 首先: config的key值 http://mybatis.org/dtd/mybatis-3-config.dtd mapper的key值 htt ...

  4. spring boot使用注解的方式引入mybatis的SqlSessionDaoSupport

    出现这个问题, 说明一点, 我对spring的注解方式的配置只是知道一个皮毛. 没有深入理解. 有时间要把这部分充充电 package com.zhike.qizhi.common.dao; impo ...

  5. server.xml引入子文件配置(tomcat虚拟主机)

    在配置tomcat虚拟主机时候,如何每一个虚拟主机写成单独文件,server.xml包含这些子文件? 如以下<OneinStack>中,添加JAVA环境虚拟主机后tomcat配置文件详情: ...

  6. server.xml引入子文件配置(tomcat虚拟主机)[转]

    在配置tomcat虚拟主机时候,如何每一个虚拟主机写成单独文件,server.xml包含这些子文件? 如以下<OneinStack>中,添加JAVA环境虚拟主机后tomcat配置文件详情: ...

  7. Spring Boot 集成 MyBatis和 SQL Server实践

    概 述 Spring Boot工程集成 MyBatis来实现 MySQL访问的示例我们见过很多,而最近用到了微软的 SQL Server数据库,于是本文则给出一个完整的 Spring Boot + M ...

  8. MyBatis 源码分析——介绍

    笔者第一次接触跟MyBatis框架是在2009年未的时候.不过那个时候的他并不叫MyBatis,而是叫IBatis.2010年的时候改为现在的名字--MyBatis.这几年过去了,对于笔者来讲有一点陌 ...

  9. 玩转 SSH(六):SpringMVC + MyBatis 架构搭建(注解版)

    一.创建 SSMVCAnnoDemo 项目 点击菜单,选择“File -> New Project” 创建新项目.选择使用 archetype 中的 maven-webapp 模版创建. 输入对 ...

  10. IDEA下使用maven构建web项目(SpringMVC+Mybatis整合)

    需求背景:由于最近总是接到一些需求,需要配合前端团队快速建设移动端UI应用或web应用及后台业务逻辑支撑的需求,若每次都复用之前复杂业务应用的项目代码,总会携带很多暂时不会用到的功能或组件,这样的初始 ...

随机推荐

  1. 如何快速地恢复你的win10

    win10清单 这份List不会介绍如何安装系统,而是当面对一个新系统,如何最快的搭建,或者说恢复到一个生产力环境. 必备习惯 备份软件安装包和常用内容上云是高效恢复的两点关键. 备份软件安装包 我的 ...

  2. Centos史上新版最详细步骤-Linux无脑命令式oracle11g静默安装

    1. 关闭selinux 1.1 sed -i "s/SELINUX=enforcing/SELINUX=disabled/" /etc/selinux/config 1.2 或者 ...

  3. Asp.Net Core 3.1学习-依赖注入、服务生命周期(6)

    1.前言 面向对象设计(OOD)里有一个重要的思想就是依赖倒置原则(DIP),并由该原则牵引出依赖注入(DI).控制反转(IOC)及其容器等概念.在学习Core依赖注入.服务生命周期之前,下面让我们先 ...

  4. Linux网络服务第七章DNS域名解析服务

    端口:53 一.DNS服务器 正向解析:根据域名查IP地址,即将指定的域名解析为相对应的IP地址.域名的正向解析是DNS服务器最基本的功能,也是最常用的功能. 反向解析:根据IP地址查域名,即将指定的 ...

  5. String、String[]、ArrayList<String>之间的转换

    1. ArrayList<String> 转换为 String[]: ArrayList<String>  list = new ArrayList<>(); li ...

  6. LaTex中文article模板(支持代码、数学、TikZ)

    代码 请使用XeLatex编译 main.tex \documentclass{article} \usepackage{ctex} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ...

  7. redis- info调优入门-《每日五分钟搞定大数据》

    本文根据redis的info命令查看redis的内存使用情况以及state状态,来观察redis的运行情况以及需要作出的相应优化. info 1.memory used_memory:13409011 ...

  8. Java中的集合Queue

    2019独角兽企业重金招聘Python工程师标准>>> package com.zhaogang.test; import org.junit.Test; import java.u ...

  9. js特效:鼠标滑过图片时切换为动图

    效果展示 事前准备 一张普通的静态图+与其对应的gif图. 实现思路 获取图片的src,改变其后缀,使其变成与之对应的gif图片.(很简单有木有= =) 具体实现 编写html代码 <div c ...

  10. 使用cpplint检测代码规范

    0. cpplint - python脚本, google使用它作为自己的C++代码规范检查工具: 1. 安装 方法一: $sudo apt-get install python-pip $pip i ...