1. 程式人生 > >SpringBoot2.0系列--04--最簡單的Mybatis連線資料庫

SpringBoot2.0系列--04--最簡單的Mybatis連線資料庫

SpringBoot2.0系列–04–最簡單的Mybatis連線資料庫

前言

JDK出11了,SpringBoot出2.0了,還沒有系統的學習過,剛好最近專案中有使用到,就把一些關鍵的東西列出來,避免忘記
SpringBoot2.0系列–00–目錄

介紹

寫完前臺訪問,下來就是訪問資料庫,這樣基本的主幹就有了

這邊使用的是Mybatis框架,在整個行業中使用的也是比較廣了,生態相對較好

下面直接看下怎麼整合吧

這個是最精簡的一個方式了,主要是引入的包和書寫的程式碼是最少的,最少的東西,那麼出錯的概率就最小,出錯之後排查也是最簡單的

總流程

  1. 新增需要依賴的包
  2. 在配置檔案中新增資料庫連線(ip、埠、賬號密碼)
  3. 先在資料庫中建表(先建表還是先寫實體類,看個人的習慣)
  4. 在entity中新增與資料庫表對應的實體類XXX
  5. 新增資料庫訪問層XXXDao,包路徑在dao.mysql,注意這個dao是以介面形式出現
  6. 在XXXDao中新增方法(就是對資料庫的操作)
  7. 在resources/mapper中新增對應的XXX.xml檔案
  8. 在XXX.xml中配置:
    • dao和entity的聯絡
    • entity中的資料和資料庫欄位的對應關係
    • dao中寫的那些方法的具體實現(具體到sql語句)
  9. 在application.yml配置下mapper的路徑,第七條的路徑
  10. 在專案啟動的main檔案上添加註解,路徑就是第五條的路徑:

@MapperScan(“com.lizhaoblog.pro004mybatis.dao”)

  1. 啟動訪問

示例

這裡以User表為例,分別對上面的過程進行解釋

新增需要依賴的包

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.lizhaoblog</groupId>
  <artifactId>pro004-mybatis</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>pro004-mybatis</name>
  <description>Mybatis Connection Demo project for Spring Boot</description>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
    <mysql.version>5.1.38</mysql.version>
  </properties>


  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- jdbc、mybatis 需要-->
    <dependency>
      <groupId>org.mybatis.spring.boot</groupId>
      <artifactId>mybatis-spring-boot-starter</artifactId>
      <version>1.3.2</version>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
    <!-- jdbc、mybatis 需要-->

  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>


</project>

在配置檔案中新增資料庫連線(ip、埠、賬號密碼)

# mysql
spring:
    datasource:
        name: test
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF8
        username: admindev
        password: admin123

先在資料庫中建表(先建表還是先寫實體類,看個人的習慣)

這樣我們就建一個簡單的表、三個欄位id/name/age
資料庫sql在etc/mysql.sql中

/*
SQLyog 企業版 - MySQL GUI v8.14 
MySQL - 5.6.26-log : Database - test
*********************************************************************
*/

/*!40101 SET NAMES utf8 */;

/*!40101 SET SQL_MODE=''*/;

/*!40014 SET @[email protected]@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @[email protected]@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @[email protected]@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @[email protected]@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`test` /*!40100 DEFAULT CHARACTER SET utf8 */;

USE `test`;

/*Table structure for table `user` */

DROP TABLE IF EXISTS `user`;

CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(256) DEFAULT NULL,
  `age` int(11) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

/*Data for the table `user` */

insert  into `user`(`id`,`name`,`age`) values (1,'aaa',11),(2,'bbb',22);

/*!40101 SET [email protected]_SQL_MODE */;
/*!40014 SET [email protected]_FOREIGN_KEY_CHECKS */;
/*!40014 SET [email protected]_UNIQUE_CHECKS */;
/*!40111 SET [email protected]_SQL_NOTES */;

在entity中新增與資料庫表對應的實體類XXX

/*
 * Copyright (C), 2015-2018
 * FileName: User
 * Author:   zhao
 * Date:     2018/10/11 17:51
 * Description: User實體類
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改時間           版本號              描述
 */
package com.lizhaoblog.pro004mybatis.entity;

/**
 * 〈一句話功能簡述〉<br>
 * 〈User實體類〉
 *
 * @author zhao
 * @date 2018/10/11 17:51
 * @since 1.0.1
 */
public class User {
  private Integer id;
  private String name;
  private Integer age;

  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 Integer getAge() {
    return age;
  }

  public void setAge(Integer age) {
    this.age = age;
  }

  @Override
  public String toString() {
    return "User{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + '}';
  }
}

新增資料庫訪問層XXXDao,包路徑在dao.mysql,注意這個dao是以介面形式出現

在XXXDao中新增方法(就是對資料庫的操作)

這2個一起寫了

/*
 * Copyright (C), 2015-2018
 * FileName: UserDao
 * Author:   zhao
 * Date:     2018/10/11 17:50
 * Description: User資料庫連線類
 * History:
 * <author>          <time>          <version>          <desc>
 * 作者姓名           修改時間           版本號              描述
 */
package com.lizhaoblog.pro004mybatis.dao.mysql;

import com.lizhaoblog.pro004mybatis.entity.User;

import java.util.List;

/**
 * 〈一句話功能簡述〉<br>
 * 〈User資料庫連線類〉
 *
 * @author zhao
 * @date 2018/10/11 17:50
 * @since 1.0.1
 */
public interface UserDao {
  List<User> findAll();
}

在resources/mapper中新增對應的XXX.xml檔案

在XXX.xml中配置:

  • dao和entity的聯絡
  • entity中的資料和資料庫欄位的對應關係
  • dao中寫的那些方法的具體實現(具體到sql語句)
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.lizhaoblog.pro004mybatis.dao.mysql.UserDao">
  <!-- 這個id就是其他標籤暴露的一個key,這樣返回的資料就是這個resultMap,比如findAll標籤就用到了這個 -->
  <resultMap type="com.lizhaoblog.pro004mybatis.entity.User" id="resultMap">
    <result property="id" column="id"/>
    <result property="name" column="name"/>
    <result property="age" column="age"/>
  </resultMap>


  <select id="findAll" resultMap="resultMap">
		select * from user
	</select>

</mapper>

在application.yml配置下mapper的路徑,第七條的路徑

# Mybatis配置
mybatis:
    mapper-locations: "classpath:mapper/**/*.xml"

在專案啟動的main檔案上添加註解,路徑就是第五條的路徑:

@MapperScan(“com.lizhaoblog.pro004mybatis.dao”)

package com.lizhaoblog.pro004mybatis;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.lizhaoblog.pro004mybatis.dao")
public class Pro004MybatisApplication {

  public static void main(String[] args) {
    SpringApplication.run(Pro004MybatisApplication.class, args);
  }
}

啟動訪問

結果:[User{id=1, name=‘aaa’, age=11}, User{id=2, name=‘bbb’, age=22}]

這樣子就是連線成功了

通用Mybatis的使用

這樣連線成功了資料庫,剛開始還好,如果經常開發業務的話,就會寫挺多dao的,所以很多通用dao框架就出現了,這些框架一般都包含了一些常用的方法,比如增刪改查計數等

這個放到後面那篇說。

聯絡方式

聯絡方式:QQ3060507060

檢視下一篇或者其他文章,可點選目錄或者專欄檢視