SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——主目录(持续更新):https://blog.csdn.net/grd_java/article/details/144986730 |
---|
1. 修改依赖
主目录中的环境搭建,默认不使用mybatis-plus,如果有需求,这里提供修改思路
1. 根目录pom中,添加3.5.9的统一版本管理,以及代码生成器需要的模版依赖
<mybatis_plus.version>3.5.9</mybatis_plus.version>
<!--添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认):这是代码生成器需要的依赖-->
<velocity-engine-core>2.4.1</velocity-engine-core>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>${mybatis_plus.version}</version>
</dependency>
<!--mybatis plus 代码生成器-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>${mybatis_plus.version}</version>
</dependency>
<!--添加 模板引擎 依赖,MyBatis-Plus 支持 Velocity(默认):这是代码生成器需要的依赖-->
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-engine-core</artifactId>
<version>${velocity-engine-core}</version>
</dependency>
2. 将common模块对于mybatis的依赖引用注释掉,换为mybatis plus 的
2. 代码生成器
1. 以权限认证模块为例,复制其java文件夹路径
2. 代码生成器,因为每个模块只需要生成一次或几次,与实际业务无关,所以放在测试类中
package com.test;
import com.baomidou.mybatisplus.generator.FastAutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.engine.FreemarkerTemplateEngine;
import java.sql.SQLException;
/**
* 代码生成器
*/
public class MybatisPlusGeneratorUtil{
/**
* 执行 run
*/
public static void main(String[] args) throws SQLException {
// 使用 FastAutoGenerator 快速配置代码生成器
FastAutoGenerator.create("jdbc:mysql://localhost:3306/yd_oa_db?serverTimezone=GMT%2B8", "root", "root")
.globalConfig(builder -> {
builder.author("Your Name") // 设置作者
.outputDir("yd_oa_java_security/src/main/java/"); // 输出目录
})
.packageConfig(builder -> {
builder.parent("com.yd_oa_java_cloud.security") // 设置父包名
.controller("controller")
.entity("entity") // 设置实体类包名
.mapper("mapper") // 设置 Mapper 接口包名
.service("service") // 设置 Service 接口包名
.serviceImpl("service.impl") // 设置 Service 实现类包名
.xml("mappers"); // 设置 Mapper XML 文件包名
})
.strategyConfig(builder -> {
builder.addInclude("sys_user", "sys_role","sys_menu","sys_role_menu","sys_user_role") // 设置需要生成的表名
.entityBuilder()
.enableLombok() // 启用 Lombok
.enableTableFieldAnnotation() // 启用字段注解
.controllerBuilder()
.enableRestStyle(); // 启用 REST 风格
})
// .templateEngine(new FreemarkerTemplateEngine()) // 使用 Freemarker 模板引擎
.execute(); // 执行生成
}
}
3. 运行即可生成
4. 将生成好的mappers文件夹,剪切到resources文件夹下,这样会直接打包到target中,否则会找不到xml文件
3. 确保xml打包到target中
1. maven.clean后,进行install打包
2. 确保打包到了target文件夹中
4. 相关配置
1. yml相关配置
我们要指定mapper.xml文件的位置,代码生成器生成到哪里,就复制那个文件夹的path
可以指定到nacos配置中心(推荐),也可以指定到自己的配置文件中
mybatis-plus:
# 对于 Maven 多模块项目,扫描路径应以 classpath*: 开头,以加载多个 JAR 包中的 XML 文件。
mapper-locations: classpath*:mappers/*.xml #配置mapper xml文件的路径
2. 分页插件
1. 根目录pom引入3.5.9,还是分两步,先管理版本,然后统一管理jar包
<!--mybatis-plus分页插件,jdk1.8用-->
<mybatis-plus-jsqlparser-4.9>3.5.9</mybatis-plus-jsqlparser-4.9>
<!-- jdk 8+ 引入可选模块 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser-4.9</artifactId>
<version>${mybatis-plus-jsqlparser-4.9}</version>
</dependency>
common模块引入依赖
<!-- jdk 8+ 引入可选模块 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-jsqlparser-4.9</artifactId>
</dependency>
2. 配置分页插件,这里进行扫描mapper经常会报找不到mapper,此时可以先用着,如果具体微服务使用时确实找不到mapper的话,可以往下看
package com.yd_oa_java_cloud.common.config;
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
@MapperScan(value = "com.yd_oa_java_cloud.*.mapper")
public class MybatisPlusConfig {
/**
* 添加分页插件
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL)); // 如果配置多个插件, 切记分页最后添加
// 如果有多数据源可以不配具体类型, 否则都建议配上具体的 DbType
return interceptor;
}
}
如果具体微服务找不到mapper,就启动类加注解即可
package com.yd_oa_java_cloud.security;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//启动类,springIOC容器加载时 扫描的包范围为com.yd_oa_java_cloud,主要要将你想要spring管理的包都放在一个固定路径下
//我们写代码时,经常创建包搞一个什么com.XXXXX.XXXXX,然后配置时就用com.XXXXX
@MapperScan("com.yd_oa_java_cloud.*.mapper")
@SpringBootApplication(scanBasePackages = {"com.yd_oa_java_cloud"})
public class YdOaCloudSecurityRunApplication {
public static void main(String[] args) {
SpringApplication.run(YdOaCloudSecurityRunApplication.class,args);
}
}
5. 测试
1. 我们用一个接口测试分页,传参,json实体类对应
mapper.xml,查询sys_user表,分页查询,第一页,每页2条数据。因为我们使用分页插件,不需要编写limit
使用分页很简单,mapper接口第一个参数是Page类实例对象即可
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.yd_oa_java_cloud.security.mapper.SysUserMapper">
<select id="getAllUserPage" resultType="com.yd_oa_java_cloud.security.entity.SysUser">
select id,username,password from sys_user
</select>
</mapper>
2. service层接口
3. controller接口
package com.yd_oa_java_cloud.security.controller;
import cn.dev33.satoken.stp.StpUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yd_oa_java_cloud.base.entity.vo.ResponseVO;
import com.yd_oa_java_cloud.security.entity.SysUser;
import com.yd_oa_java_cloud.security.service.ISysUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* <p>
* 前端控制器
* </p>
*
* @author Your Name
* @since 2025-01-10
*/
@RestController
@RequestMapping("/sysUser")
public class SysUserController {
@Autowired
private ISysUserService iSysUserService;
@PostMapping("/page/{current}/{size}")
public ResponseVO getAllUserPage(@RequestBody SysUser sysUser, @PathVariable Integer current,@PathVariable Integer size){
Page<SysUser> sysUserPage = new Page<>(current, size);//构建分页对象
List<SysUser> sysUserList = iSysUserService.getAllUserPage(sysUserPage);//传入分页对象,分页查询
return new ResponseVO("success:current="+current+",size="+size,20000,"chenggong:username="+sysUser.getUsername(),sysUserList);
}
4. 测试结果
6. 主键生成策略
只需要在实体类的主键字段,添加type指定即可,推荐IdType.ASSIGN_ID或者IdType.ASSIGN_UUID