Rumah >Java >javaTutorial >Bagaimana SpringBoot mengintegrasikan Mybatis dan thymleft untuk melaksanakan fungsi tambah, padam, ubah suai dan semak
Mula-mula kami mencipta projek Nota: Apabila mencipta projek SpringBoot, anda mesti disambungkan ke Internet jika tidak, ralat akan dilaporkan
<.>
Selepas projek dibuat, kami mula-mula Menyusun aplikasi.yml#Nyatakan nombor portNota: Mesti ada ruang selepas: Ini adalah sintaksnya Jika tiada ruang, operasi akan melaporkan ralat Seterusnya, kami akan membina projek. dan buat pakej berikut. Anda boleh membuat pakej alat lain mengikut keperluan sebenar anda pemeta: digunakan untuk menyimpan antara muka lapisan dao pojo: digunakan untuk menyimpan kelas entiti perkhidmatan: digunakan untuk menyimpan antara muka lapisan perkhidmatan dan kelas pelaksanaan lapisan perkhidmatan web: digunakan untuk menyimpan lapisan kawalan pengawal Seterusnya kita mula menulis kod Pertama ialah kelas entiti, hari ini kami melakukan satu penambahan ringkas, pemadaman, pengubahsuaian dan pertanyaan dua jadualpelayan:
port: 8888
#Configure mysql data source
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306 /nba?serverTimezone=Asia/Shanghai
nama pengguna: root
kata laluan: root
#Konfigurasikan enjin templat thymeleaf
thymeleaf:
mod: HTML5
cache: palsu
akhiran: .html
awalan: classpath:/templates /
mybatis:
mapper-locations: classpath:/mapper/*.xml
type-aliases-package: com.bdqn.springboot #Letakkan pakej nama
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; }Menggunakan anotasi @Data boleh mengurangkan jumlah kod dalam entiti dengan berkesan kelas, mengurangkan penulisan get/set dan toStringKemudian lapisan pemeta
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); }Selepas menggunakan @mapper, tidak perlu menetapkan alamat pengimbasan dalam konfigurasi spring dalam mapper.xml sepadan dengan kelas pemeta yang berkaitan, dan musim bunga akan menjana kacang secara dinamik dan menyuntiknya ke dalam Servicelmpl. Kemudian lapisan perkhidmatan
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); } }Akhirnya kelas kawalan pengawal lapisan 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; } }Nota: Kaedah a1 hanya digunakan untuk melompat ke halaman dan tidak mempunyai yang lain kesan. Jika anda mempunyai kaedah lompat yang lebih baik, sila tinggalkan saya mesejSekarang persiapan selesai, anda boleh mula menulis pernyataan SQLmapper.xml boleh ditulis dalam sumber di bawah atau di Dalam lapisan mapper di atas jika ia ditulis di atas, anda perlu menulis penapis sumber di pom Jika anda berminat, anda boleh pergi ke 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>Nota: id yang sepadan dalam mapper.xml Ia adalah kaedah antara muka lapisan pemeta Anda tidak boleh menulisnya dengan salahSehingga kini kod bahagian belakang kami telah dilengkapkan sepenuhnya Halaman utama 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="@{'/findById/'+${list.pid}}" rel="external nofollow" >修改</a> <a th:href="@{'/delete/'+${list.pid}}" rel="external nofollow" >删除</a> </td> </tr> </c:forEach> </table> </div> </body> </html>Tambah halaman baharu.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>Ubah suai kemas kini halaman.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>Kod sumber penciptaan pangkalan data--Nota: I saya menggunakan pangkalan data 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,'热火队','迈阿密'), (2,'奇才队','华盛顿'), (3,'魔术队','奥兰多'), (4,'山猫队','夏洛特'), (5,'老鹰队','亚特兰大') insert into players values (4,'多多','1989-08-08',213,186,'前锋',1), (5,'西西','1987-10-16',199,162,'中锋',1), (6,'南南','1990-01-23',221,184,'后锋',1)Akhir sekali untuk semua orang melihat Halaman berikut dipaparkanMasukkan dalam bar alamat: http://localhost:8888/findAll Masukkan semua kaedah pertanyaan dan lompat ke idnex .html untuk paparan Klik Tambah untuk melompat ke halaman baharuMasukkan parameter Kemudian klik Simpan dan lompat ke idnex.html selepas penambahan berjaya dan paparkan data Permukaan paparan data bahagian hadapan berjaya ditambahkanKlik ke ubah suai untuk mencari data mengikut kaedah findById, dan lompat ke halaman update.html untuk paparan Kami menukar pasukan kepada Wizards dan klik simpan Lompat ke halaman index.html dan data berjaya diubah suai
Atas ialah kandungan terperinci Bagaimana SpringBoot mengintegrasikan Mybatis dan thymleft untuk melaksanakan fungsi tambah, padam, ubah suai dan semak. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!