基于springboot+mybatis+vue的项目实战之增删改查CRUD

news2024/11/20 0:43:04

目录结构

PeotController.java

package com.example.controller;

import com.example.pojo.Peot;
import com.example.pojo.Result;
import com.example.service.PeotService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
public class PeotController {

    @Autowired
    private PeotService peotService;

    @RequestMapping("/findAll")
    public List<Peot> findAll(){
     return   peotService.findAll();
    }

    @RequestMapping("/findAllJsoon")
    public Result findAllJson(){
        return  Result.seccess(peotService.findAll()) ;
    }
 @RequestMapping("/deletePeot")
    public void deletePeot(Integer id){
        peotService.deletePeot(id);
    }
@RequestMapping("/peotfindById/{id}")
public Result peotfindById(@PathVariable("id") Integer id) {
    return  Result.seccess(peotService.peotfindById(id));
}

@RequestMapping("/peotupdate")
public  Result updatePeot(@RequestBody Peot peot){
    boolean r = peotService.updatePeot(peot);

    if(r) {
        // 成功  code==1
        return Result.success();
    } else {
        // 失败  code==0
        return Result.erro("更新失败");
    }
}

    @RequestMapping("/peotinsert")
    public Result insertUser(@RequestBody Peot peot){
        boolean result =peotService.insertUser(peot);
        if(result) {
            // 成功  code==1
            return Result.success();
        } else {
            // 失败  code==0
            return Result.erro("添加失败");

        }

    }


}

PeotMapper.java

package com.example.mapper;

import com.example.pojo.Peot;
import com.example.pojo.Result;
import org.apache.ibatis.annotations.*;

import java.util.List;

@Mapper
public interface PeotMapper {

    @Select("select * from peom")
    public List<Peot> findAll();

    @Delete("delete from peom where id=#{id}")
    public int deletePeot(Integer id);

    @Select("select * from peom where id=#{id}")
    public Peot peotfindById(Integer ID);

    @Update("update peom set author=#{author},gender=#{gender},dynasty=#{dynasty},title=#{title} ,style=#{style} where id=#{id} ")
    public  boolean updatePeot(Peot peot);

    @Insert("insert into peom(author, gender, dynasty, title, style) values (#{author}, #{gender}, #{dynasty}, #{title}, #{style})")
    public int insert(Peot peot);

}

Peot.java

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Peot {
    private Integer id;
    private String author;
    private String gender;
    private String dynasty;
    private String title;
    private String style;
}

Result.java

package com.example.pojo;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class Result {
    private Integer code;//响应码,1 代表成功; 0 代表失败
    private String msg;  //响应信息 描述字符串
    private Object data; //返回的数据


    public static Result success(){
        return new Result(1,"success",null);
    }

    public static Result seccess(Object data){
        return new Result(1,"success",data);
    }

    public static Result erro(String str){
        return new Result(1,str,null);
    }


}

PeotService.java

package com.example.service;

import com.example.mapper.PeotMapper;
import com.example.pojo.Peot;
import org.springframework.beans.factory.annotation.Autowired;

import java.util.List;

public interface PeotService {

public List<Peot> findAll();

public int deletePeot(Integer id);

public Peot peotfindById(Integer id);

public boolean updatePeot(Peot peot);

    public   boolean  insertUser(Peot peot);

}

PeotServiceImpl.java

package com.example.service.impl;

import com.example.mapper.PeotMapper;
import com.example.pojo.Peot;
import com.example.service.PeotService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

@Service
public class PeotServiceImpl implements PeotService {

    @Autowired
    private PeotMapper peotMapper;

    @Override
    public List<Peot> findAll() {
        return peotMapper.findAll();
    }

    @Override
    public int deletePeot(Integer id) {
        return peotMapper.deletePeot(id);
    }
    @Override
    public Peot peotfindById(Integer id) {
        return peotMapper.peotfindById(id);
    }

    @Override
    public boolean updatePeot(Peot peot) {
        return peotMapper.updatePeot(peot);
    }

    @Override
    public boolean  insertUser(Peot peot) {
        int result =  peotMapper.insert(peot);
        return result == 1;
    }

}

peot_findall.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <script src="./js/axios-0.18.0.js"></script>

</head>
<body>
<h1>诗人信息列表</h1>
<div id="app" align="center">
    <a href="peot_insert.html">新增</a>
<table  border="1">
    <tr>
    <th>id</th>
    <th>author</th>
    <th>gender</th>
    <th>dynasty</th>
    <th>title</th>
    <th>style</th>
    <th>操作</th>
    </tr>
    <tr v-for="peot in peotList">
        <td>{{peot.id}}</td>
        <td>{{peot.author}}</td>
        <td>{{peot.gender}}</td>
        <td>{{peot.dynasty}}</td>
        <td>{{peot.title}}</td>
        <td>{{peot.style}}</td>
        <td>
            <button type="button" @click="deleteId(peot.id)">删除</button>
            <a :href="'peot_edit.html?id='+peot.id">修改</a>
        </td>
    </tr>

</table>
</div>

</body>

<script>
    new Vue({
        el:"#app",
        data() {
            return {
                peotList:[]
            }
        },
        mounted(){
        axios.get('/findAllJsoon').then(res=>{
            if(res.data.code){
                this.peotList = res.data.data;
            }
            }
        )},
        methods:{
            findAll:function () {
                var _this = this;
                axios.post('/findAllJsoon', {
                })
                    .then(function (response) {
                        _this.peotList = response.data.data;//响应数据给tableData赋值
                    })
                    .catch(function (error) {
                        console.log(error);
                    });
            },
            deleteId:function (id) {
                var _thisd = this;
                if (window.confirm("确定要删除该条数据吗???")){
                    axios.post('/deletePeot?id='+id)
                        .then(function (response) {
                            alert("删除成功")
                            _thisd.findAll();
                        })
                        .catch(function (error) {
                            console.log(error);
                        });
                }
            }

        }
    })


</script>

</html>

peot_insert.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
  <script src="./js/vue.js"></script>
  <script src="./js/axios-0.18.0.js"></script>

</head>
<body>
<div id="app">
    <table border="1">

        <tr>
            <td>姓名</td>
            <td><input type="text" v-model="peot.author"> </td>
        </tr>
        <tr>
            <td>性别</td>
            <td>
                <input type="radio" name="gender" v-model="peot.gender" value="1"> 男
                <input type="radio" name="gender" v-model="peot.gender" value="0"> 女
            </td>
        </tr>
        <tr>
            <td>朝代</td>
            <td><input type="text" v-model="peot.dynasty"> </td>
        </tr>
        <tr>
            <td>头衔</td>
            <td><input type="text" v-model="peot.title"> </td>
        </tr>
        <tr>
            <td>风格</td>
            <td><input type="text" v-model="peot.style"> </td>
        </tr>

        <tr>
            <td></td>
            <td><input type="button" @click="addPeot" value="增加"> </td>

        </tr>
    </table>

</div>
</body>
<script>
    new Vue({
        el: '#app',
        data: {
            peot: {
                "author":"",
                "gender":"",
                "dynasty":"",
                "title":"",
                "style":""
            }        //详情

        },
        methods: {

            addPeot() {
                var url = 'peotinsert'
                axios.post(url,this.peot)
                    .then(res => {
                        var baseResult = res.data
                        if(baseResult.code == 1) {
                            // 成功
                            location.href = 'peot_findall.html'
                        } else {
                            // 失败
                            alert(baseResult.message)
                        }
                    })
                    .catch(err => {
                        console.error(err);
                    })
            }
        },

    })
</script>

</html>

peot_edit.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <script src="./js/axios-0.18.0.js"></script>

</head>
<body>
<div id="app">
    <table border="1">
        <tr>
            <td>编号</td>
            <td><input type="text" v-model="this.id"> </td>
        </tr>
        <tr>
            <td>姓名</td>
            <td><input type="text" v-model="peot.author"> </td>
        </tr>
        <tr>
            <td>性别</td>
            <td>
                <input type="radio" name="gender" v-model="peot.gender" value="1"> 男
                <input type="radio" name="gender" v-model="peot.gender" value="0"> 女
            </td>
        </tr>
        <tr>
            <td>朝代</td>
            <td><input type="text" v-model="peot.dynasty"> </td>
        </tr>
        <tr>
            <td>头衔</td>
            <td><input type="text" v-model="peot.title"> </td>
        </tr>
        <tr>
            <td>风格</td>
            <td><input type="text" v-model="peot.style"> </td>
        </tr>

        <tr>
            <td></td>
            <td><input type="button" @click="updatePeot" value="更新"> </td>

        </tr>
    </table>
    {{peot}}
</div>


</body>
<script>
    new Vue({
        el: '#app',
        data: {
            id: '',
            peot: {},        //详情
        },
        methods: {
            selectById() {
                //${this.id}
                var url = `peotfindById/${this.id}`  //注意这里是反引号
                //反引号(backticks,也称为模板字符串或模板字面量)是ES6(ECMAScript 2015)中引入的一种新字符串字面量功能,
                // 它允许您在字符串中嵌入表达式。反引号用`(键盘上通常位于Tab键上方)来界定字符串的开始和结束。
                axios.get(url)
                    .then(response => {
                        var baseResult = response.data
                        if(baseResult.code == 1) {
                            this.peot = baseResult.data
                        }
                    })
                    .catch( error => {})
            },
            updatePeot() {
                var url = 'peotupdate'
                axios.put(url,this.peot)
                    .then(res => {
                        var baseResult = res.data
                        if(baseResult.code == 1) {
                            // 成功
                            location.href = 'peot_findall.html'
                        } else {
                            // 失败
                            alert(baseResult.message)
                        }
                    })
                    .catch(err => {
                        console.error(err);
                    })
            },


        },
        created() {
            // 获得参数id值
            this.id = location.href.split("?id=")[1]
            // 通过id查询详情
            this.selectById()
        },

    })



</script>

</html>

application.properties  

修改为自己的数据库,以及数据库连接的账号密码。

# 应用服务 WEB 访问端口
server.port=8080
#下面这些内容是为了让MyBatis映射
#指定Mybatis的Mapper文件
mybatis.mapper-locations=classpath:mappers/*xml
#指定Mybatis的实体目录
mybatis.type-aliases-package=com.example.mybatis.entity

#数据库连接
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/heima
spring.datasource.username=root
spring.datasource.password=123
#开启mybatis的日志输出
mybatis.configuration.logimpl=org.apache.ibatis.logging.stdout.StdOutImpl
#开启数据库表字段
#实体类属性的驼峰映射
mybatis.configuration.map-underscore-to-camel-case=true

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1657270.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分布式锁讲解

概括 分布式锁是一种用于在分布式系统中实现同步机制的锁。在单机系统中&#xff0c;我们可以使用如Java中的synchronized关键字或者 ReentrantLock来实现线程间的同步&#xff0c;但在分布式系统中&#xff0c;由于多个节点&#xff08;服务器&#xff09;之间的并发操作&am…

谷歌CEO最新访谈:AI浪潮仍处于早期阶段,公司未来最大威胁是执行力不足

作为搜索领域无可争议的霸主&#xff0c;谷歌改变了我们生活的方方面面&#xff0c;从日常琐事到工作事务&#xff0c;再到我们的沟通方式。多年来&#xff0c;谷歌一直是互联网的窗口&#xff0c;为我们提供大量知识和信息&#xff0c;但如今&#xff0c;随着其他类似平台的崛…

融知财经:期货交易的规则和操作方法

期货交易是指在未来的某一特定时期&#xff0c;买卖双方通过签订合约的方式&#xff0c;约定以某种价格买卖一定数量的某种商品或资产的行为。期货交易的规则和操作方法如下&#xff1a; 期货交易的规则和操作方法 1、双向交易&#xff1a; 期货市场允许投资者进行多头&#xf…

Chrono下载管理器:提升下载体验,有效管理文件

名人说&#xff1a;莫愁千里路&#xff0c;自有到来风。 ——钱珝 创作者&#xff1a;Code_流苏(CSDN)&#xff08;一个喜欢古诗词和编程的Coder&#x1f60a;&#xff09; 目录 一、介绍二、下载安装1、Chrome应用商店&#xff08;需科学&#xff09;2、第三方直链下载 三、使…

【密码守护者】让弱密码无处遁形,保护你的UOS系统安全!

欢迎点赞、关注、分享&#xff0c;后期将会有更多的工作小工具分享给大家&#xff0c;嘻嘻 密码&#xff0c;是守护我们数字世界的钥匙。一个强大、复杂的密码&#xff0c;能够有效地抵御黑客攻击和信息泄露的风险。但在日常使用中&#xff0c;许多人因为方便记忆而选择了简单易…

【Linux】yum与vim

文章目录 软件包管理器&#xff1a;yumLinux安装和卸载软件包Linux中的编辑器&#xff1a;vimvim下的底行模式vim下的正常模式vim下的替换模式vim下的视图模式vim下的多线程 软件包管理器&#xff1a;yum yum其实就是一个软件,也可以叫商店 和你手机上的应用商店或app store一…

Meta-SR: A Magnification-Arbitrary Network for Super-Resolution

CVPR2019https://github.com/XuecaiHu/Meta-SR-Pytorch 问题引入 首个解决任意尺度超分问题的模型&#xff0c;借鉴了meta-learning的思想&#xff1b;weight prediction strategy(meta-learning)&#xff1a;神经网络的权重是由另一个神经网络预测的&#xff0c;而不是通过从…

【16-Ⅱ】Head First Java 学习笔记

HeadFirst Java 本人有C语言基础&#xff0c;通过阅读Java廖雪峰网站&#xff0c;简单速成了java&#xff0c;但对其中一些入门概念有所疏漏&#xff0c;阅读本书以弥补。 第一章 Java入门 第二章 面向对象 第三章 变量 第四章 方法操作实例变量 第五章 程序实战 第六章 Java…

【win10 文件夹数量和看到不一致查看隐藏文件已经打开,Thumb文件作妖】

目录 任务介绍&#xff1a;重命名规则修改前修改后 实现思路VB代码实现BUG犯罪现场&#xff08;眼见不一定为实&#xff09;破案1&#xff1a;抓顶风作案的反贼&#xff01;&#xff01;&#xff01;破案2&#xff1a;破隐身抓刺客&#xff01;&#xff01;&#xff01;杀器&am…

JavaWeb之Servlet(上)

前言 1. 什么是Servlet (1) Servlet介绍 (2) Servlet运行于支持Java的应用服务器中。 (3) Servlet工作模式&#xff1a; 2. Servlet API 3. 第一个Servlet (1) 创建一个类实现Servlet接口,重写方法。或继承HttpServlet亦可 (2) 在web.xml文档中配置映射关系 标签的执行…

书生浦语训练营第2期-第7节作业

一、基础作业 二、进阶作业

作为餐饮行业HR,怎么选择一套合适的HCM人事管理系统?

在餐饮业这个行业中&#xff0c;人员流动性较高&#xff0c;特别是对于服务员和厨师这类基层员工&#xff0c;招聘一直是一个难题。根据艾瑞数据测算&#xff0c;到2024年&#xff0c;中国餐饮行业的年收入将超过6万亿元&#xff0c;年复合增长率高达8.8%。作为餐饮企业的品牌战…

Vue从入门到实战Day03

一、生命周期 1. 生命周期四个阶段 思考&#xff1a; ①什么时候可以发送初始化渲染请求&#xff1f; 答&#xff1a;越早越好&#xff0c;在创建阶段后 ②什么时候可以开始操作DOM&#xff1f; 答&#xff1a;至少DOM得渲染出来&#xff0c;在挂载阶段结束后。 Vue生命周…

【用文本生成歌声】Learn2Sing 2.0——歌声转换算法即梅尔频谱详解

一. 频谱图与梅尔谱图的介绍 频谱图&#xff1a;频谱图可以理解为一堆垂直堆叠在一起的快速傅里叶变换结果。 1.1 信号 在进入频谱图模块之前&#xff0c;首先我们需要了解信号是什么。 信号就是某一特定量随时间变化&#xff0c;对于音频来说&#xff0c;这个特定的变化量就…

Django之创建Model以及后台管理

一&#xff0c;创建项目App python manage.py startapp App 二&#xff0c;在App.models.py中创建类&#xff0c;以下是示例 class UserModel(models.Model):uid models.AutoField(primary_keyTrue, auto_createdTrue)name models.CharField(max_length10, uniqueTrue, db…

HFSS学习-day3-HFSS的工作界面

工作界面也称为用户界面&#xff0c;是HFSS软件使用者的工作环境:了解、熟悉这个工作环境是掌握HFSS软件使用的第一步 HFSS工作环境介绍 1.HFSS工作界面简单的组成说明2.工作界面中各个工作窗口功能主菜单工具栏项目管理窗口属性窗口信息管理窗口进程窗口三维模型窗口 3.HFSS主…

【Lammps】lammps常用入门建模命令(一)

【Lammps】lammps常用入门建模命令 前言脚本总览1、units2、dimension3、boundary4、atom_style原子模型构建5、lattice6、region7、create_box8、creat_atoms1. 在盒子box内填充原子2.在指定区域&#xff08;region&#xff09;内填充原子3.生成单个原子4.随机生成原子 9、mas…

影视极品转场音效大全,经典获奖通用音效素材

一、素材描述 本套音效素材&#xff0c;大小15.02G&#xff0c;16个压缩文件。 二、素材目录 01-华纳兄弟电影音效库合辑&#xff08;2个压缩文件&#xff09; 02-影视极品转场音效&#xff08;2个压缩文件&#xff09; 03-好莱坞经典综合音效&#xff08;4个压缩文件&…

JMeter断言介绍

JMeter是一个功能强大的性能测试工具&#xff0c;它不仅可以模拟用户的行为&#xff0c;还可以对web应用程序的响应进行检测。其中断言就是JMeter中非常实用的功能之一。 断言是用于验证服务器响应是否正确的测试元素。它会检查服务器响应中的部分或全部内容&#xff0c;并在响…

使用GitLab自带的CI/CD功能在本地部署.Net8项目(二)

前置内容&#xff1a; 通过Docker Compose部署GitLab和GitLab Runner&#xff08;一&#xff09; 目录 一、创建代码仓库 二、创建GitLabRunner 三、注册Runner 四、配置Runner&#xff0c;绑定宿主Docker 五、创建.Net8WebApi项目进行测试 六、总结 一、创建代码仓库 …