springboot增删改查案例

确保数据库已经安上,javajdk是1.8版本
首先https://start.spring.io/下载框架

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UeB6NkMj-1645584534448)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645435709328.png)]

这是依赖图

整体的样子:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UE8nHFsz-1645584534455)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645435766159.png)]

下载好了后解压,用idea打开,

将左边的文件夹搞好

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qu2Pm4YT-1645584534458)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645493750202.png)]

介绍一下文件夹的作用

  • controller文件夹
    • controller文件夹内的java类这是控制器,传参,调用方法的类,确定在url上的路径。
    • controller层即控制层。
      controller层的功能为请求和响应控制。
      controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。
  • entity文件夹
    • Form01类是实体类,意思是跟我的数据库里面的文件的属性一一对应
    • model层(数据库表字段映射到实体类)
      数据库实体层,也被称为entity层,pojo层。
      一般数据库一张表对应一个实体类,类属性同表字段一一对应。
  • mapper文件夹(Dao文件夹)
    • mapper类是映射器,数据持久层,访问数据库
    • dao层即数据持久层,也被称为mapper层。
      dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
  • service文件夹
    • 一个接口,一个类,接口也是存放增删改查四个抽象方法
    • 类是实现了service接口,并且在类里调用了mapper接口new了一个对象,这个对象我们就调用mapper
    • service层即业务逻辑层。
      service层的作用为完成功能设计。
      service层调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计 接口里面的方法

代码

package com.example.demo.controller;
//也写了方法,跟serivice中的一样,不过是传参用的
//这个类调用serivice的方法
import com.example.demo.entity.Form01;
import com.example.demo.mapper.Form01Mapper;
import com.example.demo.service.Form01Service;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController//返回json,规范接口@controller与@RestController有区别
@RequestMapping("/Form01")//url映射,在url上的路径
public class Form01Controller {
    //引入Service层
    @Autowired//对成员变量、方法和构造函数进行标注,来完成自动装配的工作
            Form01Service form01Service;//IoC

    @GetMapping("/all")//@GetMapping = @RequestMapping(method=RequestMethod.GET)
    public List<Form01> getFrom(){//设置返回List<Form01>,grtFrom方法
        return form01Service.findAll();
    }

    @GetMapping("/findById")//查  一会问阳哥查的数据怎么输入
    public Form01 findById(@RequestParam(name = "id",required =true) Integer id){//传入数据
        return form01Service.findByID(id);
    }

    @PostMapping ("/savedata")//增ok
    public String savedata(@RequestBody Form01 form01){//把你传过来的json数据包装成form01实体
        form01Service.save(form01);
        return "succes";
    }
    @PutMapping("/updata")//改ok
    public String updata(@RequestBody Form01 form01){
        form01Service.updataById(form01);
        return "succes";
    }
    @DeleteMapping("/{id}")//删ok
    public String deletById(@PathVariable("id") int id){//@PathVariable允许前台地址传过来带id
        form01Service.deleteById(id);
        return "succes";
    }
    @GetMapping("/{id}")//按id查找
    public Form01 foundById(@PathVariable("id") int id){//@PathVariable允许前台地址传过来带id
       return form01Service.foundById(id);

    }
}
//4、controller层(前后端传参)
//        controller层即控制层。
//        controller层的功能为请求和响应控制。
//        controller层负责前后端交互,接受前端请求,调用service层,接收service层返回的数据,最后返回具体的页面和数据到客户端。
//
package com.example.demo.entity;
//实体类与数据库内容一致对应
import lombok.Data;
//entity是实体的意思,实体类,为啥不叫数据库类
@Data
public class Form01 {
    private int id;
    private String name;
    private int age;
    private String sex;
    private String gradeClass;
}
//1、model层(数据库表字段映射到实体类)
//        数据库实体层,也被称为entity层,pojo层。
//        一般数据库一张表对应一个实体类,类属性同表字段一一对应。
package com.example.demo.mapper;
//这里接口的方法定义不大懂,这里的接口跟service类有关,生成了form01Mapper抽象类
//向数据库发送执行增删改查的sql语句的代码的类
//mapper文件夹作用是访问数据库原本用@select标签写了select语句,但是阳哥说这样子sql语句简单就可以,但是难了的话是不行的,
//于是用了@Mapper标签,这是个接口
import com.example.demo.entity.Form01;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
@Mapper//mybatis的插件,单表查询时很方便//那我没写sql代码是因为啥
public interface Form01Mapper {

    //List<Form01>数组,泛型
    List<Form01> findAll();//String替换成了List<Form01>,也就是说List<Form01>是数据类型  数据类型 方法名();这个样子

    Form01 findById(@Param("idx") Integer id);//@Param  当参数为2-5个时候,用@param最佳,其他时候用map

    void saveData(Form01 form01);

    void updataById(Form01 form01);

    Form01 deletById(int id);

    Form01 foundById(int id);
}
//dao层(CURD方法)
//        dao层即数据持久层,也被称为mapper层。
//        dao层的作用为访问数据库,向数据库发送sql语句,完成数据的增删改查任务。
package com.example.demo.service.impl;
//所以它实现了service接口,然后IoC了mapper接口,mapper接口的方法通过form01Mapper这个实例对象调用,所以如果我一调用
//service方法
import com.example.demo.entity.Form01;
import com.example.demo.mapper.Form01Mapper;
import com.example.demo.service.Form01Service;
import org.springframework.stereotype.Service;
//service包实现业务逻辑

import javax.annotation.Resource;
import java.util.List;
@Service
public class Form01ServiceImpl implements Form01Service {//表01服务 实现表接口
    @Resource
    Form01Mapper form01Mapper;//IoC如果没采用它,应该怎么写

    @Override
    public List<Form01> findAll() {
        return form01Mapper.findAll();
    }

    @Override
    public Form01 findByID(Integer id) {
        return form01Mapper.findById(id);
    }

    @Override
    public void save(Form01 form01) {
        form01Mapper.saveData(form01);
    }
    @Override
    public void updataById(Form01 form01){
        form01Mapper.updataById(form01);
    }
    @Override
    public void deleteById(int id){
        form01Mapper.deletById( id);
    }
    @Override
    public Form01 foundById(int id){
        return form01Mapper.foundById(id);
    }
}

package com.example.demo.service;
//定义增删改查抽象
import com.example.demo.entity.Form01;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface Form01Service {
    List<Form01> findAll();

    Form01 findByID(Integer id);

    void save(Form01 form01);

    void updataById(Form01 form01);

    void deleteById(int id);

    Form01 foundById(int id);
}
//3、service层 (功能设计)
//        service层即业务逻辑层。
//        service层的作用为完成功能设计。
//        service层调用dao层接口,接收dao层返回的数据,完成项目的基本功能设计。
package com.example.demo;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class Demo02Application {

	public static void main(String[] args) {
		SpringApplication.run(Demo02Application.class, args);
	}

}
//个人总结,一般先写实体类就是entity文件,找数据库表写个类一一对应
//然后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">
<!-- namespace指用户自定义的命名空间。 -->
<!--所以这个xml文件是怎么被调用的,或者说被导入的-->
<mapper namespace="com.example.demo.mapper.Form01Mapper"><!--我看有视频这里是bean标签-->
<!--    首先在资源库新建了xml文件,XML的作用是传输和存储数据-->
<!--    我们立刻马上执行sql语句-->
    <select id="findAll" resultType="com.example.demo.entity.Form01">
        select * from form01
    </select>

    <select id="findById" parameterType="int" resultType="com.example.demo.entity.Form01">
        select *,grade_class as gradeClass from form01 where id= #{idx}
    </select>

    <select id="saveData" parameterType="com.example.demo.entity.Form01" >
<!--        插入语句,一开始我在id,name等加了'',去掉后也能运行-->
        INSERT INTO form01 (id, name, age, sex, grade_class) VALUES (#{id}, #{name}, #{age}, #{sex}, #{gradeClass})
    </select>

    <select id="updataById" parameterType="com.example.demo.entity.Form01" >
<!--       这是改,修改语句 我无法判断我的selec语句是否正确-->
        UPDATE form01 SET id=#{id}, name=#{name}, age=#{age}, sex=#{sex}, grade_class=#{gradeClass} where id= #{id}
<!--        #{}是传值用的-->
    </select><!--    话说这里不是输入和输出的类型吗,为啥是com.example.demo.entity.Form01-->
    <select id="deletById" parameterType="com.example.demo.entity.Form01">
        DELETE FROM form01 WHERE id = #{id};
    </select>
    <select id="foundById" parameterType="com.example.demo.entity.Form01" resultType="com.example.demo.entity.Form01">
        select * from form01 where id= #{id}
    </select>
</mapper>


server.port=8080
#这里配置数据库文件  localhost:3306/表的名字?serverTimezone=GMT%2B8&charac...
spring.datasource.url=jdbc:mysql://localhost:3306/database01?serverTimezone=GMT%2B8&characterEncoding=utf-8&useSSL=false
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

mybatis.mapper-locations: classpath:mapper/*.xml
#导入mapper包中的xml文件


Postman操作

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-S30IPkNa-1645584534460)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645580527766.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7QPsfePv-1645584534461)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645580669475.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k3J3vQn9-1645584534463)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645580708196.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iAAzt8FM-1645584534465)(C:\Users\ZSL\AppData\Roaming\Typora\typora-user-images\1645580786534.png)]

完成。

  • 4
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值