SpringBoot2.0系列--04--最簡單的Mybatis連線資料庫
阿新 • • 發佈:2018-12-14
SpringBoot2.0系列–04–最簡單的Mybatis連線資料庫
前言
JDK出11了,SpringBoot出2.0了,還沒有系統的學習過,剛好最近專案中有使用到,就把一些關鍵的東西列出來,避免忘記
SpringBoot2.0系列–00–目錄
介紹
寫完前臺訪問,下來就是訪問資料庫,這樣基本的主幹就有了
這邊使用的是Mybatis框架,在整個行業中使用的也是比較廣了,生態相對較好
下面直接看下怎麼整合吧
這個是最精簡的一個方式了,主要是引入的包和書寫的程式碼是最少的,最少的東西,那麼出錯的概率就最小,出錯之後排查也是最簡單的
總流程
- 新增需要依賴的包
- 在配置檔案中新增資料庫連線(ip、埠、賬號密碼)
- 先在資料庫中建表(先建表還是先寫實體類,看個人的習慣)
- 在entity中新增與資料庫表對應的實體類XXX
- 新增資料庫訪問層XXXDao,包路徑在dao.mysql,注意這個dao是以介面形式出現
- 在XXXDao中新增方法(就是對資料庫的操作)
- 在resources/mapper中新增對應的XXX.xml檔案
- 在XXX.xml中配置:
- dao和entity的聯絡
- entity中的資料和資料庫欄位的對應關係
- dao中寫的那些方法的具體實現(具體到sql語句)
- 在application.yml配置下mapper的路徑,第七條的路徑
- 在專案啟動的main檔案上添加註解,路徑就是第五條的路徑:
@MapperScan(“com.lizhaoblog.pro004mybatis.dao”)
- 啟動訪問
示例
這裡以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
檢視下一篇或者其他文章,可點選目錄或者專欄檢視