展开菜单
首页 精品内容 本月促销 装机必备 Windows PDF教程 macOS软件 IOS软件 Android AI 专题
全部分类

当前位置:

首页 > 编程开发 > Java Spring Boot 实现基本的 CRUD 操作

Java Spring Boot 实现基本的 CRUD 操作

根据上图所示,idea中我们有7个比较重要的模块需要建立(1)controller包:如果学习过或者对SpringMVC有所了解的小伙伴,肯定知道,controller是控制层,相当于我们的接收浏览器信息并响应发送相关信息的地方,具体的还结合计算机网络相关知识,了解在浏览器中如何接收信息,并如何响应信息,在controller控制层下我们实现相关数据操纵(此处特别鸣谢我研究生生涯阶段的师兄给我讲解了很久关于Web编程方面的知识,收益良多。希望大家利用相关时间,多去查询资料和相关视频进行学习);(2)ent

本文目录

    Java Spring Boot 实现基本的 CRUD 操作

    根据上图所示,idea中我们有7个比较重要的模块需要建立

    (1)controller包:如果学习过或者对SpringMVC有所了解的小伙伴,肯定知道,controller是控制层,相当于我们的接收浏览器信息并响应发送相关信息的地方,具体的还结合计算机网络相关知识,了解在浏览器中如何接收信息,并如何响应信息,在controller控制层下我们实现相关数据操纵(此处特别鸣谢我研究生生涯阶段的师兄给我讲解了很久关于Web编程方面的知识,收益良多。希望大家利用相关时间,多去查询资料和相关视频进行学习);
    (2)entity包:这里存放我们的实体类,跟单纯学java里面建立类一模一样,没有区别;
    (3)mapper包:SpringMVC中称之为持久层也就是(DAO层(数据访问对象)),这里可以直接对数据库进行操作,一般与第五个包mapping包连用;
    (4)service包:SpringMVC中称之为业务逻辑层,所以这里存放的类都是处理相关的业务逻辑;
    (5)mapping包:放在resources下面作为classpath,存放的mybatis文件,因为现在的SpringBoot集成性很强,把很多配置文件都可以放在一块,哪怕是没有太多的mybatis基础的小伙伴也可以进行学习。之所以说mapper包与mapping包是一起连用,是因为它们形成映射关系,它们两的结合使用来访问我们的数据库文件;
    (6)application.yml:作为全局默认配置文件,适用于整个项目,要整合我们这么多的配置信息,这个配置文件肯定少不了(此处最好是使用yaml语言编写配置文件,因为编写相对而言简单明朗一些);
    (7)application-dev.yml:这个算是具体某个环境的配置文件,具体要结合我们的实际项目。因为项目本身不只是开发环境,还有测试、生产等一系列环境。当我们做开发是用开发的环境配置application-dev.yml,当我们做测试的时候用测试的环境配置application-test.yml,当我们做生产的时候用的是生产的环境配置application-pro.yml。目前我们暂时只说开发环境,所以就只用到了一个配置文件application-dev.yml。具体的某个环境配置信息在使用时会覆盖applicaiton.yml的默认配置,所以,不用担心默认配置中的语句与环境配置中的语句发生冲突。

    (1)程序入口

    每个java程序都有程序入口,DemoApplication本身在我们初始化SpringBoot时就已经存在了,我们在这里不需要做过多的配置。

    Java Spring Boot 实现基本的 CRUD 操作

    package com.example.demo;
    
    import org.mybatis.spring.annotation.MapperScan;
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    
    @MapperScan("com.example.demo.mapper")
    @SpringBootApplication
    public class DemoApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(DemoApplication.class, args);
        }
    }

    ●@SpringBootApplication注解:是用来表示这是一个springboot项目的启动项类,目的是开启自动配置(其实它是继承于Configuration配置类,深解需要大家去剖析SpringBoot的原理)
    ●@MapperScan(“com.example.demo.mapper”)是为了扫描我们的mapper文件,进行有效访问相关数据库文件URL映射(这个注解的作用很大!)

    (2)建立数据库文件

    Java Spring Boot 实现基本的 CRUD 操作

    Java Spring Boot 实现基本的 CRUD 操作

    ●相应的sql创建表语句如下所示:

    CREATE TABLE `water` (
      `id` int NOT NULL,
      `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,
      `salary` double(10,2) NOT NULL,
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 COLLATE=utf8_unicode_ci;

    (3)建立User实体类

    Java Spring Boot 实现基本的 CRUD 操作

    package com.example.demo.entity;
    
    /**
     * @description:    实体类
     * @author: Fish_Vast
     * @Date: 2021/8/25
     * @version: 1.0
     */
    public class User {
        private String name;
        private Integer id;
        private Double salary;
    
        public User() {
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public Integer getId() {
            return id;
        }
    
        public void setId(Integer id) {
            this.id = id;
        }
    
        public Double getSalary() {
            return salary;
        }
    
        public void setSalary(Double salary) {
            this.salary = salary;
        }
    
        @Override
        public String toString() {
            return "User{" +
                    "name='" + name + '\'' +
                    ", id=" + id +
                    ", salary=" + salary +
                    '}';
        }
    }

    ●这里想必大家不会陌生,这是纯Java基础都能编写出来的类,建立三个私有属性,一个空参构造器,相应的get、set方法,还重写了一个toString()方法。这里值得注意的点是在声明属性时,最好是使用包装类进行声明。
    ●在Java中跟mybatis相关的读取与录入,为何尽量使用包装类而不使用基本数据类型呢?
    ①在MySQL中没有给字段赋值默认为null,当你从数据库中查出来也是null,如果该字段在对应的Java代码中是int类型,null不能对应int类型,因为int代表的是基本数据类型,只能是基本的数字。
    ②实体类的属性可以给它赋值也可以不给它赋值,当你不给它赋值时,它拥有默认值,比如int的默认值就为0。但是主动为它设置值为0与它默认为0是两个不同的概念。比如,一个班的成绩:0代表某学生分数为0,而null代表这个学生该门考试没有成绩,这是两个不同的概念。

    (4)建立UserMapper接口

    Java Spring Boot 实现基本的 CRUD 操作

    package com.example.demo.mapper;
    
    import com.example.demo.entity.User;
    import org.springframework.stereotype.Repository;
    
    import java.util.List;
    
    @Repository
    public interface UserMapper {
        //1.通过id查询用户信息
        User getUser(int id);
        //2.通过id删除用户信息
        int delete(int id);
        //3.更改用户信息
        int update(User user);
        //4.插入用户信息
        int save(User user);
        //5.查询所有用户信息
        List selectAll();
    }

    ●@Repository,注解它本身的作用便是标注数据访问组件,作为DAO对象,它将 DAO 导入 IoC 容器,并使未经检查的异常有资格转换为 Spring DataAccessException。通过这个注解能够报出更多发现不了的错误,更有利于对项目的维护和开发。其实@Repository不在接口上进行注明,我们的程序照样可以运行,因为在我们使用@MapperScan的时候,我们已经将我们的接口交给框架中的代理类,所以即便是我们不写,程序不会报错,只是我们在Service层写明接口的时候,IDEA会给出红色的波浪线。可以这样理解,标注@Repository是为了告诉编译器我将接口注入到了IoC容器了,你不要报错啦~
    ●相应地,写出增删查改和查询全部信息的五个方法。

    (5)配置UserMapper.xml文件

    
    
    
        
            
            
            
        
        
        
            select * from water where id = #{id}
        
        
        
            delete from water where id=#{id}
        
        
        
            select * from water
        
    
        
        
            insert into water
            
                
                    id,
                
                
                    name,
                
                
                    salary,
                
            
            
                
                    #{id,jdbcType=INTEGER},
                
                
                    #{name,jdbcType=VARCHAR},
                
                
                    #{salary,jdbcType=DOUBLE},
                
            
        
    
        
        
            update water
            
                
                    name = #{name,jdbcType=VARCHAR},
                
                
                    salary = #{salary,jdbcType=DOUBLE},
                
            
            where id = #{id,jdbcType=INTEGER}
        
    

    ●mapper namespace用于绑定mapper接口的,当你的namespace绑定接口后,你可以不用写接口实现类,mybatis会通过该绑定自动帮你找到对应要执行的SQL语句(通过mapper方法名进行绑定);
    ●resultMap 定义了一个id为BaseResultMap的标识,type代表使用哪种类作为我们所要映射的类;
    ●