spring|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 getFrom(){//设置返回List,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数组,泛型 List findAll(); //String替换成了List,也就是说List是数据类型数据类型 方法名();这个样子Form01 findById(@Param("idx") Integer id); //@Param当参数为2-5个时候,用@param最佳,其他时候用mapvoid 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 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 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写接口,但是我现在搞不懂为啥两个接口,同时都实现了

="findAll" resultType="com.example.demo.entity.Form01"> select * from form01 ="findById" parameterType="int" resultType="com.example.demo.entity.Form01"> select *,grade_class as gradeClass from form01 where id= #{idx} ="saveData" parameterType="com.example.demo.entity.Form01" >INSERT INTO form01 (id, name, age, sex, grade_class) VALUES (#{id}, #{name}, #{age}, #{sex}, #{gradeClass}) ="updataById" parameterType="com.example.demo.entity.Form01" >UPDATE form01 SET id=#{id}, name=#{name}, age=#{age}, sex=#{sex}, grade_class=#{gradeClass} where id= #{id} ="deletById" parameterType="com.example.demo.entity.Form01"> DELETE FROM form01 WHERE id = #{id}; ="foundById" parameterType="com.example.demo.entity.Form01" resultType="com.example.demo.entity.Form01"> select * from form01 where id= #{id}

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.Drivermybatis.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)]
【spring|springboot增删改查案例】完成。

    推荐阅读