Table des matières
美国职业篮球联盟(NBA)球员信息
新增球员
修改球员信息
Maison Java javaDidacticiel Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions d'ajout, de suppression, de modification et de vérification

Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions d'ajout, de suppression, de modification et de vérification

May 11, 2023 pm 04:19 PM
mybatis springboot

Tout d'abord, nous créons le projet. Remarque : lors de la création du projet SpringBoot, vous devez être connecté à Internet, sinon une erreur sera signalée.

Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions dajout, de suppression, de modification et de vérification

Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions dajout, de suppression, de modification et de vérification

Après la création du projet, nous compilons d'abord le projet. application.yml

Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions dajout, de suppression, de modification et de vérification

#Spécifiez le numéro de port
serveur :
port : 8888
#Configurer la source de données MySQL
spring:
source de données:
nom de classe de pilote : com.mysql.cj.jdbc.Driver
url : jdbc:mysql://localhost:3306/nba?serverTimezone= Asia/Shanghai
nom d'utilisateur : root
mot de passe : root
#Configurer le moteur de modèle thymeleaf
thymeleaf:
mode : HTML5
cache : false
suffixe : .html
préfixe : classpath:/templates/
mybatis:
mapper-locations: class path :/mapper/*.xml
type-aliases-package: com.bdqn.springboot #Mettez le nom du package

Remarque : il doit y avoir un espace après :. C'est sa syntaxe. S'il n'y a pas d'espace, une erreur sera signalée

Continuez Ensuite, nous allons construire le projet et créer les packages suivants. Vous pouvez créer d'autres packages d'outils en fonction de vos besoins réels. utilisé pour stocker les interfaces de la couche dao : utilisé pour stocker les classes d'entités. service : utilisé pour stocker l'interface de la couche de service et la classe d'implémentation de la couche de service

web : utilisé pour stocker la couche de contrôle du contrôleur Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions dajout, de suppression, de modification et de vérification

Ensuite, nous commençons à écrire du code

D'abord. est la classe d'entité. Aujourd'hui, nous effectuons un simple ajout, suppression et modification de deux tables Check

package com.baqn.springboot.pojo;
import lombok.Data;
@Data
public class Clubs {
    private int cid;
    private String cname;
    private String city;
}
Copier après la connexion
package com.baqn.springboot.pojo;
import lombok.Data;
@Data
public class Players {
    private int pid;
    private String pname;
    private String birthday;
    private int height;
    private int weight;
    private String position;
    private int cid;
    private String cname;
    private String city;
}
Copier après la connexion

L'utilisation de l'annotation @Data peut réduire efficacement la quantité de code dans la classe d'entité, réduisant ainsi l'écriture de get/set et toString

. Ensuite, la couche mappeur

package com.baqn.springboot.mapper;
import com.baqn.springboot.pojo.Players;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import java.util.List;
@Mapper
@Repository
public interface PlayersMapper {
    /**
     * 查询所有
     * @return
     */
    List<Players> findAll();
    /**
     * 根据ID查询
     * @return
     */
    Players findById(Integer id);
    /**
     * 新增
     * @param players
     * @return
     */
    Integer add(Players players);
    /**
     * 删除
     * @param pid
     * @return
     */
    Integer delete(Integer pid);
    /**
     * 修改
     * @param players
     * @return
     */
    Integer update(Players players);
}
Copier après la connexion

Après avoir utilisé @mapper, il n'est pas nécessaire de configurer l'analyse dans la configuration Spring. L'adresse correspond à la classe mappeur appropriée via l'attribut d'espace de noms dans mapper.xml Spring générera dynamiquement le bean et l'injectera. dans Servicelmpl.

Puis la couche de service

package com.baqn.springboot.service;
import com.baqn.springboot.pojo.Players;
import org.apache.ibatis.annotations.Param;
import java.util.List;
public interface PlayersService {
    List<Players> findAll();
    Players findById(Integer pid);
    Integer add(Players players);
    Integer delete(Integer pid);
    Integer update(Players players);
}
Copier après la connexion
package com.baqn.springboot.service;
import com.baqn.springboot.mapper.PlayersMapper;
import com.baqn.springboot.pojo.Players;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class PlayersServiceImpl implements  PlayersService{
    @Autowired
    private PlayersMapper mapper;
    @Override
    public List<Players> findAll() {
        return mapper.findAll();
    }
    @Override
    public Players findById(Integer pid) {
        return mapper.findById(pid);
    }
    @Override
    public Integer add(Players players) {
        return mapper.add(players);
    }
    @Override
    public Integer delete(Integer pid) {
        return mapper.delete(pid);
    }
    @Override
    public Integer update(Players players) {
        return mapper.update(players);
    }
}
Copier après la connexion

Enfin la classe de contrôle du contrôleur de la couche Web

package com.baqn.springboot.web;
import com.baqn.springboot.pojo.Players;
import com.baqn.springboot.service.PlayersServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller
public class PlayersController {
    @Autowired
    private PlayersServiceImpl service;
    @RequestMapping("/findAll")
    public String findAll(Model model) {
        List<Players> allList = service.findAll();
        model.addAttribute("allList",allList);
        return "index";
    }
    @RequestMapping("/findById/{pid}")
    public String findById(Model model,@PathVariable("pid") Integer pid) {
        Players list = service.findById(pid);
        //System.out.println("---------------"+list.toString());
        model.addAttribute("list",list);
        return "update.html";
    }
    @RequestMapping("/add")
    public String add(Model model, Players players){
        Integer count = service.add(players);
        if (count>0){
            return "redirect:/findAll";
        }
        return "add";
    }
    @RequestMapping("/delete/{pid}")
    public String delete(Model model,@PathVariable("pid") Integer pid){
        Integer count = service.delete(pid);
        if (count>0){
            return "redirect:/findAll";
        }
        return null;
    }
    @RequestMapping("/a1")
    public String a1(Model model, Players players){
        return "add.html";
    }
    @RequestMapping("/update")
    public String update(Model model,Players plays){
        Integer count = service.update(plays);
        if (count>0){
            return "redirect:/findAll";
        }
        return null;
    }
}
Copier après la connexion

Remarque : la méthode a1 est uniquement utilisée pour accéder à la page et n'a aucun autre effet. Si vous avez une meilleure méthode de saut, vous pouvez. laissez-moi un message.

Maintenant que les préparatifs sont terminés, vous pouvez commencer à écrire des instructions SQL

mapper.xml peut être écrit dans les ressources ci-dessous ou dans la couche mapper ci-dessus

S'il est écrit ci-dessus, vous devez l'écrire. un filtre de ressources dans le pom Si vous êtes intéressé, vous pouvez aller sur Baidu

<?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=绑定一个对应的Dao/Mapper接口-->
<mapper namespace="com.baqn.springboot.mapper.PlayersMapper">
    <select id="findAll" resultType="com.baqn.springboot.pojo.Players">
        select * from clubs c , players p
        where c.cid = p.cid
    </select>
    <select id="findById" resultType="com.baqn.springboot.pojo.Players">
        select * from clubs c , players p
        where c.cid = p.cid and p.pid=#{pid}
    </select>
    <insert id="add" parameterType="com.baqn.springboot.pojo.Players">
        INSERT INTO `nba`.`players`(pname, birthday, height, weight, position, cid)
        VALUES (#{pname}, #{birthday}, #{height}, #{weight}, #{position}, #{cid});
    </insert>
    <delete id="delete" parameterType="int">
        delete from players where pid = #{pid}
    </delete>
    <update id="update" parameterType="com.baqn.springboot.pojo.Players">
        UPDATE `nba`.`players`
        <set>
            <if test="pname != null">pname=#{pname},</if>
            <if test="birthday != null">birthday=#{birthday},</if>
            <if test="height != null">height=#{height},</if>
            <if test="weight != null">weight=#{weight},</if>
            <if test="position != null">position=#{position},</if>
            <if test="cid != null">cid=#{cid}</if>
        </set>
        WHERE `pid` = #{pid};
    </update>
</mapper>
Copier après la connexion

Remarque : L'identifiant dans le mappeur est le suivant

Page d'accueil index.html

<html>
<head>
    <title>Title</title>
</head>
<body>
<div align="center">
    <table border="1">
        <h2 id="美国职业篮球联盟-NBA-球员信息">美国职业篮球联盟(NBA)球员信息</h2>
        <a th:href="@{/a1}" rel="external nofollow" >新增</a>
        <tr>
            <th>球员编号</th>
            <th>球员名称</th>
            <th>出生时间(yyyy-MM-dd)</th>
            <th>球员身高(cm)</th>
            <th>球员体重(kg)</th>
            <th>球员位置</th>
            <th>所属球队</th>
            <th>相关操作</th>
        </tr>
        <!--/*@thymesVar id="abc" type=""*/-->
        <tr th:each="list : ${allList}">
                <td th:text="${list.pid}"></td>
                <td th:text="${list.pname}"></td>
                <td th:text="${list.birthday}"></td>
                <td th:text="${list.height}">${list.height}</td>
                <td th:text="${list.weight}"></td>
                <td th:text="${list.position}"></td>
                <td th:text="${list.cname}"></td>
                <td>
                    <a th:href="@{&#39;/findById/&#39;+${list.pid}}" rel="external nofollow" >修改</a>
                    <a th:href="@{&#39;/delete/&#39;+${list.pid}}" rel="external nofollow" >删除</a>
                </td>
            </tr>
        </c:forEach>
    </table>
</div>
</body>
</html>
Copier après la connexion

Nouvelle page add.html

<!DOCTYPE html>
<html>
      <head>
      <title>Title</title>
</head>
<body>
<div align="center">
  <h4 id="新增球员">新增球员</h4>
  <form action="/add">
    <p>
      球员名称:
      <input name="pname" id="pname">
    </p >
    <p>
      出生日期:
      <input name="birthday" id="birthday">
    </p >
    <p>
      球员升高:
      <input name="height" id="height">
    </p >
    <p>
      球员体重:
      <input name="weight" id="weight">
    </p >
    <p>
      球员位置:
      <input type="radio"  name="position" value="控球后卫"/>控球后卫
      <input type="radio"  name="position" value="得分后卫"/>得分后卫
      <input type="radio"  name="position" value="小前锋" />小前锋
      <input type="radio"  name="position" value="大前锋" />大前锋
      <input type="radio"  name="position" value="中锋"/>中锋
    </p >
    <p>
      所属球队:
      <select name="cid">
        <option value="1">热火队</option>
        <option value="2">奇才队</option>
        <option value="3">魔术队</option>
        <option value="4">山猫队</option>
        <option value="5">老鹰队</option>
      </select>
    </p >
    <input type="submit" value="保存">
    <input type="reset" value="重置">
  </form>
</div>
</body>
</html>
Copier après la connexion

Modifier la page. update.html

<!DOCTYPE html>
<html  xmlns:th="http://www.thymeleaf.org">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body class="container">
    <div align="center">
      <h2 id="修改球员信息">修改球员信息</h2>
      <br/>
      <form action="/update" method="get" id="form2">
        <table>
          <tr>
            <td colspan="2"></td>
          </tr>
          <tr>
            <td>球员编号:</td>
            <td><input type="text" name="pid"
                                    id="pid" th:value="${list.pid}"/></td>
          </tr>
          <tr>
            <td>球员姓名:</td>
            <td><input type="text" name="pname"
                                    id="pname" th:value="${list.pname}"/></td>
          </tr>
          <tr>
            <td>出身日期:</td>
            <td><input type="text" name="birthday"
                                    id="birthday" th:value="${list.birthday}"/></td>
          </tr>
          <tr>
            <td>球员身高:</td>
            <td><input type="text" name="height"
                                    id="height" th:value="${list.height}"/></td>
          </tr>
          <tr>
            <td>球员体重:</td>
            <td><input type="text" name="weight"
                                    id="weight" th:value="${list.weight}"/></td>
          </tr>
          <tr>
            <td>球员位置:</td>
            <td><input type="text" name="position"
                                    id="position" th:value="${list.position}"/></td>
          </tr>
          <tr>
            <td>所属球队:</td>
            <td>
              <select name="cid" id="cid" th:value="${list.cid}"/>
              <option value="">--请选择球队--</option>
              <option value="1">热火队</option>
              <option value="2">奇才队</option>
              <option value="3">魔术队</option>
              <option value="4">山猫队</option>
              <option value="5">老鹰队</option>
              </select></td>
          </tr>
          <tr>
            <td colspan="2"><input type="submit" id="btn2" value="保存"/>
              <input type="reset" id="wrap-clera" value="重置"/>
              <a th:href="@{/index.html}" rel="external nofollow" ><input type="button" id="btn1" value="返回"/></a>
            </td>
          </tr>
        </table>
      </form>
    </div>
</body>
</html>
Copier après la connexion

Code source de création de base de données - Remarque : j'utilise une base de données MySQL

create table clubs(
		cid int primary key auto_increment,
		cname varchar(50) not null,
		city varchar(50) not null
)
create table players(
		pid int primary key auto_increment,
		pname varchar(50) not null,
		birthday datetime not null,
		height int not null,
		weight int not null,
		position varchar(50) not null,
		cid int not null
)
alter  table  players  add  constraint  players_cid
foreign key(cid)  references  clubs(cid);
insert into clubs values
(1,&#39;热火队&#39;,&#39;迈阿密&#39;),
(2,&#39;奇才队&#39;,&#39;华盛顿&#39;),
(3,&#39;魔术队&#39;,&#39;奥兰多&#39;),
(4,&#39;山猫队&#39;,&#39;夏洛特&#39;),
(5,&#39;老鹰队&#39;,&#39;亚特兰大&#39;)
insert into players values
(4,&#39;多多&#39;,&#39;1989-08-08&#39;,213,186,&#39;前锋&#39;,1),
(5,&#39;西西&#39;,&#39;1987-10-16&#39;,199,162,&#39;中锋&#39;,1),
(6,&#39;南南&#39;,&#39;1990-01-23&#39;,221,184,&#39;后锋&#39;,1)
Copier après la connexion

Enfin, laissez-moi vous montrer la page Affichage

Entrez dans la barre d'adresse : http://localhost:8888/findAll Saisissez toutes les requêtes méthodes et accédez à idnex.html pour l'affichage

Cliquez sur Ajouter pour accéder à la nouvelle page

Entrez les paramètres

Puis cliquez sur Enregistrer Une fois l'ajout réussi, accédez à idnex.html et affichez les données.

Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions dajout, de suppression, de modification et de vérification

La surface d'affichage des données frontales est ajoutée avec succès

Cliquez sur Modifier pour rechercher les données selon la méthode findById et accédez à la page update.htnl pour l'affichage. l'équipe vers Wizards et a cliqué sur Enregistrer

Comment SpringBoot intègre Mybatis et thymleft pour implémenter les fonctions dajout, de suppression, de modification et de vérification

Accédez à la page index.html et les données ont été modifiées avec succès

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

iBatis vs MyBatis : lequel vous convient le mieux ? iBatis vs MyBatis : lequel vous convient le mieux ? Feb 19, 2024 pm 04:38 PM

iBatis vs MyBatis : lequel choisir ? Introduction : Avec le développement rapide du langage Java, de nombreux frameworks de persistance ont vu le jour. iBatis et MyBatis sont deux frameworks de persistance populaires, qui fournissent tous deux une solution d'accès aux données simple et efficace. Cet article présentera les fonctionnalités et les avantages d'iBatis et MyBatis, et donnera quelques exemples de code spécifiques pour vous aider à choisir le framework approprié. Introduction à iBatis : iBatis est un framework de persistance open source

Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Explication détaillée de la fonction Définir la balise dans les balises SQL dynamiques MyBatis Feb 26, 2024 pm 07:48 PM

Interprétation des balises SQL dynamiques MyBatis : explication détaillée de l'utilisation des balises Set MyBatis est un excellent cadre de couche de persistance. Il fournit une multitude de balises SQL dynamiques et peut construire de manière flexible des instructions d'opération de base de données. Parmi elles, la balise Set est utilisée pour générer la clause SET dans l'instruction UPDATE, qui est très couramment utilisée dans les opérations de mise à jour. Cet article expliquera en détail l'utilisation de la balise Set dans MyBatis et démontrera ses fonctionnalités à travers des exemples de code spécifiques. Qu'est-ce que Set tag Set tag est utilisé dans MyBati

Différentes manières de mettre en œuvre des opérations de suppression par lots dans MyBatis Différentes manières de mettre en œuvre des opérations de suppression par lots dans MyBatis Feb 19, 2024 pm 07:31 PM

Plusieurs façons d'implémenter des instructions de suppression par lots dans MyBatis nécessitent des exemples de code spécifiques. Ces dernières années, en raison de la quantité croissante de données, les opérations par lots sont devenues une partie importante des opérations de base de données. Dans le développement réel, nous devons souvent supprimer des enregistrements de la base de données par lots. Cet article se concentrera sur plusieurs façons d'implémenter des instructions de suppression par lots dans MyBatis et fournira des exemples de code correspondants. Utilisez la balise foreach pour implémenter la suppression par lots. MyBatis fournit la balise foreach, qui peut facilement parcourir un ensemble.

Analyse comparative des fonctions et performances de JPA et MyBatis Analyse comparative des fonctions et performances de JPA et MyBatis Feb 19, 2024 pm 05:43 PM

JPA et MyBatis : analyse comparative des fonctions et des performances Introduction : Dans le développement Java, le framework de persistance joue un rôle très important. Les frameworks de persistance courants incluent JPA (JavaPersistenceAPI) et MyBatis. Cet article procédera à une analyse comparative des fonctions et des performances des deux frameworks et fournira des exemples de code spécifiques. 1. Comparaison des fonctions : JPA : JPA fait partie de JavaEE et fournit une solution de persistance des données orientée objet. Il est passé une annotation ou X

Explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis Explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis Feb 20, 2024 am 08:31 AM

Une explication détaillée de la façon d'utiliser les instructions de suppression par lots MyBatis nécessite des exemples de code spécifiques Introduction : MyBatis est un excellent cadre de couche de persistance qui fournit de riches fonctions d'opération SQL. Dans le développement de projets réels, nous rencontrons souvent des situations dans lesquelles les données doivent être supprimées par lots. Cet article présentera en détail comment utiliser les instructions de suppression par lots MyBatis et joindra des exemples de code spécifiques. Scénario d'utilisation : lors de la suppression d'une grande quantité de données dans la base de données, il est inefficace d'exécuter les instructions de suppression une par une. A ce stade, vous pouvez utiliser la fonction de suppression par lots de MyBatis

Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau Analyser le mécanisme de mise en cache de MyBatis : comparer les caractéristiques et l'utilisation du cache de premier niveau et du cache de deuxième niveau Feb 25, 2024 pm 12:30 PM

Analyse du mécanisme de mise en cache MyBatis : la différence et l'application du cache de premier niveau et du cache de deuxième niveau Dans le framework MyBatis, la mise en cache est une fonctionnalité très importante qui peut améliorer efficacement les performances des opérations de base de données. Parmi eux, le cache de premier niveau et le cache de deuxième niveau sont deux mécanismes de mise en cache couramment utilisés dans MyBatis. Cet article analysera en détail les différences et les applications du cache de premier niveau et du cache de deuxième niveau, et fournira des exemples de code spécifiques pour illustrer. 1. Cache de niveau 1 Le cache de niveau 1 est également appelé cache local. Il est activé par défaut et ne peut pas être désactivé. Le cache de premier niveau est SqlSes

Interprétation des paramètres de configuration de MyBatis Generator et bonnes pratiques Interprétation des paramètres de configuration de MyBatis Generator et bonnes pratiques Feb 23, 2024 am 09:51 AM

MyBatisGenerator est un outil de génération de code officiellement fourni par MyBatis, qui peut aider les développeurs à générer rapidement des JavaBeans, des interfaces Mapper et des fichiers de mappage XML conformes à la structure des tables de base de données. Dans le processus d'utilisation de MyBatisGenerator pour la génération de code, la définition des paramètres de configuration est cruciale. Cet article commencera du point de vue des paramètres de configuration et explorera en profondeur les fonctions de MyBatisGenerator.

Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : résolution des problèmes de requêtes associés courants Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : résolution des problèmes de requêtes associés courants Feb 22, 2024 pm 02:18 PM

Explication détaillée de la configuration des requêtes un-à-plusieurs de MyBatis : Pour résoudre les problèmes de requêtes associés courants, des exemples de code spécifiques sont nécessaires. Dans le travail de développement réel, nous rencontrons souvent des situations dans lesquelles nous devons interroger un objet d'entité maître et ses multiples objets d'entité esclave associés. . Dans MyBatis, la requête un-à-plusieurs est une requête d'association de base de données courante avec une configuration correcte, l'interrogation, l'affichage et le fonctionnement des objets associés peuvent être facilement réalisés. Cet article présentera la méthode de configuration des requêtes un-à-plusieurs dans MyBatis et comment résoudre certains problèmes de requêtes courants associés.

See all articles