当前位置: 首页 > news >正文

Java项目——第一个Java接口

若依框架:RuoYi-Vue: 🎉 基于SpringBoot,Spring Security,JWT,Vue & Element 的前后端分离权限管理系统,同时提供了 Vue3 的版本

接口:信息增删改查


Mysql数据库连接+项目运行

1.navicat新建数据库

2.新建表

打开项目找到application-druid.yml文件,其中ry-vue为数据库表名,可以自行修改,输入对应的账号密码

3.打开redis

4.运行sql文件

5.运行项目


info接口

1.数据库运行以下命令创建info表

CREATE TABLE `sys_info` ( `info_id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID', `info_name` varchar(100) NOT NULL COMMENT '信息名称', `info_type` char(1) DEFAULT '0' COMMENT '信息类型(0普通 1重要)', `info_content` text COMMENT '信息内容', `status` char(1) DEFAULT '0' COMMENT '状态(0正常 1停用)', `del_flag` char(1) DEFAULT '0' COMMENT '删除标志(0代表存在 2代表删除)', `create_by` varchar(64) DEFAULT '' COMMENT '创建者', `create_time` datetime DEFAULT NULL COMMENT '创建时间', `update_by` varchar(64) DEFAULT '' COMMENT '更新者', `update_time` datetime DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) DEFAULT NULL COMMENT '备注', PRIMARY KEY (`info_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='信息表';

2.实体类代码

业务代码放在ruoyi-system模块里(和用户管理等放一起,最省事),也可以新建一个ruoyi-info模块,这里以ruoyi-system为例

路径ruoyi-system/src/main/java/com/ruoyi/system/domain/SysInfo.java

作用:和数据库表映射,存放数据的实体类

package com.ruoyi.system.domain; import com.ruoyi.common.annotation.Excel; import com.ruoyi.common.core.domain.BaseEntity; /** * 信息对象 sys_info * * @author ruoyi * @date 2025-01-01 */ public class SysInfo extends BaseEntity { private static final long serialVersionUID = 1L; /** 主键ID */ private Long infoId; /** 信息名称 */ @Excel(name = "信息名称") private String infoName; /** 信息类型(0普通 1重要) */ @Excel(name = "信息类型", readConverterExp = "0=普通,1=重要") private String infoType; /** 信息内容 */ private String infoContent; /** 状态(0正常 1停用) */ @Excel(name = "状态", readConverterExp = "0=正常,1=停用") private String status; /** 删除标志 */ private String delFlag; public void setInfoId(Long infoId) { this.infoId = infoId; } public Long getInfoId() { return infoId; } public void setInfoName(String infoName) { this.infoName = infoName; } public String getInfoName() { return infoName; } public void setInfoType(String infoType) { this.infoType = infoType; } public String getInfoType() { return infoType; } public void setInfoContent(String infoContent) { this.infoContent = infoContent; } public String getInfoContent() { return infoContent; } public void setStatus(String status) { this.status = status; } public String getStatus() { return status; } public String getDelFlag() { return delFlag; } public void setDelFlag(String delFlag) { this.delFlag = delFlag; } @Override public String toString() { return "SysInfo{" + "infoId=" + infoId + ", infoName='" + infoName + '\'' + ", infoType='" + infoType + '\'' + ", infoContent='" + infoContent + '\'' + ", status='" + status + '\'' + ", delFlag='" + delFlag + '\'' + '}'; } }

3.Mapper 接口 & XML

路径ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysInfoMapper.java

作用:定义数据库操作方法

package com.ruoyi.system.mapper; import com.ruoyi.system.domain.SysInfo; import java.util.List; public interface SysInfoMapper { /** * 查询信息列表 */ List<SysInfo> selectSysInfoList(SysInfo sysInfo); /** * 查询信息详情 */ SysInfo selectSysInfoById(Long infoId); /** * 新增信息 */ int insertSysInfo(SysInfo sysInfo); /** * 修改信息 */ int updateSysInfo(SysInfo sysInfo); /** * 删除信息(批量) */ int deleteSysInfoByIds(Long[] infoIds); }

路径ruoyi-system/src/main/resources/mapper/system/SysInfoMapper.xml

作用:写 SQL 语句,实现 Mapper 接口的方法

<?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.ruoyi.system.mapper.SysInfoMapper"> <resultMap type="SysInfo" id="SysInfoResult"> <result property="infoId" column="info_id"/> <result property="infoName" column="info_name"/> <result property="infoType" column="info_type"/> <result property="infoContent" column="info_content"/> <result property="status" column="status"/> <result property="delFlag" column="del_flag"/> <result property="createBy" column="create_by"/> <result property="createTime" column="create_time"/> <result property="updateBy" column="update_by"/> <result property="updateTime" column="update_time"/> <result property="remark" column="remark"/> </resultMap> <sql id="selectSysInfoVo"> select info_id, info_name, info_type, info_content, status, del_flag, create_by, create_time, update_by, update_time, remark from sys_info </sql> <select id="selectSysInfoList" parameterType="SysInfo" resultMap="SysInfoResult"> <include refid="selectSysInfoVo"/> where del_flag = '0' <if test="infoName != null and infoName != ''"> and info_name like concat('%', #{infoName}, '%') </if> <if test="infoType != null and infoType != ''"> and info_type = #{infoType} </if> <if test="status != null and status != ''"> and status = #{status} </if> order by info_id desc </select> <select id="selectSysInfoById" parameterType="Long" resultMap="SysInfoResult"> <include refid="selectSysInfoVo"/> where info_id = #{infoId} </select> <insert id="insertSysInfo" parameterType="SysInfo" useGeneratedKeys="true" keyProperty="infoId"> insert into sys_info( info_name, info_type, info_content, status, del_flag, create_by, create_time, remark ) values ( #{infoName}, #{infoType}, #{infoContent}, #{status}, '0', #{createBy}, sysdate(), #{remark} ) </insert> <update id="updateSysInfo" parameterType="SysInfo"> update sys_info <set> <if test="infoName != null and infoName != ''">info_name = #{infoName},</if> <if test="infoType != null and infoType != ''">info_type = #{infoType},</if> <if test="infoContent != null">info_content = #{infoContent},</if> <if test="status != null and status != ''">status = #{status},</if> <if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if> update_time = sysdate(), <if test="remark != null">remark = #{remark}</if> </set> where info_id = #{infoId} </update> <delete id="deleteSysInfoByIds" parameterType="Long"> update sys_info set del_flag = '2' where info_id in <foreach collection="array" item="infoId" open="(" separator="," close=")"> #{infoId} </foreach> </delete> </mapper>

4. Service 接口 & 实现类

路径ruoyi-system/src/main/java/com/ruoyi/system/service/ISysInfoService.java

作用:定义业务逻辑接口

package com.ruoyi.system.service; import com.ruoyi.system.domain.SysInfo; import java.util.List; public interface ISysInfoService { /** * 查询信息列表 */ List<SysInfo> selectSysInfoList(SysInfo sysInfo); /** * 查询信息详情 */ SysInfo selectSysInfoById(Long infoId); /** * 新增信息 */ int insertSysInfo(SysInfo sysInfo); /** * 修改信息 */ int updateSysInfo(SysInfo sysInfo); /** * 删除信息(批量) */ int deleteSysInfoByIds(Long[] infoIds); }

路径ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysInfoServiceImpl.java

作用:实现业务逻辑,调用 Mapper

package com.ruoyi.system.service.impl; import com.ruoyi.system.domain.SysInfo; import com.ruoyi.system.mapper.SysInfoMapper; import com.ruoyi.system.service.ISysInfoService; import com.ruoyi.common.utils.SecurityUtils; import org.springframework.stereotype.Service; import org.springframework.beans.factory.annotation.Autowired; import java.util.List; @Service public class SysInfoServiceImpl implements ISysInfoService { @Autowired private SysInfoMapper sysInfoMapper; @Override public List<SysInfo> selectSysInfoList(SysInfo sysInfo) { return sysInfoMapper.selectSysInfoList(sysInfo); } @Override public SysInfo selectSysInfoById(Long infoId) { return sysInfoMapper.selectSysInfoById(infoId); } @Override public int insertSysInfo(SysInfo sysInfo) { sysInfo.setCreateBy(SecurityUtils.getUsername()); return sysInfoMapper.insertSysInfo(sysInfo); } @Override public int updateSysInfo(SysInfo sysInfo) { sysInfo.setUpdateBy(SecurityUtils.getUsername()); return sysInfoMapper.updateSysInfo(sysInfo); } @Override public int deleteSysInfoByIds(Long[] infoIds) { return sysInfoMapper.deleteSysInfoByIds(infoIds); } }

5. Controller 控制层

路径ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysInfoController.java

作用:接收前端请求,调用 Service,返回结果

package com.ruoyi.web.controller.system; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.core.controller.BaseController; import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.system.domain.SysInfo; import com.ruoyi.system.service.ISysInfoService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping("/system/info") public class SysInfoController extends BaseController { @Autowired private ISysInfoService sysInfoService; // 删掉 @ApiOperation 注解 @PreAuthorize("@ss.hasPermi('system:info:list')") @GetMapping("/list") public TableDataInfo list(SysInfo sysInfo) { startPage(); List<SysInfo> list = sysInfoService.selectSysInfoList(sysInfo); return getDataTable(list); } @PreAuthorize("@ss.hasPermi('system:info:query')") @GetMapping("/{infoId}") public AjaxResult getInfo(@PathVariable Long infoId) { return AjaxResult.success(sysInfoService.selectSysInfoById(infoId)); } @PreAuthorize("@ss.hasPermi('system:info:add')") @Log(title = "信息管理", businessType = BusinessType.INSERT) @PostMapping public AjaxResult add(@RequestBody SysInfo sysInfo) { return toAjax(sysInfoService.insertSysInfo(sysInfo)); } @PreAuthorize("@ss.hasPermi('system:info:edit')") @Log(title = "信息管理", businessType = BusinessType.UPDATE) @PutMapping public AjaxResult edit(@RequestBody SysInfo sysInfo) { return toAjax(sysInfoService.updateSysInfo(sysInfo)); } @PreAuthorize("@ss.hasPermi('system:info:remove')") @Log(title = "信息管理", businessType = BusinessType.DELETE) @DeleteMapping("/{infoIds}") public AjaxResult remove(@PathVariable Long[] infoIds) { return toAjax(sysInfoService.deleteSysInfoByIds(infoIds)); } }
http://www.jsqmd.com/news/821981/

相关文章:

  • 2026龙港市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • 2026泸州市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • 江苏翠苗帐篷医院箱:野外医疗保障的“移动堡垒“
  • 2026临湘市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • Taotoken 的用量看板如何帮助个人开发者清晰掌控月度支出
  • 边缘网关实战指南:从核心原理到工业物联网部署避坑
  • 2026龙海市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • AI Agent安全护栏设计:从策略引擎到实战部署的完整指南
  • 2026 土工布厂家哪家好:恒全土工布行业标杆 - 13425704091
  • 2026禄丰市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • 企业微信集成ChatGPT:从Webhook原理到Docker部署实战
  • 2026临沂市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • 2026 土工布厂家哪家靠谱:恒全土工布权威靠谱 - 13724980961
  • VADER情感分析:5分钟掌握社交媒体情绪识别的终极指南
  • Activiti7 会签多实例任务实战:动态审批人、一票否决与网关路由详解
  • 郑州墙面翻新修补:巩义墙面粉刷公司有哪些 - LYL仔仔
  • 学院教学工作量统计|基于java+ vue学院教学工作量统计管理系统(源码+数据库+文档)
  • GP8891CAS_SOP7原边反馈电源芯片 三绕组应用电路、双绕组应用电路分析
  • 开源监控系统clawatch:轻量级云原生监控与告警实践指南
  • Taotoken的Token Plan套餐为我们的小型项目带来了哪些成本优势
  • 2026胶州市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • 拷贝到linux的路径
  • 如何通过浏览器脚本实现网盘文件直链下载:LinkSwift 完全指南
  • 2026兰州市黄金回收白银回收铂金回收店铺实力排行榜TOP5; K金+金条+银条+首饰回收靠谱门店及联系方式推荐_转自TXT - 盛世金银回收
  • 小型房屋租赁|基于Java + vue小型房屋租赁系统(源码+数据库+文档)
  • 抚州冷轧钢筋加工定制怎么选?关键考量与供应渠道梳理 - 品牌推荐大师
  • ClickHouse运维实战:如何用一条SQL快速定位HTTP接口报错原因(附常见错误代码速查表)
  • 武哥带你谈谈-RHEL 网络配置十年变迁:从 ifcfg 到 Keyfile,/etc/sysconfig/network-scripts/ 是如何退出历史舞台的?
  • 永辉超市卡回收价目查询全解析 - 购物卡回收找京尔回收
  • 你的高速信号被TVS管拖慢了吗?RS485/CAN总线防护的结电容避坑指南