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数据库连接的问题。下一篇文章我将遇到的问题写在下一篇文章中,给大家遇到类似的问题提供思路。

  • 7
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值