亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot + Mybatis增刪改查實戰(zhàn)記錄

 更新時間:2019年05月27日 09:13:27   作者:林靜生寒  
這篇文章主要給大家介紹了關(guān)于SpringBoot + Mybatis增刪改查的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧

簡介

SpringBoot和Mybatis是啥請自行百度,作者這里也是花了幾天時間入門了這個框架用來完成任務(wù),并且也算符合要求的完成了任務(wù),期間也各種百度但是沒找到自己想要的那種簡單易懂的教程,所以踩了很多坑,寫這個博客的目的就是為了讓大家少踩一點坑,開始。

創(chuàng)建一個SpringBoot項目https://start.spring.io/

點開這個網(wǎng)站,創(chuàng)建一個Springboot項目,如下圖,這里用的是2.1.5,學(xué)技術(shù)嘛,就是要學(xué)新的。


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

  1. Web 我們這次開發(fā)的是web應(yīng)用所以選擇web
  2. Thymeleaf 一款模板引擎,能夠比較方便的展現(xiàn)后臺傳來的數(shù)據(jù)
  3. MySQL 我們這次使用Mysql數(shù)據(jù)庫
  4. JDBC Java 數(shù)據(jù)庫連接 Java Database Connectivity,簡稱JDBC
  5. MyBatis 請看第一段


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

打開這個項目

這里使用的是IDEA,別的啥也行比如eclipse,這里只講解IDEA的操作,安裝破解IDEA百度一大堆,安裝好之后打開IDEA(發(fā)現(xiàn)IDEA有個問題,有的時候自動import包好用,有的時候不好用,坑?。缓筮x擇左上角的File->Open,找到你剛剛解壓的項目文件里的pom.xml點擊ok如下圖

目錄結(jié)構(gòu)

增加修改目錄結(jié)構(gòu)為下圖

開始編寫

這里我們就編寫一個人員信息的增刪改查

配置數(shù)據(jù)庫數(shù)據(jù)庫創(chuàng)建

打開mysql數(shù)據(jù)庫創(chuàng)建一個叫test的數(shù)據(jù)庫之后創(chuàng)建person表,這里使用的是Navicat百度有破解版,會命令用命令行也行,如下圖,記得設(shè)置主鍵自增,然后隨便加幾個數(shù)據(jù)以便之后查詢。

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.java

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.java

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

  /*
  根據(jù)ID查詢
  {id} 要查詢?nèi)藛T的 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" >
<!-- 這里填寫對應(yīng)的Dao文件所在的路徑 -->
<mapper namespace="com.ljsh.test.dao.PersonDao"  >
  <!-- 填寫數(shù)據(jù)庫里實例Person對應(yīng)的表的表名 -->
  <!-- 這里是作為一個變量使用 -->
  <sql id="table">person</sql>

  <!-- id屬性填寫Dao文件里的函數(shù)名稱 xxType是參數(shù)或是結(jié)果的類型根據(jù)情況填寫 -->
  <!-- 查詢所有  -->
  <select id="getAll" resultType="com.ljsh.test.model.Person">
    SELECT
    *
    FROM
    <include refid="table" />
  </select>


  <!-- 根據(jù)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之間作為服務(wù)層進(jìn)行一些邏輯處理,
    這里邏輯太簡單所以知識單純調(diào)用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;

  // 設(shè)置訪問路由值為路徑
  @RequestMapping("/")
  public ModelAndView index(){
    // 顧名思義 實體和數(shù)據(jù) 同時返回頁面模板和數(shù)據(jù)
    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>

右上角運行


要是沒有這個可以右側(cè)選擇TestApplication右鍵Run,結(jié)果圖如下

未完待續(xù)

熄燈睡覺了,寫的有點慢,刪改查還沒來及寫,如果需求留言,我會繼續(xù)更新。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,謝謝大家對腳本之家的支持。

相關(guān)文章

  • SpringDataJPA原生sql查詢方式的封裝操作

    SpringDataJPA原生sql查詢方式的封裝操作

    這篇文章主要介紹了SpringDataJPA原生sql查詢方式的封裝操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊)

    mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊)

    這篇文章主要介紹了mybatis注解動態(tài)sql注入map和list方式(防sql注入攻擊),具有很好的參考價值,希望對大家有所幫助。
    2021-11-11
  • java關(guān)鍵字final用法知識點

    java關(guān)鍵字final用法知識點

    在本篇文章里小編給大家分享的是關(guān)于java關(guān)鍵字final用法知識點以及相關(guān)實例內(nèi)容,有需要的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • Java觀察者模式之實現(xiàn)對象間的一對多依賴

    Java觀察者模式之實現(xiàn)對象間的一對多依賴

    這篇文章主要介紹了Java觀察者模式之實現(xiàn)對象間的一對多依賴的方法,Java觀察者模式是一種行為型設(shè)計模式,用于實現(xiàn)對象之間的消息傳遞和通信,文中有詳細(xì)的實現(xiàn)步驟和代碼示例,,需要的朋友可以參考下
    2023-05-05
  • Java實現(xiàn)文件壓縮與解壓的示例[zip格式,gzip格式]

    Java實現(xiàn)文件壓縮與解壓的示例[zip格式,gzip格式]

    本篇文章主要介紹了Java實現(xiàn)文件壓縮與解壓的示例[zip格式,gzip格式],具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-01-01
  • 基于Spring中各個jar包的作用及依賴(詳解)

    基于Spring中各個jar包的作用及依賴(詳解)

    下面小編就為大家?guī)硪黄赟pring中各個jar包的作用及依賴(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • 模擬簡單Java線程池的方法詳解

    模擬簡單Java線程池的方法詳解

    這篇文章主要為大家詳細(xì)介紹了模擬簡單Java線程池的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • Alibaba?SpringCloud集成Nacos、openFeign實現(xiàn)負(fù)載均衡的解決方案

    Alibaba?SpringCloud集成Nacos、openFeign實現(xiàn)負(fù)載均衡的解決方案

    Spring?Cloud?Alibaba?致力于提供微服務(wù)開發(fā)的一站式解決方案,此項目包含開發(fā)分布式應(yīng)用微服務(wù)的必需組件,這篇文章主要介紹了Alibaba?SpringCloud集成Nacos、openFeign實現(xiàn)負(fù)載均衡,需要的朋友可以參考下
    2024-05-05
  • SpringBoot整合Swagger2的步驟詳解

    SpringBoot整合Swagger2的步驟詳解

    這篇文章主要介紹了SpringBoot整合Swagger2的步驟詳解,幫助大家更好的理解和學(xué)習(xí)使用SpringBoot框架,感興趣的朋友可以了解下
    2021-04-04
  • 分析設(shè)計模式之模板方法Java實現(xiàn)

    分析設(shè)計模式之模板方法Java實現(xiàn)

    所謂模板方法模式,就是一個對模板的應(yīng)用,就好比老師出試卷,每個人的試卷都是一樣的,這個原版試卷就是一個模板,可每個人寫在試卷上的答案都是不一樣的,這就是模板方法模式。它的主要用途在于將不變的行為從子類搬到超類,去除了子類中的重復(fù)代碼
    2021-06-06

最新評論