初識SpringBoot-用IDEA創建工程

初識SpringBoot-用IDEA創建工程

開發環境:

  • Win10
  • MySQL8.0
  • IDEA 2019.2.4
  • SpringBoot 2.2.6

本文概要:

  • 用IDEA創建SpringBoot工程
  • Win10安裝MySQL8.0
  • 工程連接數據庫

前言:

爲什麼要寫這篇文章呢?作爲一名Android開發,在剛入門SpringBoot的時候遇到了很多的障礙,哪怕只是新建項目這麼一個簡單的步驟,往往也會遇到很多問題,這些問題通常只能通過百度/谷歌來獲得答案,但是這些時間我覺得是很低效的。想想在Android開發裏面,只要一個AndroidStudio,就能幫你配置好所有需要的開發環境,包括IDE, Android SDK,Gradle插件,Android模擬器等等。而在我創建SpringBoot項目並且嘗試連接到數據庫並最終把項目跑起來的這個過程中,我需要安裝JDK,IDEA,MySQL,Maven。所謂萬事開頭難在這裏真是體現得淋漓盡致。所以最後,我就想把這些步驟寫成文章以記錄,方便日後查看。同時希望能夠給同樣是剛入門的童鞋們一點幫助。

安裝開發環境

首先確保電腦已經安裝好了以下幾個必備項:

  • JDK 1.8 +
  • IDEA

由於Linux,Mac,Win10的安裝方式都不同,而且這兩項都比較簡單,因此這裏只作提示,具體步驟自行百度。

安裝MySQL8.0

因爲後面連接數據庫的時候我們也要用到MySQL,因此就先裝好,這裏以Win10爲例。

第一步:下載安裝MySQL

打開網站:https://dev.mysql.com/downloads/installer/ 進行下載

下載的時候注意選擇64位,也就是第二個體積比較大的選項

現在Oracle需要登錄才能下載,也可以選擇不登錄進行下載,點擊下面藍色小字

由於MySQL提供的是zip文件,我們只要把它解壓到希望安裝的目錄下就可以了。

我的目錄爲默認路徑:

C:\Program Files\MySQL\MySQL Server 8.0

然後用管理員身份打開cmd或者powershell,我們要開始配置MySQL了

第二步:配置MySQL

在我們打開的命令行窗口中(注意是管理員身份),輸入 cd C:\Program Files\MySQL\MySQL Server 8.0\bin進入bin目錄,這裏大家自行更換爲自己的安裝目錄。

然後輸入:mysqld -install 命令,正常來說是成功了,如果出現下面這段話,那麼就用管理員身份重新打開:

在這裏插入圖片描述

接着還要再輸入一個命令,那就是 mysqld --initialize,結束了這一步之後,會在MySQL的安裝目錄下多出一個data文件夾,裏面有一個.err後綴名的文件,這個文件裏面會有MySQL生成的初始密碼,後面我們需要通過這個密碼來登錄MySQL

最後,MySQL要做的事情已經差不多了,我們還需要在MySQL安裝目錄下創建一個my.ini的文件,用來存放一些必要的配置。

[mysqld]

# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M

# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin

# These are commonly set, remove the # and set as required.
basedir = "C:\Program Files\MySQL\MySQL Server 8.0"
datadir = "C:\Program Files\MySQL\MySQL Server 8.0\Data"
character-set-server = utf8
port = 3306

這個文件設置了MySQL的默認路徑和數據存放路徑,當然還有字符格式和端口。同樣別忘了把路徑換成自己的。

OK,這裏MySQL的安裝+配置就差不多了。我們啓動MySQL試試,在命令行窗口輸入: net start mysql

如無意外,大家應該可以看到

MySQL服務正在啓動

MySQL服務已經啓動成功

那麼MySQL這一塊的開發環境就算是配置好了。接下來是一些常用的操作,大家有興趣可以看看

登錄MySQL: mysql -u root -p

輸入在.err文件中的密碼

由於.err中的密碼是隨機的,也很難記住,因此我們可以修改爲自己想要的密碼

修改MySQL密碼:SET PASSWORD = ‘xxx’(這裏的xxx就是新密碼)

回車後輸入原密碼,即可修改

創建SpringBoot項目

第一部分開發環境如果順利,那麼我們電腦上應該已經包括以下環境:

  • JDK
  • IDEA
  • MySQL

接下來我們就用IDEA來創建SpringBoot項目

打開IDEA, 選擇 new -> project,看到如圖
在這裏插入圖片描述

選擇Spring initializr,右邊選擇SDK的版本,我們這裏用1.8爲例,下面用的是Spring官方提供的生成服務。

我們點擊Next:

在這裏插入圖片描述

裏面Group和Artifact是自己填寫的,其他可以保持不變,填寫完成之後Next:

在這裏插入圖片描述

我們選擇了Web裏面的Spring Web和SQL的MySQL,這兩個是必須的,然後點解NEXT:

最後一步就是選擇項目路徑,這裏就不貼圖了。最後點擊Finish就成功創建SpringBoot項目了!

運行SpringBoot項目

我們已經成功創建了一個SpringBoot項目,接下來看看怎麼能夠把這個項目跑起來。首先一個新項目的目錄是這樣的:

在這裏插入圖片描述

主要的代碼在src/main/java/下面,然後通過pom.xml來管理整個項目的配置。

我們找到SpringbootApplcation文件並打開,看到左邊有個綠色的箭頭,點擊 run 就可以跑起來了~ 是不是很神奇?

創建項目數據庫

登錄數據庫: mysql -u root -p

創建數據庫:

DROP DATABASE IF EXISTS sampledb;

CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8;

USE sampledb;

我們在這裏創建了一個名爲:sampledb的數據庫,並且制定編碼爲utf8

連接到數據庫

既然準備工作已就緒,接下就進入最激動人心的環節了,那就是寫!代!碼!

添加依賴

首先就像Android開發,如果你想使用某個第三方庫,那麼你需要在build.gradle裏面添加依賴。Springboot也是同理,只不過由於我們用的是Maven來管理,因此我們需要在pom.xml裏面添加依賴:

		<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>

加入jpa和mysql這兩個包的依賴,然後reimport一下就能自動下載依賴(在IDEA右邊有個Maven選項卡,然後第一個按鈕就是reimport了)

配置application.properties

然後就到數據庫的配置工作了,我們找到resources/application.properties文件:

spring.jpa.hibernate.ddl-auto=update
spring.datasource.url=jdbc:mysql://localhost:3306/sampledb?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect

注意url後面需要加上timezone,否則在連接的時候會報錯,用戶名密碼則需要改成自己之前設置的

接下來是我們的實體類:User
@Entity
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private int userId;
    private String userName;
    private String password;
    private int credits;
    private String lastIp;
    private Date lastVisit;
	
    // 省略get,set方法
}

我們通過@Entity註解,標記這是一個實體,對應就是數據庫中的一個表結構。

接下來是倉庫:UserRepository

這個類主要是封裝了CRUD的操作

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

繼承CrudRepository接口,我們進去看看源碼:

@NoRepositoryBean
public interface CrudRepository<T, ID> extends Repository<T, ID> {
    <S extends T> S save(S var1);

    <S extends T> Iterable<S> saveAll(Iterable<S> var1);

    Optional<T> findById(ID var1);

    boolean existsById(ID var1);

    Iterable<T> findAll();

    Iterable<T> findAllById(Iterable<ID> var1);

    long count();

    void deleteById(ID var1);

    void delete(T var1);

    void deleteAll(Iterable<? extends T> var1);

    void deleteAll();
}

提供了像save,saveAll,findAll等等用於操作數據庫的方法。

創建MainController

然後就是我們的Controller了:

@Controller
@RequestMapping("/user")
public class MainController {
    @Autowired
    private UserReposito    private UserRepository userRepository;
ry userRepository;

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

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

}

首先添加@Controller註解和@RequestMapping註解,然後把UserRepository 用@Autowired註解標識,最後add和get方法上加了@PostMapping和@GetMapping註解,這裏有很多註解,我們一個個來講

  • @Controller: 把這個類標識爲控制器

  • @RequestMapping:表示這個URL在Application URL後以 /user開頭,例如 : localhost:8080/user

  • @Autowired:表示Spring會自動幫我們實現UserRepository這個類,記得嗎,這是個接口,我們本來是需要自己去實現裏面的方法的,加了這個註解之後就不用了,Spring會幫我們做完這些工作,我們可以直接使用userRepository.xxx()

  • @PostMapping:類似上面的Request,表示這個Post請求的路徑

  • @GetMapping:類似Post,表示這個Get請求的路徑

  • @ResponseBody:表示Post請求的響應體是String類型

  • @RequestParam:表示這個參數同時也是請求的參數

最後我們找到Application,默認Springboot生成的是:SpringbootApplication,運行程序!

如無意外我們應該能看到程序運行在: localhost:8080,接着我們來測試接口

測試接口

在終端輸入:

curl localhost:8080/user/add -d name=123 -d password=456

然後能看到結果:

Saved

說明保存成功了

然後再輸入

curl localhost:8080/user/all

看到以下的結果說明獲取數據接口也OK了:

在這裏插入圖片描述

到現在爲止,我們就基本上完成了Springboot入門的第一步了,最後再來總結一下:

  • 安裝必備的開發環境,包括JDK, IDEA, MySQL
  • 創建一個Springboot項目
  • 配置MySQL並且通過Springboot項目連接到MySQL
  • 實現add和getAll這兩個接口

常見問題

Maven下載過慢

在項目右鍵選中Maven,點擊 create settings.xml 選項,然後複製代碼:

<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <mirrors>
        <!-- mirror
         | Specifies a repository mirror site to use instead of a given repository. The repository that
         | this mirror serves has an ID that matches the mirrorOf element of this mirror. IDs are used
         | for inheritance and direct lookup purposes, and must be unique across the set of mirrors.
         |
        <mirror>
          <id>mirrorId</id>
          <mirrorOf>repositoryId</mirrorOf>
          <name>Human Readable Name for this Mirror.</name>
          <url>http://my.repository.com/repo/path</url>
        </mirror>
         -->
 
        <mirror>
            <id>alimaven</id>
            <name>aliyun maven</name>
            <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
 
        <mirror>
            <id>uk</id>
            <mirrorOf>central</mirrorOf>
            <name>Human Readable Name for this Mirror.</name>
            <url>http://uk.maven.org/maven2/</url>
        </mirror>
 
        <mirror>
            <id>CN</id>
            <name>OSChina Central</name>
            <url>http://maven.oschina.net/content/groups/public/</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
 
        <mirror>
            <id>nexus</id>
            <name>internal nexus repository</name>
            <url>http://repo.maven.apache.org/maven2</url>
            <mirrorOf>central</mirrorOf>
        </mirror>
 
    </mirrors>
</settings>

總結

在這過程中其實還有遇到一些其他的問題,包括MySQL選擇哪個GUI工具,如何連接並編寫SQL語句,還有Maven包下載速度過慢,修改setting.xml也無效,甚至Springboot添加mysql依賴會報錯等等,這些小細節都可以通過百度/谷歌找到答案,我這裏就不一一細說了。

作爲剛開始接觸後端開發的新手,希望這篇文章能把我入門第一步清晰展現出來,所謂萬事開頭難,現在回頭看覺得很簡單的事情,花了我半天的時間纔算是大概搞清楚。

後面我還會繼續更新這個系列的文章,權當是自己學習經歷的記錄,如果能對大家有所幫助就更好了。

謝謝大家的閱讀,也歡迎大家多交流~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章