SpringBoot第三篇:IDEA開發SpringBoot項目配置H2數據庫,並集成Mybatis(詳細)

前言:

       首先看一看H2數據庫的優缺點

       H2:

         優點
              1、h2採用純Java編寫,因此不受平臺的限制。
    2、h2只有一個jar文件,十分適合作爲嵌入式數據庫使用,能跟着項目一起移植。
    3、h2提供了一個十分方便的web控制檯用於操作和管理數據庫內容。

          缺點:不適合大數據量高併發的操作;使用Big Long效率差;

所以由於h2在開發時便捷的優勢,我們可以用h2數據庫作爲開發時的測試數據庫。等到正式部署的時候,切換成mysql數據庫就好了。

一、先去maven倉庫找到h2的maven依賴,並加入到項目的pom文件中

地址:https://mvnrepository.com/artifact/com.h2database/h2

選擇版本的話看自己需求,一般是最新的springboot就配最新的h2.

<!-- https://mvnrepository.com/artifact/com.h2database/h2 -->
<dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <version>1.4.200</version>
</dependency>

二、加載h2的驅動依賴後,在IDEA中創建h2數據庫

在創建h2數據庫之前,先去設置項目的跟目錄,否則就會在測試h2數據庫連接的時候報錯: 

[90011][90011] A file path that is implicitly relative to the current working directory is not allowed in the database URL "jdbc:h2:~/data/h2OfDacu;MV_STORE=false". Use an absolute path, ~/name, ./name, or the baseDir setting instead. [90011-200]. 

解決方案如下:

1.找到IDEA項目左上角的Edit configurations,點擊進入

2.找到如下圖的選項,並確認修改

設置完成後,最好重啓IDEA。在進行下面的操作!!!

在IDEA的左側。有一個Database選型,如下圖;

點開後,點擊+號添加h2數據庫

三、配置h2數據庫

首先在彈出來的h2數據庫連接屬性面板中,找到connection type,默認是remote,修改爲embedded,表示嵌模式(Embedded Mode) ,這樣應用和數據庫同在一個JVM中,通過JDBC進行連接。

修改後的面板變成如下:記得在這裏配置user:sa password:123

如果出現successful就ok了

四、在IDEA中創建表格,添加數據

找到數據庫下面的PUBLIC,右鍵,new->table

   

填寫表名和字段      

  

id可以設置爲自增長和主鍵

創建一個user表

 

2. 往數據庫中添加數據

五、集成Mybatis

1.將spring boot mybatis的依賴添加到pom文件中

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.1</version>
</dependency>

2. 配置datasource。由於我們沒有用一些其他開源的數據庫連接池,例如阿里巴巴的druil,DBCP,c3p0,而是直接用Springboot2.0版的默認數據庫連接池HikariCP----這是一個性能很好的高性能併發數據庫連接池,一般來說夠用了。

首先將spring boot官方的jdbc依賴加入pom文件中

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

所以我們只需要通過application.properties來配置連接我們h2數據庫即可。寫入如下代碼:

spring.datasource.url=jdbc:h2:~/dacu  //這是寫你自己的路徑
spring.datasource.username=sa    //默認用戶名
spring.datasource.password=123    //這裏可以寫你自己的密碼
spring.datasource.driver-class-name=org.h2.Driver

到這一步,已經成功集成mybatis了,現在我們用代碼測試一下吧

六、測試數據增刪查改

1.新建一個mapper包專門用來與數據庫交互,新建一個model包用來封裝對象,接收查詢到數據庫的數據

2.在mapper中建一個接口java類UserMapper,代碼如下:

package com.zt.dacu.mapper;

import com.zt.dacu.model.User;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

@Mapper
public interface UserMapper {
    //定義一個查詢語句
    //這裏查詢語句的使用規則推薦去系統學一下,如果拿來即用就看教程
    @Select("select * from user where id = #{id}")
    User selectUserById(@Param("id") String id);
}

3.model中定一個user類,代碼如下:

package com.zt.dacu.model;

public class User {
    //這裏要跟數據庫字段一致
    private Integer id;
    private String name;
    private String email;
    private String token;
    private Long createTime;
    private Long lastLoginTime;

    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;
    }

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public Long getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Long createTime) {
        this.createTime = createTime;
    }

    public Long getLastLoginTime() {
        return lastLoginTime;
    }

    public void setLastLoginTime(Long lastLoginTime) {
        this.lastLoginTime = lastLoginTime;
    }
}

4.在IndexControll中,注入usermapper,調用mapper方法查詢數據庫。

package com.zt.dacu.controller;

import com.zt.dacu.mapper.UserMapper;
import com.zt.dacu.model.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;

@Controller
public class IndexController {

    @Autowired(required = false)
    private UserMapper userMapper;

    @GetMapping("/home")
    public String  index(@RequestParam(name="id") String id, Model model){
        User user = userMapper.selectUserById(id);
        model.addAttribute(user);
        return "index";
    }
}

5.在你的index.html,直接通過user獲取name,這裏使用的thymeleaf展示數據,因爲我在SpringBoot第一篇:利用idea快速搭建一個項目已經配置好了。

<a href="#" class="btn btn-outlined" th:if="${user != null}"><span th:text="${user.name}"></span></a>

 

okok,經歷了那麼多,總算到了展示的時候。運行項目,訪問http://localhost:8866/home?id=1,這樣通過id查詢數據庫id爲1的name了。

效果如下:

 

謝天謝地,總算實現一整套流程了,不懂得可以留言問我,同樣,如果大佬看到我又不對的地方,歡迎批評指正。

對了,過程中還出現了一些問題,特別是關於H2數據庫連接的問題。下一篇文章我將遇到的問題寫在下一篇文章中,給大家遇到類似的問題提供思路。

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