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 @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@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 SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_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);
}
}
启动访问
输入网址:http://127.0.0.1:8080/mybatis/find-all
结果:[User{id=1, name=‘aaa’, age=11}, User{id=2, name=‘bbb’, age=22}]
这样子就是连接成功了
通用Mybatis的使用
这样连接成功了数据库,刚开始还好,如果经常开发业务的话,就会写挺多dao的,所以很多通用dao框架就出现了,这些框架一般都包含了一些常用的方法,比如增删改查计数等
这个放到后面那篇说。
联系方式
项目代码路径码云:https://gitee.com/lizhaoandroid/Springboot-Learning-lz
联系方式:QQ3060507060
查看下一篇或者其他文章,可点击目录或者专栏查看