Java-若依-自定义模块二次开发(不使用代码生成器gen)

在此之前先保证若依项目版本为分离版,并且已经可以正常运行访问若依项目的前后端了
1、该博客旨在使用若依的同时,新建一个自定义模块,但不使用若依自带的代码生成器,而是单纯的新建前后端模块,快速的入门并进行基于若依的二次开发

1、前端-新建目录菜单

1-1、新建目录与菜单,通过前端页面点击生成菜单
在这里插入图片描述
a、系统管理-菜单管理-左上角新增
b、如果想要一个完全自定义的一级目录,那么上级菜单就为 主类目
c、想要实现类似系统管理模块下有多个功能的情况,那么菜单类型就为 目录
d、菜单名称,这边推荐先命名xx测试xx,保证区分度,同时排序数字越小,菜单/目录越往上
e、路由地址,这边推荐先以 test,后续熟悉操作后再进行自定义模块开发。
f、点击确定后,刷新一下,会在左边菜单/目录栏看到我们新增的

1-2、新建目录下的菜单
a、接下来在xx测试xx目录下新建功能、譬如系统管理-用户管理
在这里插入图片描述
b、通过图片示意的新增测试模块下的菜单,这是命名为测试菜单1
c、路由地址一般为该菜单的对应单词,例如用户管理是user、角色管理是role,这里我么就设置为example1
d、组件路径,这是应该是对应在前端代码中,对应vue代码的路径,但是我们这里还没创建、所以可以提前预设一下,例如用户管理-system/user/index;角色管理-system/role/index,这是我就设置为test/example1/index
e、对于这个目前还不是很清楚。不过基于其他模块的进行类比菜单的权限字符都是目录:菜单:list,这里我设置为test:example1:list
f、剩下的默认即可,然后点击确定,刷新页面。可以在菜单栏看到新增的子菜单-测试菜单1(example1)
g、额外:可以通过数据库观察到新增目录与菜单信息 sys_menu
在这里插入图片描述

在这里插入图片描述

2、前端-文件||代码

a、此时点击测试菜单1是没办法跳转过去的
b、打开若依项目的前端代码:ruoyi-ui
在这里插入图片描述
c、根据图示在对应的路径下新建文件夹和文件
d、example1.js这个文件是后续用来存放请求后端API函数的
e、views下新建的test/example1/index对应设置菜单时的组件路径
f、js文件暂时先不管,我们先给index.vue加个<div>测试</div>
在这里插入图片描述
g、回到浏览器前端页面,刷新页面,点击测试模块/测试菜单1;出现测试字样即可。
在这里插入图片描述

3、后端-新建模块

a、在若依原先项目正常运行的前提下进行
b、这里新建模块名为my-test,有需要的自行更改名字即可
在这里插入图片描述

在这里插入图片描述
c、这里要注意Parent为ruoyi,GroupId组id根据自己的需要判断是否需要更改,默认是com.ruoyi;这里我先更改为com.my;模块名设置为my-test;version不用管一般默认即可
在这里插入图片描述
d、点击Finsh完成后,生成对应的my-test模块;然后对my-test模块的pom.xml文件进行编辑,新增以下代码

 <dependencies>
        <dependency>
            <groupId>com.ruoyi</groupId>
            <artifactId>ruoyi-common</artifactId>
        </dependency>
    </dependencies>`

在这里插入图片描述
e、接下来修改的是Parent的pom.xml文件,即最外层的pom.xml,如果怕改错了,可以将其他的全部收起来,方便观看;找到结束标签前,新增my-test项目

            <!--自己新增的自定义my-test模块-->
            <dependency>
                <groupId>com.my</groupId>
                <artifactId>my-test</artifactId>
                <version>${ruoyi.version}</version>
            </dependency>

在这里插入图片描述
f、修改了上面两个pom.xml文件后,还需要更改第三个pom.xml文件,即模块ruoyi-admin的pom.xml文件,这个是项目核心模块(module);在pom.xml文件中新增;更改后刷新一下Maven

        <!--自己新增的自定义my-test模块-->
        <dependency>
            <groupId>com.my</groupId>
            <artifactId>my-test</artifactId>
        </dependency>

在这里插入图片描述

4、后端-测试controller

a、进行测试,检查是否正常;在my-test模块中新建自己的文件路径;新建com.my.test,然后在controller包下新建MyTestController进行测试(PS:不能命名为TestController,若依项目中已经存在该类名了);这里我的Java目录没有沿用com.ruoyi,所以后续要对application相关的文件中新增包路径扫描。

@RestController
@RequestMapping("/my-test/test")
public class MyTestController {
    @GetMapping("/getTestData")
    public String getTestData() {
        return "Hello World!";
    }
}`

在这里插入图片描述
b、如果一直都是和以ruoyi作为包名的可以忽略下面的更改;ruoyi-admin模块的application.yml文件中的mybatis
在这里插入图片描述
c、同样是ruoyi-admin模块,在如图所示的位置,更改启动类的注解

@MapperScan(value = {"com.ruoyi.*.mapper","com.my.*.mapper"})
@ComponentScan(value = {"com.ruoyi", "com.my"})

在这里插入图片描述
d、第三个地方是在ruoyi-framework的ApplicationConfig,新增com.my相关的路径扫描;这里要注意多个改为花括号。
在这里插入图片描述
e、改完上述的内容后,可以将刷新一下Maven,然后启动项目,保证正常启动后,先运行着不要关闭。

5、前端-测试API

a、剩下的将前端完善,通过后端API获取数据即可;在api下的test/example1.js下编写

import request  from "@/utils/request";

//调用测试接口
export function test() {
  return request({
    url:"/my-test/test/getTestData",
    method:"get"
  })
}

在这里插入图片描述
b、稍微更改index.vue代码,保证数据能够正常从后端获取;下面是完整的index.vue代码;实现了点击获取后端数据,然后更改文字

<template>
  <div>
    <!-- 添加一个span标签用于显示初始文本,当数据获取后替换这部分内容 -->
    <div><span v-if="!testData">测试</span><span v-else>{{ testData }}</span></div>
    <button @click="fetchData">点击获取测试数据</button>
  </div>
</template>

<script>
import {test} from "@/api/test/example1";
export default {
  name: "my-test-example1",
  data() {
    return {
      testData: null, // 初始化数据为null
    };
  },
  methods: {
    async fetchData() {
      try {
        const response = await test();
        this.testData = response;
        console.log(response)
      } catch (error) {
        console.error("获取测试数据时出错:", error);
      }
    },
  },
}
</script>

<style scoped>

</style>

在这里插入图片描述
e、最终的实现效果
在这里插入图片描述
在这里插入图片描述

6、总结

本次记录主要是不想使用代码生成工具,如上述内容存在错误、不恰当的地方欢迎指出。

  • 23
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要加载一个用于文本生成的自定义数据集,可以按照以下步骤进行: 1. 准备数据集:准备一个包含文本序列的数据集,每个文本序列应该以特殊的分隔符(如“[SEP]”)结尾,以便ERNIE-GEN可以根据输入的开头文本生成完整的文本序列。 2. 定义数据集读取器:可以通过继承PaddleNLP提供的ernie-gen数据集读取器的方式,自定义一个数据集读取器,实现对自定义数据集的读取和处理。以下是一个简单的自定义数据集读取器示例: ```python from paddlenlp.datasets import MapDataset from paddlenlp.datasets.ernie_gen import ErnieGenDataset class MyErnieGenDataset(ErnieGenDataset): def __init__(self, file_path): super().__init__(file_path) def __getitem__(self, index): # 读取一个文本序列 text = self.data[index].strip() # 将文本序列按分隔符切分成多个片段 segments = text.split('[SEP]') # 构造输入和标签数据 input_ids = [self.tokenizer.cls_token_id] + self.tokenizer.convert_tokens_to_ids(segments[:-1]) label_ids = self.tokenizer.convert_tokens_to_ids(segments) return input_ids, label_ids def __len__(self): return len(self.data) # 加载自定义数据集 train_dataset = MyErnieGenDataset('train.txt') dev_dataset = MyErnieGenDataset('dev.txt') test_dataset = MyErnieGenDataset('test.txt') ``` 在上面的示例中,我们继承了ErnieGenDataset类,并重写了__getitem__方法,实现了将自定义数据集中的文本序列转换成模型可以接受的输入和标签数据的功能。其中,input_ids是模型的输入数据,label_ids是模型的标签数据,模型的训练过程就是通过最大化预测标签序列的概率来优化模型的。 3. 加载预训练模型:可以使用PaddleNLP提供的ErnieForGeneration类加载ERNIE-GEN模型,并根据需要进行微调。以下是一个简单的模型加载和微调示例: ```python import paddle.nn.functional as F from paddlenlp.transformers import ErnieForGeneration # 加载预训练模型 model = ErnieForGeneration.from_pretrained('ernie-2.0-large-en') # 微调模型 for epoch in range(num_epochs): for input_ids, label_ids in train_data_loader: # 前向计算 logits = model(input_ids=input_ids)[0] # 计算损失 loss = F.cross_entropy(logits.reshape(-1, logits.shape[-1]), label_ids.reshape(-1)) # 反向传播 loss.backward() # 更新参数 optimizer.step() optimizer.clear_grad() ``` 在上面的示例中,我们使用ErnieForGeneration类加载了ERNIE-GEN模型,并使用交叉熵损失函数进行微调。在每个epoch中,我们遍历训练数据集,计算模型的损失并进行反向传播和参数更新。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值