SpringBoot+Mybatis增刪改查實戰

簡介

SpringBoot和Mybatis是啥請自行百度,做者這裏也是花了幾天時間入門了這個框架用來完成任務,而且也算符合要求的完成了任務,期間也各類百度可是沒找到本身想要的那種簡單易懂的教程,因此踩了不少坑,寫這個博客的目的就是爲了讓你們少踩一點坑,開始。html

建立一個SpringBoot項目

https://start.spring.io/

點開這個網站,建立一個Springboot項目,以下圖,這裏用的是2.1.5,學技術嘛,就是要學新的。

選擇依賴,點擊左下角的Dependencies前端

  • Web 咱們此次開發的是web應用因此選擇web
  • Thymeleaf 一款模板引擎,可以比較方便的展示後臺傳來的數據
  • MySQL 咱們此次使用Mysql數據庫
  • JDBC Java 數據庫鏈接 Java Database Connectivity,簡稱JDBC
  • MyBatis 請看第一段


最後點擊左下角的Generate Project,將會開始下載一個以你項目名稱開頭的zip文件,下載完成後解壓到你的工做目錄。java

打開這個項目

這裏使用的是IDEA,別的啥也行好比eclipse,這裏只講解IDEA的操做,安裝破解IDEA百度一大堆,安裝好以後打開IDEA(發現IDEA有個問題,有的時候自動import包好用,有的時候很差用,坑!),而後選擇左上角的File->Open,找到你剛剛解壓的項目文件裏的pom.xml點擊ok以下圖
mysql

目錄結構

增長修改目錄結構爲下圖
web

開始編寫

這裏咱們就編寫一我的員信息的增刪改查spring

配置數據庫

數據庫建立

打開mysql數據庫建立一個叫test的數據庫以後建立person表,這裏使用的是Navicat百度有破解版,會命令用命令行也行,以下圖,記得設置主鍵自增,而後隨便加幾個數據以便以後查詢。
sql

application.yml

路徑:/resources/application.yml數據庫

server:
  port: 8080

spring:
  datasource:
    name:
    url: jdbc:mysql://127.0.0.1:3306/test?useUnicode=true&characterEncoding=UTF-8&allowMultiQueries=true&serverTimezone=UTC
    username: root
    password: root

mybatis:
  mapper-locations: classpath:mapper/*.xml

Person類

路徑/model/Person.javaapache

package com.ljsh.test.model;

public class Person {
    /*
    {id} 自增主鍵
    {name} 人員姓名
    {mobile} 人員電話
     */
    private int id;
    private String name;
    private String mobile;
    
    // 右鍵 Generate -> Setter and Getter -> Shift全選 -> ok 生成以下代碼

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getMobile() {
        return mobile;
    }

    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    
    // 右鍵 Generate -> toString() -> 全選 -> ok 生成以下代碼

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", mobile='" + mobile + '\'' +
                '}';
    }
}

PersonDao

路徑:/dao/PersonDao.javaspringboot

package com.ljsh.test.dao;

import com.ljsh.test.model.Person;
import org.apache.ibatis.annotations.Mapper;
import java.util.List;

@Mapper
public interface PersonDao {
    /*
    查全部
    return List<Person>
     */
    List<Person> getAll();

    /*
    根據ID查詢
    {id} 要查詢人員的 id
     */
    Person getPersonByID(int id);
    
    /*
    刪除
    {id} 要刪除人員的 id
     */
    void delete(int id);

    /*
    更新
    {p} 要更新的Person實例
     */
    void update(Person p);

    /*
    增長
    {p} 要新增的Person實例
     */
    void newp(Person p);
}

PersonDao.xml

路徑:/mapper/PersonDao.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" >
<!-- 這裏填寫對應的Dao文件所在的路徑 -->
<mapper namespace="com.ljsh.test.dao.PersonDao"    >
    <!-- 填寫數據庫裏實例Person對應的表的表名 -->
    <!-- 這裏是做爲一個變量使用 -->
    <sql id="table">person</sql>

    <!-- id屬性填寫Dao文件裏的函數名稱 xxType是參數或是結果的類型根據狀況填寫 -->
    <!-- 查詢全部   -->
    <select id="getAll" resultType="com.ljsh.test.model.Person">
        SELECT
        *
        FROM
        <include refid="table" />
    </select>


    <!-- 根據id查詢 -->
    <select id="getPersonById" resultType="com.ljsh.test.model.Person">
        SELECT
        *
        FROM
        <include refid="table"/>
        WHERE
        id = #{id}
    </select>

    <!-- 增 -->
    <insert id="newp" parameterType="com.ljsh.test.model.Person">
        INSERT INTO
        <include refid="table"/>
        (name,phone)
        VALUES
        (#{name},#{phone})
    </insert>

    <!-- 改 -->
    <update id="update" parameterType="com.ljsh.test.model.Person">
        UPDATE
        <include refid="table"/>
        SET
        <!--<if test="name != null">name = #{name}</if>-->
        name  = #{name},phone = #{phone},status = #{status}
        WHERE
        id = #{id}
    </update>

    <!-- 刪 -->
    <delete id="delete" parameterType="com.ljsh.test.model.Person">
        DELETE FROM
        <include refid="table"/>
        WHERE
        id = #{id}
    </delete>
</mapper>

PersonService

路徑:/service/PersonService.java

package com.ljsh.test.service;
import com.ljsh.test.dao.PersonDao;
import com.ljsh.test.model.Person;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class PersonService {
    @Autowired
    PersonDao personDao;

    /*
        Service層介於controller和dao之間做爲服務層進行一些邏輯處理,
        這裏邏輯太簡單因此知識單純調用dao因此不作註釋
     */
    public List<Person> getAll(){
        return personDao.getAll();
    }

    public Person getPersonByID(int id){
        return personDao.getPersonByID(id);
    }

    public void  delete(int id){
        personDao.delete(id);
    }

    public void update(Person p){
        personDao.update(p);
    }

    public void newp(Person p){
        personDao.newp(p);
    }
}

PersonController

路徑:/controller/PersonController.java

package com.ljsh.test.controller;

import com.ljsh.test.model.Person;
import com.ljsh.test.service.PersonService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import java.util.List;

@Controller
public class PersonController {

    @Autowired
    PersonService personService;

    // 設置訪問路由值爲路徑
    @RequestMapping("/")
    public ModelAndView index(){
        // 顧名思義 實體和數據 同時返回頁面模板和數據
        ModelAndView mav = new ModelAndView("index");
        List<Person> list = personService.getAll();
        mav.addObject("list",list);
        return mav;
    }
}

前端頁面

路徑:/templates/index.html

<!DOCTYPE html>
<html lang="en">
<!-- -->
<!-- 使用thymeleaf需引入 -->
<html xmlns:th="http://www.thymeleaf.org">
<head>
</head>
<body>
<div  id="tableP">
        <table>
            <caption>人員信息</caption>
            <tr>
                <th>Name</th>
                <th>Phone</th>
            </tr>
            <!-- 經過th命令使用一些操做 -->
            <!-- 經過${} 使用變量 -->
            <tr  th:each="item: ${list}">
                <td th:text="${{item.name}}">尚未任何人員信息哦</td>
                <td th:text="${{item.mobile}}">你是否是想獨吞獎品</td>
            </tr>
        </table>
    </div>
</div>
</body>
</html>

右上角運行


要是沒有這個能夠右側選擇TestApplication右鍵Run,結果圖以下

未完待續

熄燈睡覺了,寫的有點慢,刪改查還沒來及寫,若是需求留言,我會繼續更新。

相關文章
相關標籤/搜索