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

目录结构

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.mfbz.cn/a/607521.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

10大排序方法,其中这里只介绍前7种(第4种C语言,其它C++语言)

排序方法有十种&#xff0c;分别是&#xff1a;一、冒泡排序&#xff1b;二、选择排序&#xff1b;三、插入排序&#xff1b;四、希尔排序&#xff1b;五、归并排序&#xff1b;六、快速排序&#xff1b;七、堆排序&#xff1b;八、计数排序&#xff1b;九、桶排序&#xff1b;…

Lora训练笔记1——快速上手

准备工具 AKI大佬的整合包&#xff0c;一键解压即可。 度盘链接 提取码&#xff1a;p8uy 图片预处理 图片预处理&#xff1a;以一定规则裁剪原始的训练素材图片&#xff0c;并进行打标处理。 新建两个文件夹 input&#xff1a;存放原始图片的文件夹 preprocess-output:…

CTF-Web Exploitation(持续更新)

CTF-Web Exploitation 1. GET aHEAD Find the flag being held on this server to get ahead of the competition Hints Check out tools like Burpsuite to modify your requests and look at the responses 根据提示使用不同的请求方式得到response可能会得到结果 使用…

JavaScript初了解

JS的三种书写位置&#xff1a;行内&#xff0c;内嵌&#xff0c;外部 JS的注释的书写&#xff1a;单行注释&#xff1a;// ctrl/ 多行注释&#xff1a;/**/ ShiftAltA JavaScript输入输出语句

财政部、交通运输部:推动北斗导航等新技术与交通基础设施融合

财政部、交通运输部&#xff1a;推动北斗导航等新技术与交通基础设施深度融合 近日&#xff0c;为深入贯彻落实中共中央、国务院关于加快建设交通强国、数字中国等决策部署&#xff0c;推进公路水路交通基础设施数字转型、智能升级、融合创新&#xff0c;加快发展新质生产力&a…

FebHost:什么是域名DNS服务器?

域名服务器是一种将域名转换为IP地址的计算机。在域名系统&#xff08;DNS&#xff09;中&#xff0c;它起着至关重要的作用。用户只需在浏览器的地址栏输入域名&#xff0c;而无需手动输入网站服务器的IP地址&#xff0c;就可以访问网站。 每个已注册的域名都必须在其DNS记录…

Java基于B/S医院绩效考核管理平台系统源码java+springboot+MySQL医院智慧绩效管理系统源码

Java基于B/S医院绩效考核管理平台系统源码javaspringbootMySQL医院智慧绩效管理系统源码 医院绩效考核系统是一个关键的管理工具&#xff0c;旨在评估和优化医院内部各部门、科室和员工的绩效。一个有效的绩效考核系统不仅能帮助医院实现其战略目标&#xff0c;还能提升医疗服…

HFSS学习-day2-T形波导的优化设计

入门实例–T形波导的内场分析和优化设计 HFSS--此实例优化设计 优化设计要求1. 定义输出变量Power31、Power21、和Power11&#xff0c;表示Port3、Port2、Port1的输出功率2.参数扫描分析添加扫描变量和输出变量进行一个小设置添加输出变量进行扫描分析 3. 优化设计&#xff0c…

第十篇:数字堡垒:操作系统安全深度解析与实战指南

数字堡垒&#xff1a;操作系统安全深度解析与实战指南 1 *引言 1.1 数字世界的守护者 在遥远的比特海中&#xff0c;有一座名为“操作系统”的数字堡垒&#xff0c;它守护着我们的数据宝藏&#xff0c;确保每一次计算的航行都能安全抵达彼岸。然而&#xff0c;这片海域并非风…

Javaweb第五次作业

poet数据库sql语言 create table poet(id int unsigned primary key auto_increment comment ID,name varchar(10) not null comment 姓名,gender tinyint unsigned not null comment 性别, 说明: 1 男, 2 女,dynasty varchar(10) not null comment朝代,title varchar(20) not…

Flume进阶

目录 第1关&#xff1a;拦截器的使用 第2关&#xff1a;自定义拦截器 第1关&#xff1a;拦截器的使用 代码文件&#xff1a; # Define source, channel, sink #agent名称为a1# Define source #source类型配置为avro,监听8888端口&#xff0c;后台会自动发送数据到该端口 #拦截后…

248 基于matlab的GA-RBF神经网络预测

基于matlab的GA-RBF神经网络预测&#xff0c;遗传算法优化来训练RBF网络权值&#xff0c;RBF优化后的结果用于预测。输出真实值、RBF预测结果、GA-RBF预测结果&#xff0c;并进行对比。程序已调通&#xff0c;可直接运行。 248 RBF神经网络 GA-RBF 时间序列预测 - 小红书 (xiao…

OpenSSL实现AES的ECB和CBC加解密,可一次性加解密任意长度的明文字符串或字节流(QT C++环境)

本篇博文讲述如何在Qt C的环境中使用OpenSSL实现AES-ECB/CBC-Pkcs7加/解密&#xff0c;可以一次性加解密一个任意长度的明文字符串或者字节流&#xff0c;但不适合分段读取加解密的&#xff08;例如&#xff0c;一个4GB的大型文件需要加解密&#xff0c;要分段读取&#xff0c;…

Linux-笔记 i2c-tools

1、i2c-tools介绍 1、在日常linux开发中&#xff0c;有时候需要确认i2c硬件是否正常连接&#xff0c;设备是否正常工作&#xff0c;设备的地址是多少等等&#xff0c;这里我们就需要使用一个用于测试I2C总线的工具——i2c-tools&#xff0c;i2c-tools原理是通过操作/dev 路径 …

JavaScript之数据类型(2)——复杂类型(object)

object的介绍&#xff1a; 我对于object的理解是和C/C中的结构体一样&#xff0c;是一个自定义的数据类型&#xff0c;我们可以通过多个简单的数据类型来定义一个便于我们使用的新的数据类型。 在网上某佬对于其解释如下&#xff1a; Object类型&#xff0c;我们也称为一个对象…

Redis学习5——Redis应用之签到

Redis位图bitMap 位图由一系列二进制位组成&#xff0c;每个位可以被设置为1或0&#xff0c;当我们在处理需要高效存储和操作大量二进制位数据的适合&#xff0c;位图是一个非常有用的工具。 位图操作命令有&#xff1a; SETBIT&#xff1a;设置位图中指定位置的位的值。可以…

3.ERC4626

ERC4626是一个vault&#xff0c;在DAI中&#xff0c;使用ETH换取DAI。其流程为先充值ETH到maker vault。 Vault 资产的管理、分红用户充值某项资产获取某个凭证该凭证作为分红、推出的依据Yield Farming/借贷/质押等 以太坊改进提案EIP:ethereum improvemwnt proposal 最初E…

Mysql8.0.30一次表锁问题的解决

起因 给material_config_field_data表的字段建立全文索引的时&#xff0c;发现该表卡死&#xff0c;然后无法对该表进行任何操作。 查找问题 执行sql #这个命令会显示InnoDB存储引擎的详细状态信息&#xff0c;包括锁等待和锁争用的信息 SHOW ENGINE INNODB STATUS结果 复制S…

​Inf-DiT:Upsampling Any-Resolution Image、Vidu、MVDiff、Trio-ViT

本文首发于公众号&#xff1a;机器感知 ​Inf-DiT&#xff1a;Upsampling Any-Resolution Image、Vidu、MVDiff、Trio-ViT Inf-DiT: Upsampling Any-Resolution Image with Memory-Efficient Diffusion Transformer Diffusion models have shown remarkable performance in im…

树莓派4-使用systemctl设置开机自启oled播放服务ip地址与logo

一、目标&#xff1a; 开机自启oled显示服务ip与端口&#xff0c;并播放logo 二、过程&#xff1a; 1、出现luma库不存在问题&#xff0c;修改.service文件&#xff0c;增加用户与用户组。在本地测试过程中可以使用python script.py执行python脚本&#xff0c;所以将.servic…
最新文章