SpringCloud+Vue+Python人工智能(fastAPI,机器学习,深度学习)前后端架构各功能实现思路——SpringCloud后端——整合mybatis plus和代码生成器

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


在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ydenergy_殷志鹏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值