溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Spring boot+Mysql+Spring data JPA一個Web的Demo

發(fā)布時間:2020-07-19 07:26:03 來源:網(wǎng)絡(luò) 閱讀:269 作者:2578612215 欄目:編程語言

1.概述

因為要用spring boot,最近剛剛學(xué)習(xí).這是一個web項目的配合mysq+Hibernate+tomcat的簡單示例demo,很容易在此基礎(chǔ)上擴展成自己的項目.

2.創(chuàng)建初始spring demo

作者用的IDE是IDEA,新建一個工程,選擇Spring Initalizer.
Spring boot+Mysql+Spring data JPA一個Web的Demo
下一步的話由于作者需要部署到服務(wù)器上面,選擇了war.不需要的話可以選擇jar.
Spring boot+Mysql+Spring data JPA一個Web的Demo
選擇spring web+spring Data JPA+Mysql Driver.
Spring boot+Mysql+Spring data JPA一個Web的Demo

Spring boot+Mysql+Spring data JPA一個Web的Demo

Spring boot+Mysql+Spring data JPA一個Web的Demo
然后完成即可,首次運行的話配置依賴需要一點時間,請耐心等待.

3.配置數(shù)據(jù)源

配置數(shù)據(jù)源分為兩部分,一部分是建表與建用戶,另一部分是在application.properties中配置的.

(1)建庫

create database test;

注意這里不用創(chuàng)建表了,因為Hibernate從實體類自動創(chuàng)建一個同名的表.

(2)建用戶

create user 'db'@'%' identified by 'xxxxx';

(3)用戶授權(quán)

grant all on test.* to 'db'@'%';

這里建議授權(quán)all,因為后面Hibernate會用到建表權(quán)限,不能僅僅授權(quán)增刪查改.

(4)配置application.properties

配置四個屬性:

spring.jpa.hibernate.ddl-auto=
spring.datasource.url=
spring.datasource.username=
spring.datasource.password=

第一個屬性是可以取值

  • none
  • update
  • create
  • create-drop

a.none

none是對mysql的默認值,不會改變數(shù)據(jù)庫結(jié)構(gòu).

b.update

Hibernate會根據(jù)給出的實體類去改變數(shù)據(jù)庫.

c.create

創(chuàng)建數(shù)據(jù)庫但是不會在關(guān)閉的時候刪除.

d.create-drop

創(chuàng)建數(shù)據(jù)庫,當(dāng)SessionFactory關(guān)閉時刪除數(shù)據(jù)庫.這個是對H2與其他嵌入式數(shù)據(jù)庫的默認選項.

第一次運行時必須設(shè)置為update或create,因為還不知道確切的實體類,第一次運行后,可以設(shè)置為update或none.
url的話對于mysql來說是

jdbc:mysql://ip:3306/database

剩下的兩個為用戶名與密碼.
以下是作者的配置,供參考:
Spring boot+Mysql+Spring data JPA一個Web的Demo

4.創(chuàng)建實體類

這里創(chuàng)建一個簡單的User實體類,需要用到j(luò)avax中的Entity,Id,GeneratedValue與GenerationType注解.
Entity用于標識實體類,Id用于標識主鍵,GeneratedValue與GenerationType用于配置主鍵.

package com.test;

import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

@Entity
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

除了主鍵之外,可以加上自己想要的屬性,還有setter與getter,Hibernate會自動將實體類制作成一個數(shù)據(jù)表.

5.創(chuàng)建Repository

創(chuàng)建倉庫保存用戶記錄.需要繼承CrudRepository<T,ID>,第一個類型為實體類,第二個類型為主鍵類型.

package com.test;

import org.springframework.data.repository.CrudRepository;

public interface UserRepository extends CrudRepository<User,Integer>
{
}

6.創(chuàng)建控制器

控制器用于控制Http請求,在控制器中可以配置不同的路徑實現(xiàn)不同的操作.

package com.test;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@Controller
@RequestMapping(path = "/demo")
public class MainController {
    @Autowired
    private UserRepository userRepository;

    @PostMapping(path = "/add")
    public @ResponseBody String addNewUser(@RequestParam String name)
    {
        User user = new User();
        user.setName(name);
        userRepository.save(user);
        return "Saved.";
    }

    @GetMapping(path = "/all")
    public @ResponseBody Iterable<User> getAllUsers()
    {
        return userRepository.findAll();
    }
}

@RequestMapping中的值表示url以此值開頭.@PostMapping是僅處理post請求的路徑.
br/>@PostMapping是僅處理post請求的路徑.
br/>@RequestParam表示一個從get或post中獲取的參數(shù).

7.IDE上測試

首先輸入

localhost:8080/demo/all

由于作者先前已經(jīng)有一行數(shù)據(jù)所以有顯示.
Spring boot+Mysql+Spring data JPA一個Web的Demo
否則的話應(yīng)該顯示為[]
接下來可以添加數(shù)據(jù):

curl localhost:8080/demo/add -d name=123

回應(yīng):
Spring boot+Mysql+Spring data JPA一個Web的Demo
接下來可以選擇再次查看:
Spring boot+Mysql+Spring data JPA一個Web的Demo
在看看數(shù)據(jù)庫:
Spring boot+Mysql+Spring data JPA一個Web的Demo

8.打包發(fā)布

Build->Build Artifacts.
Spring boot+Mysql+Spring data JPA一個Web的Demo
Spring boot+Mysql+Spring data JPA一個Web的Demo
Build即可.
然后會在項目目錄的target下有一個test-0.0.1-xxx的war文件,就是這個了.
Spring boot+Mysql+Spring data JPA一個Web的Demo
改名字放到tomcat的webapps/下,比如作者改成了demo.war:
Spring boot+Mysql+Spring data JPA一個Web的Demo
然后可以去訪問了,注意路徑,這里的路徑是war的路徑再加上@RequestMapping中的路徑再加上 @PostMapping或 @GetMapping路徑:
Spring boot+Mysql+Spring data JPA一個Web的Demo
完成!

9.完整代碼

  • github
  • 碼云
向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI