ruoyi-plus-server:引入Mybatis-Plus
Posted 北海派
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ruoyi-plus-server:引入Mybatis-Plus相关的知识,希望对你有一定的参考价值。
背景:著名开源管理系统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、依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.10</version> </dependency>
三、引入MP,sql操作更简便
1、官方文档:https://mp.baomidou.com/
2、版本:3.3.0
3、依赖
<dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.3.0</version> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-extension</artifactId> <version>3.3.0</version> </dependency>
四、project目录下新建demo模块
1、数据库脚本
CREATE TABLE `demo` ( `id` varchar(32) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `des` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic; INSERT INTO `demo` VALUES (\'1\', \'demomom\', \'好\');
2、目录结构
3、模块代码
①Demo
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; /** * @ClassName Demo * @Description TODO * @Author 北海派 * @Date 2020/5/18 19:24 * @Version 1.0 **/ @Data @TableName("demo") public class Demo{ @TableId(value = "id", type = IdType.UUID) private String id; @TableField("name") private String name; @TableField("des") private String des; }
②DemoMapper
import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.bhp.ruoyiplus.project.demo.domain.Demo; /** * @ClassName DemoMapper * @Description TODO * @Author 北海派 * @Date 2020/5/18 19:30 * @Version 1.0 **/ public interface DemoMapper extends BaseMapper<Demo> { }
③DemoService
import com.baomidou.mybatisplus.extension.service.IService; import com.bhp.ruoyiplus.project.demo.domain.Demo; /** * @ClassName DemoService * @Description TODO * @Author 北海派 * @Date 2020/5/18 19:32 * @Version 1.0 **/ public interface DemoService extends IService<Demo> { }
④DemoServiceImpl
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.bhp.ruoyiplus.project.demo.domain.Demo; import com.bhp.ruoyiplus.project.demo.mapper.DemoMapper; import com.bhp.ruoyiplus.project.demo.service.DemoService; import org.springframework.stereotype.Service; /** * @ClassName DemoServiceImpl * @Description TODO * @Author 北海派 * @Date 2020/5/18 19:32 * @Version 1.0 **/ @Service public class DemoServiceImpl extends ServiceImpl<DemoMapper, Demo> implements DemoService { }
⑤DemoController
import com.bhp.ruoyiplus.framework.web.controller.BaseController; import com.bhp.ruoyiplus.project.demo.domain.Demo; import com.bhp.ruoyiplus.project.demo.service.DemoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @ClassName DemoController * @Description TODO * @Author 北海派 * @Date 2020/5/18 19:22 * @Version 1.0 **/ @RestController @RequestMapping("/demo") public class DemoController extends BaseController { @Autowired private DemoService demoService; @GetMapping() public Demo get(){ Demo demo = demoService.getById("1"); return demo; } }
4、重启项目,用Postman获取验证码、登录获取token、访问接口,报如下错误
原因:项目使用的mybatis及其相关配置MP中自带的mybatis冲突,需要排除项目中的依赖及配置
①修改POM文件,删除如下依赖
②修改配置文件,删除application.yml中的mybatis配置,增加MP配置
# MyBatis配置 #mybatis: # # 搜索指定包别名 # typeAliasesPackage: com.bhp.ruoyiplus.project.**.domain # # 配置mapper的扫描,找到所有的mapper.xml映射文件 # mapperLocations: classpath*:mybatis/**/*Mapper.xml # # 加载全局的配置文件 # configLocation: classpath:mybatis/mybatis-config.xml # MyBatis-Plus配置 mybatis-plus: mapper-locations: classpath*:mybatis/**/*Mapper.xml #实体扫描 typeAliasesPackage: com.bhp.ruoyiplus.project.**.domain
③删除MybatisConfig配置类
④重启项目,再次访问接口,响应正常
⑤修改DemoController,测试框架统一响应,与框架分页响应是否正常,经测试接口均正常
import com.bhp.ruoyiplus.framework.web.controller.BaseController; import com.bhp.ruoyiplus.framework.web.domain.AjaxResult; import com.bhp.ruoyiplus.framework.web.page.TableDataInfo; import com.bhp.ruoyiplus.project.demo.domain.Demo; import com.bhp.ruoyiplus.project.demo.service.DemoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @ClassName DemoController * @Description TODO * @Author 北海派 * @Date 2020/5/18 19:22 * @Version 1.0 **/ @RestController @RequestMapping("/demo") public class DemoController extends BaseController { @Autowired private DemoService demoService; @GetMapping() public AjaxResult get() { Demo demo = demoService.getById("1"); if (null==demo){ return AjaxResult.error("无数据"); } return AjaxResult.success(demo); } @GetMapping("/list") public TableDataInfo getList() { startPage(); return getDataTable(demoService.list()); } }
以上是关于ruoyi-plus-server:引入Mybatis-Plus的主要内容,如果未能解决你的问题,请参考以下文章