>  기사  >  Java  >  SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법

SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법

王林
王林앞으로
2023-05-11 16:19:061553검색

먼저 프로젝트를 생성합니다. 참고: SpringBoot 프로젝트를 생성할 때 인터넷에 연결되어 있어야 합니다. 그렇지 않으면 오류가 보고됩니다.

SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법

프로젝트가 생성된 후 먼저 application.yml을 컴파일합니다. SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법

SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법#포트 번호 지정

서버 :
포트: 8888

#mysql 데이터 소스 구성
spring:
datasource:
드라이버 클래스 이름: com.mysql.cj.jdbc.Driver
url: jdbc :mysql://localhost:3306/nba?serverTimezone= Asia/Shanghai
사용자 이름: root
비밀번호: root
#템플릿 엔진 구성 thymeleaf
thymeleaf:
모드: HTML5
캐시: false
접미사: .html
접두사: 클래스 경로 :/templates/
mybatis:
mapper-locations: 클래스 경로 :/mapper/*.xml
type-aliases-package: com.bdqn.springboot #패키지 이름을 입력하세요


참고: 뒤에 공백이 있어야 합니다. . 공백이 없으면 오류가 보고됩니다.

계속 다음으로 프로젝트를 빌드하고 실제 필요에 따라 다른 도구 패키지를 생성할 수 있습니다. dao 레이어 인터페이스. Pojo: 엔터티 클래스를 저장하는 데 사용됩니다. 서비스: 서비스 레이어 인터페이스와 서비스 레이어 구현 클래스를 저장하는 데 사용됩니다.

web: 컨트롤러 제어 레이어를 저장하는 데 사용됩니다.

다음으로 코드 작성을 시작합니다.

SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법먼저 엔터티입니다. 오늘은 두 개의 테이블에 대한 간단한 추가, 삭제 및 수정을 해보겠습니다. Check

package com.baqn.springboot.pojo;
import lombok.Data;
@Data
public class Clubs {
    private int cid;
    private String cname;
    private String city;
}
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;
}

@Data 주석을 사용하면 엔터티 클래스의 코드 양을 효과적으로 줄여 get/set 및 toString

의 작성을 줄일 수 있습니다. layer

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);
}

@mapper를 사용한 후에는 스프링 구성에서 스캐닝을 설정할 필요가 없습니다. 주소는 mapper.xml의 네임스페이스 속성을 통해 해당 매퍼 클래스에 해당합니다. Spring은 이를 동적으로 Bean을 생성하여 Servicelmpl에 주입합니다.

그런 다음 서비스 레이어

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);
}
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);
    }
}

마지막으로 웹 레이어의 컨트롤러 제어 클래스

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;
    }
}

참고: a1 방법은 페이지로 점프하는 데만 사용되며 더 나은 점프 방법이 있는 경우 다른 효과가 없습니다. 메시지를 남겨주세요

이제 준비가 완료되었으므로 SQL 문 작성을 시작할 수 있습니다

mapper.xml은 아래 리소스나 위의 매퍼 레이어에 작성할 수 있습니다

위에서 작성했다면 작성해야 합니다. pom의 리소스 필터 관심이 있으시면 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>

로 이동하세요. 참고: 매퍼의 ID는 다음과 같습니다

홈페이지 index.html

<html>
<head>
    <title>Title</title>
</head>
<body>
<div align="center">
    <table border="1">
        <h2>美国职业篮球联盟(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>

새 페이지 add.html

<!DOCTYPE html>
<html>
      <head>
      <title>Title</title>
</head>
<body>
<div align="center">
  <h4 align="center">新增球员</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>

페이지 수정 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>修改球员信息</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>

데이터베이스 생성 소스 코드 - 참고: 저는 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)

마지막으로 페이지를 보여드리겠습니다. Display

주소 표시줄에 입력하세요: http://localhost:8888/findAll 모든 쿼리를 입력하세요 idnex.html로 이동하여 표시하세요

추가를 클릭하여 새 페이지로 이동하세요

매개변수 입력

추가가 성공한 후 저장을 클릭하세요. idnex.html로 이동하여 데이터를 표시하세요.

SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법프런트 엔드 데이터 표시 화면이 추가되었습니다.

수정을 클릭하여 findById 메서드에 따라 데이터를 찾은 후 update.htnl 페이지로 이동하여 표시합니다. 팀을 Wizards로 이동하고 저장

SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법을 클릭하여 index.html 페이지로 이동하면 데이터가 성공적으로 수정되었습니다

위 내용은 SpringBoot가 Mybatis와 thymleft를 통합하여 추가, 삭제, 수정 및 확인 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제