Maison > Java > javaDidacticiel > Comment implémenter l'ajout, la suppression, la modification et la requête de base dans SpringBoot en Java

Comment implémenter l'ajout, la suppression, la modification et la requête de base dans SpringBoot en Java

WBOY
Libérer: 2023-05-20 10:07:41
avant
1470 Les gens l'ont consulté

Comment implémenter lajout, la suppression, la modification et la requête de base dans SpringBoot en Java

Comme le montre l'image ci-dessus, nous avons 7 autres modules importants qui doivent être construits dans l'idée

# 🎜🎜# (1) Package contrôleur : si vous avez étudié ou connaissez quelque chose sur SpringMVC, vous devez savoir que le contrôleur est la couche de contrôle, qui équivaut à l'endroit où nous recevons les informations du navigateur et répondons pour envoyer des informations pertinentes. il est également combiné avec des connaissances liées au réseau informatique, comprenant comment recevoir des informations dans le navigateur et comment répondre aux informations. Sous la couche de contrôle du contrôleur, nous mettons en œuvre une manipulation de données pertinente (un merci spécial à mon frère aîné pendant ma carrière universitaire). m'expliquant les connaissances sur la programmation Web depuis longtemps. Avantages J'espère que vous pourrez utiliser le temps nécessaire pour vérifier plus d'informations et des vidéos connexes pour apprendre) ; ici, ce qui revient exactement à apprendre à créer des classes en Java, il n'y a aucune différence ; # 🎜🎜# (3) package mapper : cela s'appelle la couche de persistance dans SpringMVC (couche DAO (objet d'accès aux données)). vous pouvez exploiter directement la base de données, généralement utilisée en conjonction avec le cinquième package de mappage ;

(4) Package de services : il s'appelle la couche de logique métier dans SpringMVC, donc les classes stockées ici sont toutes liées au traitement des affaires liées. logique ;
(5) Package de mappage : placé sous les ressources en tant que chemin de classe, le fichier mybatis stocké. Parce que le SpringBoot actuel est très intégré, de nombreux fichiers de configuration peuvent être rassemblés, et même les amis qui n'ont pas beaucoup de bases mybatis peuvent le faire. apprenez-le. La raison pour laquelle le package mapper et le package de mappage sont utilisés ensemble est qu'ils forment une relation de mappage et qu'ils sont utilisés en combinaison pour accéder à nos fichiers de base de données
(6) application.yml : En tant que fichier de configuration global par défaut ; , il convient à Pour l'ensemble du projet, pour intégrer une grande partie de nos informations de configuration, ce fichier de configuration est définitivement indispensable (il est préférable d'utiliser le langage yaml pour écrire le fichier de configuration ici, car l'écriture est relativement simple et claire) ;
(7) application-dev .yml : Il s'agit d'un fichier de configuration pour un environnement spécifique, qui doit être combiné avec notre projet actuel. Parce que le projet lui-même n'est pas seulement un environnement de développement, mais aussi une série d'environnements tels que les tests et la production. Lorsque nous effectuons du développement, nous utilisons l'environnement de développement pour configurer application-dev.yml. Lorsque nous effectuons des tests, nous utilisons l'environnement de test pour configurer application-test.yml. Lorsque nous effectuons la production, nous utilisons l'environnement de production pour configurer application-. pro. À l'heure actuelle, nous ne parlons que de l'environnement de développement, nous n'utilisons donc qu'un seul fichier de configuration application-dev.yml. Des informations de configuration d'environnement spécifiques remplaceront la configuration par défaut de application.yml lorsqu'elles sont utilisées, vous n'avez donc pas à vous soucier des conflits entre les instructions de la configuration par défaut et les instructions de la configuration de l'environnement.

(1) Entrée du programme

Chaque programme Java a une entrée de programme elle-même existe déjà lorsque nous initialisons SpringBoot. Nous n'avons pas besoin de faire trop de configuration ici. .

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);
    }
}
Copier après la connexion

Quantity Annotation @SpringBootApplication : Elle est utilisée pour indiquer qu'il s'agit de la classe d'élément de démarrage d'un projet Springboot, dans le but d'activer la configuration automatique. (en fait, c'est un héritage. Pour la classe de configuration Configuration, une compréhension approfondie nécessite que chacun analyse les principes de SpringBoot) Comment implémenter lajout, la suppression, la modification et la requête de base dans SpringBoot en JavaQuantity @MapperScan ("com.example.demo.mapper") consiste à analyser nos fichiers de mappeur et à accéder efficacement Mappage d'URL du fichier de base de données associé (Cette annotation est très utile !)

(2) Créer un fichier de base de données

#🎜🎜 #Comment implémenter lajout, la suppression, la modification et la requête de base dans SpringBoot en Java

QuantityL'instruction de création de table SQL correspondante est la suivante :

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;
Copier après la connexion
Comment implémenter lajout, la suppression, la modification et la requête de base dans SpringBoot en Java (3) Créer une classe d'entité utilisateur

#🎜 🎜#
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 +
                '}';
    }
}
Copier après la connexion
#🎜 🎜# ●Tout le monde doit être familier avec cela. Il s'agit d'une classe qui peut être écrite sur la base de Java pur. Elle établit trois propriétés privées, un constructeur de paramètres vides, les méthodes get et set correspondantes, et réécrit également un toString. () méthode. . Le point à noter ici est que lors de la déclaration de propriétés, il est préférable d'utiliser une classe wrapper pour la déclaration.

●Dans la lecture et la saisie liées à mybatis en Java, pourquoi essayer d'utiliser des classes d'empaquetage au lieu de types de données de base ?

①Si aucune valeur n'est attribuée à un champ dans MySQL, la valeur par défaut est null Lorsque vous la vérifiez depuis la base de données, elle est également nulle Si le champ est de type int dans le code Java correspondant, null ne peut pas correspondre. au type int, car int représente les types de données de base qui ne peuvent être que des nombres de base.

②Les attributs de la classe d'entité peuvent se voir attribuer une valeur ou non. Lorsque vous ne lui attribuez pas de valeur, elle a une valeur par défaut. Par exemple, la valeur par défaut de int est 0. Mais définir activement la valeur sur 0 et la valeur par défaut sur 0 sont deux concepts différents. Par exemple, le score d'une classe : 0 signifie qu'un certain élève a un score de 0, et nul signifie que l'élève n'a aucun score à l'examen. Ce sont deux concepts différents. Comment implémenter lajout, la suppression, la modification et la requête de base dans SpringBoot en Java

(4)建立UserMapper接口

Comment implémenter lajout, la suppression, la modification et la requête de base dans SpringBoot en Java

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<User> selectAll();
}
Copier après la connexion

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

(5)配置UserMapper.xml文件

<?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">
<mapper namespace="com.example.demo.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.demo.entity.User">
        <result column="id" jdbcType="INTEGER" property="id" />
        <result column="name" jdbcType="VARCHAR" property="name" />
        <result column="salary" jdbcType="DOUBLE" property="salary" />
    </resultMap>
    <!--查询用户信息-->
    <select id="getUser" resultType="com.example.demo.entity.User">
        select * from water where id = #{id}
    </select>
    <!--删除用户信息-->
    <delete id="delete" parameterType="int">
        delete from water where id=#{id}
    </delete>
    <!--返回所有用户信息-->
    <select id="selectAll"  resultType="com.example.demo.entity.User">
        select * from water
    </select>

    <!--增加用户信息-->
    <insert id="save" parameterType="com.example.demo.entity.User" >
        insert into water
        <trim prefix="(" suffix=")" suffixOverrides="," >
            <if test="id != null" >
                id,
            </if>
            <if test="name != null" >
                name,
            </if>
            <if test="salary != null" >
                salary,
            </if>
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides="," >
            <if test="id != null" >
                #{id,jdbcType=INTEGER},
            </if>
            <if test="name != null" >
                #{name,jdbcType=VARCHAR},
            </if>
            <if test="salary != null" >
                #{salary,jdbcType=DOUBLE},
            </if>
        </trim>
    </insert>

    <!--根据id更改用户信息-->
    <update id="update" parameterType="com.example.demo.entity.User">
        update water
        <set >
            <if test="name != null" >
                name = #{name,jdbcType=VARCHAR},
            </if>
            <if test="salary != null" >
                salary = #{salary,jdbcType=DOUBLE},
            </if>
        </set>
        where id = #{id,jdbcType=INTEGER}
    </update>
</mapper>
Copier après la connexion

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