当Spring Boot遇见Mybatis(连接Mysql)

前言

在本文中讲述了Spring Boot 如何整合Mybatis ,然后如何通过Mybaits连接到Mysql,项目是由gradle构建的,本文还讲述了controller层相关的知识。
Spring Boot 在Spring 家族现在混的风生水起,如果不是开发之前的老项目,那么几乎大多数人都在使用Spring Boot。使用的原因虽然有很多,但是归根结底的根本原因只有一个,那就是因为它太易用了,如果你想要创建一个最小的Spring Boot 项目可以看我的前面一篇文章与Spring Boot 初次见面,那么废话不多说,我们开始吧。
在这里首先附上这个项目的百度云 地址链接 密码:5050

准备工作

1.首先我们得需要先准备一个Spring Boot 工程

  1. 我们需要在本地安装上你需要连接的数据库,我这里使用的是Mysql数据库,这里给大家贴出mysql官网下载地址mysql 下载地址
  2. 对于新手来说,有可能通过命令行去使用数据库,太强人所难,我自己是使用 navicat这个工具进行连接的,下面给出navicat地址大家可以自行下载navicat 下载地址

正文

首先我们需要引入我们需要的mybatis相关的依赖。

这里多说一点,给大家推荐 maven repository 这个网站,无论你是使用maven或者是gradle进行构建的,你都可以在上面找到你要依赖的具体地址。

在build.gradle 中我们添加上需要的依赖:

//数据库连接驱动
compile('mysql:mysql-connector-java:6.0.5') 
//配置mybatis 数据源
compile("org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.1")

然后需要在application.properties中添加上需要配置的一些信息:

#设置数据库连接相关的参数
spring.datasource.url=jdbc:mysql://localhost/test?useSSL=false&serverTimezone=UTC&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

#配置mybatis 相关的参数
mybatis.type-aliases-package: com.harry.first.entity

url中如果我们想使用自己的数据库,可以替换掉test就行,其他的参数分别代表的是时区以及编码格式(这个地方还是需要多加小心的,我之前就因为时区的问题,往数据库里用now()函数,结果发生了一直快一个小时的缘故,所以这里一定要注意。)
username是你数据库在安装时候设定的用户名,默认情况下会有一个root用户。
password是安装时候设定的密码,我当时是直接用yum进行下载的mysql,然后安装的时候,忘记设置了名字,后来又比较懒。所以你懂的。
接下来是设置好驱动的名字。
我在上一篇博客的时候,将java后端,进行了分层,分别是Controller,Service,Dao,以及entity。我们需要写的与数据库相关联的代码,就是放在了Dao层中。
使用Mybatis进行数据库的操作,我知道的一共有三种方式:

  • 通过java代码直接去调用SqlSession。在我看来,这种方式更像是我们曾经使用的JDBC,只不过mybatis已经给JDBC封装的很好了,我们已经不需要在进行connection,prepareStatement,resultSet等一系列繁琐的操作了。大致的过程是这样的:我们首先需要准备好一个mybatis-config.xml的文件名,里面写好了对mybatis的配置,紧接着通过流把文件的信息读进来,然后我们通过这些配置实例化出一个SqlSessionFactory(核心对象),再通过SqlSessionFactory.openSession()方法制造出SqlSession对象,再通过SqlSession对象对对应的数据库进行增删改查操作。我们对这种方式暂时不演示。详细的内容可以看下面的链接。Mybatis 核心对象
  • 我们也可以通过在resource包下创建一个mapper包,然后在mapper包下创建一个xml。这个xml与java包下=>dao包下的java文件是对应上的。xml中mapper标签里的namespace可以与dao接口中的接口名对应。xml中 select * from hobby;

    在这里我们可以看到我们有一个父标签为mapper,mapper的有一个属性叫做namespace 这里namespace的名字应该与刚刚定义的那个接口名称相互对应上,而且这里要带上,自己的包名。(这里友情提示一下,做这个演示项目的时候,我不小心把自己的接口名称写错了,结果导致了那个接口一直找不到对应的xml,浪费了我整整两个小时,现在感觉当时自己真的特别的蠢)
    resultMap 子标签是一个实体类到表字段的一个映射关系,id属性是为了在注入的时候用的,我们暂且理解为给这个resultMap起了个名字,那它是和哪一个实体类对应上的那,这就是type属性的职责了。这个标签中的子标签就是交代一下字段名称和类型。
    再下面的四个标签我们可以见名知意了,分别是增改删查。
    其他的很多mybatis的用法我会在接下来的博客中进行详细说明,这篇文章主要就是将spring boot 与 Mybatis进行结合的。

    最后再追加一下我们使用Mybatis 如果看不到相应的日志的话,调试起来相当麻烦。所以我们需要做一步操作:
    在application.properties中加入

    logging.level.com.harry.first.dao=debug
    

    logging.level 后面追加上自己dao包的路径即可。
    效果就如下面所示:

    2018-07-24 22:20:42.001 DEBUG 22420 --- [nio-8080-exec-1] c.h.first.dao.HobbyMapper.insertHobby    : ==>  Preparing: insert into hobby (name,user_id,create_date) values (?,?,now()); 
    2018-07-24 22:20:42.012 DEBUG 22420 --- [nio-8080-exec-1] c.h.first.dao.HobbyMapper.insertHobby    : ==> Parameters: java(String), 1(Integer)
    2018-07-24 22:20:42.029 DEBUG 22420 --- [nio-8080-exec-1] c.h.first.dao.HobbyMapper.insertHobby    : <==    Updates: 1
    

    谢谢大家,你们的阅读与喜欢就是我前行最大的动力,在这里表示由衷的感谢。我也希望可以帮助大家,尤其是小白们用大白话解决一些更实质性的问题(毕竟自己也是从那个时候一步一步过来的)

你可能感兴趣的:(当Spring Boot遇见Mybatis(连接Mysql))