Heim > Java > javaLernprogramm > So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in Java

So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in Java

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Freigeben: 2023-05-20 10:07:41
nach vorne
1654 Leute haben es durchsucht

So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in Java

Wie im Bild oben gezeigt, haben wir 7 weitere wichtige Module, die in die Idee eingebaut werden müssen

# 🎜🎜# (1) Controller-Paket: Wenn Sie SpringMVC studiert haben oder etwas darüber wissen, müssen Sie wissen, dass der Controller die Kontrollschicht ist, die dem Ort entspricht, an dem wir Browserinformationen empfangen und auf das Senden relevanter Informationen reagieren. Es wird auch mit Computernetzwerk-bezogenem Wissen kombiniert, um zu verstehen, wie man Informationen im Browser empfängt und wie man auf die Informationen reagiert. Unter der Controller-Kontrollschicht implementieren wir relevante Datenmanipulationen (hier möchte ich meinen besonderen Dank aussprechen). Mein älterer Bruder hat mir während meiner Studienzeit viel Wissen über Webprogrammierung vermittelt. Ich hoffe, Sie können die entsprechende Zeit nutzen, um weitere Informationen und verwandte Videos zu lernen. Entitätspaket: Unsere Entitätsklassen werden hier gespeichert, was genau dem einfachen Erlernen des Erstellens von Klassen in Java entspricht. # 🎜🎜# (3) Mapper-Paket: Es wird in SpringMVC als Persistenzschicht bezeichnet (DAO-Schicht (Datenzugriffsobjekt); ). Hier können Sie die Datenbank direkt bedienen, im Allgemeinen in Verbindung mit dem fünften Paketzuordnungspaket. (4) Servicepaket: Es wird in SpringMVC als Geschäftslogikschicht bezeichnet, daher beziehen sich alle hier gespeicherten Klassen auf Verarbeitungsbezogene Geschäftslogik;

(5) Zuordnungspaket: Unter Ressourcen als Klassenpfad abgelegt, die Mybatis-Datei wird gespeichert. Da das aktuelle SpringBoot sehr integriert ist, können viele Konfigurationsdateien zusammengestellt werden, und sogar Freunde, die nicht viel haben Die Stiftung mybatis kann es lernen. Der Grund, warum das Mapper-Paket und das Mapping-Paket zusammen verwendet werden, liegt darin, dass sie eine Mapping-Beziehung bilden und in Kombination für den Zugriff auf unsere Datenbankdateien verwendet werden.
(6) application.yml: Als globale Standardkonfigurationsdatei Es eignet sich für das gesamte Projekt, um so viele unserer Konfigurationsinformationen zu integrieren. Diese Konfigurationsdatei ist auf jeden Fall unverzichtbar (hier ist es am besten, die Yaml-Sprache zu verwenden, um die Konfigurationsdatei zu schreiben, da das Schreiben relativ einfach und klar ist). ;
(7) application-dev .yml: Dies ist eine Konfigurationsdatei für eine bestimmte Umgebung, die mit unserem eigentlichen Projekt kombiniert werden sollte. Denn das Projekt selbst ist nicht nur eine Entwicklungsumgebung, sondern auch eine Reihe von Umgebungen wie Test und Produktion. Wenn wir entwickeln, verwenden wir die Entwicklungsumgebung, um application-dev.yml zu konfigurieren. Wenn wir Tests durchführen, verwenden wir die Testumgebung, um application-test.yml zu konfigurieren. pro. yml. Derzeit sprechen wir nur über die Entwicklungsumgebung, daher verwenden wir nur eine Konfigurationsdatei application-dev.yml. Eine bestimmte Umgebungskonfigurationsinformation überschreibt bei Verwendung die Standardkonfiguration von application.yml, sodass Sie sich keine Sorgen über Konflikte zwischen den Anweisungen in der Standardkonfiguration und den Anweisungen in der Umgebungskonfiguration machen müssen.

(1) Programmeingang

Jedes Java-Programm hat bereits einen Programmeingang, wenn wir SpringBoot initialisieren .

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);
    }
}
Nach dem Login kopieren

● @SpringBootApplication-Annotation: Wird verwendet, um anzugeben, dass dies die Startelementklasse eines Springboot-Projekts ist, mit dem Zweck, die automatische Konfiguration zu ermöglichen (Eigentlich handelt es sich um Vererbung. Für die Konfigurationsklasse „Konfiguration“ erfordert ein tiefes Verständnis, dass jeder die Prinzipien von SpringBoot analysiert.)

● @MapperScan („com.example.demo.mapper“) dient dazu, unsere Mapper-Dateien zu scannen und effektiv darauf zuzugreifen Zugehörige Datenbankdatei-URL-Zuordnung (Diese Anmerkung ist sehr nützlich!) So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in Java

(2) Datenbankdatei erstellen


#🎜🎜 #

So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in Java●Die entsprechende SQL-Anweisung zum Erstellen einer Tabelle lautet wie folgt:

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;
Nach dem Login kopieren

(3) Benutzerentitätsklasse erstellen So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in Java

#🎜 🎜#

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 +
                '}';
    }
}
Nach dem Login kopieren
#🎜 🎜#●Jeder muss damit vertraut sein. Dies ist eine Klasse, die auf Basis von reinem Java geschrieben werden kann. Sie erstellt drei private Eigenschaften, einen leeren Parameterkonstruktor, entsprechende Get- und Set-Methoden und schreibt auch einen toString um () Methode. Hierbei ist zu beachten, dass es beim Deklarieren von Eigenschaften am besten ist, eine Wrapper-Klasse für die Deklaration zu verwenden.

●Warum sollten Sie beim Lesen und Eingeben von Mybatis in Java versuchen, Verpackungsklassen anstelle von Basisdatentypen zu verwenden?

① Wenn einem Feld in MySQL kein Wert zugewiesen ist, ist der Standardwert null. Wenn Sie ihn aus der Datenbank überprüfen, ist er auch null. Wenn das Feld im entsprechenden Java-Code vom Typ int ist, ist null nicht möglich entsprechen dem Typ int, da int darstellt. Grundlegende Datentypen können nur grundlegende Zahlen sein.

②Den Attributen der Entitätsklasse kann ein Wert zugewiesen werden oder nicht. Wenn Sie ihr keinen Wert zuweisen, ist der Standardwert int beispielsweise 0. Das aktive Setzen des Werts auf 0 und der Standardwert 0 sind jedoch zwei verschiedene Konzepte. Beispielsweise bedeutet die Punktzahl einer Klasse: 0 bedeutet, dass ein bestimmter Schüler eine Punktzahl von 0 hat, und null bedeutet, dass der Schüler keine Punktzahl in der Prüfung hat. Dies sind zwei verschiedene Konzepte.

(4)建立UserMapper接口

So implementieren Sie grundlegende Hinzufügungen, Löschungen, Änderungen und Abfragen in SpringBoot in 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();
}
Nach dem Login kopieren

●@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>
Nach dem Login kopieren

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