本博客使用IDEA开发工具,通过Maven构建SpringBoot项目,初始化项目添加的依赖有:spring-boot-starter-jdbc、spring-boot-starter-web、mysql-connector-java,这里为了演示整合SpringBoot,初始时只勾选了这几项,其他的启动器根据自己实际项目选择添加,如何使用IDEA构建SpringBoot项目这就不再过多赘述了。

版本:

  • IDEA 2020.1.3
  • Maven 3.6.3
  • MySql 8.0.19
  • SpringBoot 2.3.2

这里构建项目使用的是SpringBoot自带的Hikari数据源,也可以根据自己项目选择Druid、c3p0等。

如果使用Druid数据源可以参考上一篇博客:SpringBoot学习之整合Druid的简单应用

1.环境搭建

首先在SpringBoot项目的pom.xml文件中添加 mybatis-spring-boot-starter 依赖

<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.3</version>
</dependency>

Maven仓库地址:https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter

配置application.yaml中的数据源,这里使用更加直观的yaml格式文件,也可以使用properties格式文件

spring:
datasource:
username: root
password: 970628
url: jdbc:mysql://localhost:3306/school?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver

1.url中在mysql的8版本以上的可能需要设置时区: serverTimezone=UTC

2.driver-class-name 数据库驱动,如果是mysql8版本以上的使用 com.mysql.cj.jdbc.Driver,低版本的使用 com.mysql.jdbc.Driver

2.编写pojo类

这里我使用我自建数据表user来做业务例子

编写user对应的pojo类,包括有参无参构造及Getter、Setter方法

package com.tioxy.pojo;

public class User {
private Integer id;
private String name;
private String pwd; public User() {
} public User(Integer id, String name, String pwd) {
this.id = id;
this.name = name;
this.pwd = pwd;
} 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 getPwd() {
return pwd;
} public void setPwd(String pwd) {
this.pwd = pwd;
} @Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
", pwd='" + pwd + '\'' +
'}';
}
}

3.编写Mapper及对应的Mapper.xml文件

这里我使用Mapper.xml编写SQL语句,也可以使用注解方式,两种方式都可以,看个人喜好。我选择xml文件的原因是编写SQL语句灵活、扩展性好,我以xml文件为例

编写UserMapper接口,这里添加了@Mapper则省去写Mapper实现类了

package com.tioxy.mapper;

import com.tioxy.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository; import java.util.List;
@Mapper
@Repository
public interface UserMapper {
/**
* 查询所有的用户
* @return
*/
List<User> queryUserList();
}

在resources添加了mybatis.mapper包,在mapper下添加UserMapper.xml文件

<?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.tioxy.mapper.UserMapper">
<select id="queryUserList" resultType="User">
select * from user
</select>
</mapper>

由于这里我们将Mapper接口与Mapper.xml文件放在了不同的包下,需要我们在application.yaml添加Mapper自动扫描包的配置

# 整合Mybatis
mybatis:
type-aliases-package: com.tioxy.pojo
# 原来mapper与mapper.xml在同一路径,现在不在同一路径需要设置下面的参数,目的就是告诉*.xml文件的路径
mapper-locations: classpath:mybatis/mapper/*.xml

完整的配置文件如下图:

如果将Mapper接口与Mapper.xml文件放在了相同的包下,需要在POM.xml文件添加maven配置资源过滤问题

<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>

4.测试验证

添加一个控制器请求,进行验证,代码如下:

@RestController
public class UserController {
@Autowired
private UserMapper userMapper; @GetMapping("/queryUserList")
public List<User> queryUserList(){
return userMapper.queryUserList();
}
}

启动项目运行输入:http://localhost:8080/queryUserList

测试成功!

最后附上我的项目结构

文章参考:

狂神说Java之SpringBoot整合Mybatis课程学习:https://www.bilibili.com/video/BV1PE411i7CV?p=33

SpringBoot学习之整合Mybatis的更多相关文章

  1. springboot学习2 整合mybatis

    springboot整合mybatis 一.添加mybatis和数据库连接的依赖 <!--整合mybatis--> <dependency> <groupId>or ...

  2. SpringBoot学习:整合Mybatis,使用HikariCP超高性能数据源

    一.添加pom依赖jar包: <!--整合mybatis--> <dependency> <groupId>org.mybatis.spring.boot</ ...

  3. SpringBoot学习:整合MyBatis,使用Druid连接池

    项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 (一)添加pom依赖: <!-- https://mvnrepository.co ...

  4. SpringBoot 2.X整合Mybatis

    1.创建工程环境 勾选Web.Mybatis.MySQL,如下 依赖如下 <dependency> <groupId>org.springframework.boot</ ...

  5. 【springboot spring mybatis】看我怎么将springboot与spring整合mybatis与druid数据源

    目录 概述 1.mybatis 2.druid 壹:spring整合 2.jdbc.properties 3.mybatis-config.xml 二:java代码 1.mapper 2.servic ...

  6. SpringBoot当中如何整合mybatis和注入

    [学习笔记] 6.整合mybatis和注入: 马克-to-win@马克java社区: 根据第3部分的helloworld例子,用那个项目做底子.pom.xml只需要加入mybatis和mysql的部分 ...

  7. SpringBoot | 3.2 整合MyBatis

    目录 前言 1. 导入MyBatis场景 1.1 初始化导向 1.2 手动导入 2. *MyBatis自动配置原理 3. 全局配置文件 @Mapper @MapperScan 3.1 配置模式 3.2 ...

  8. springboot笔记07——整合MyBatis

    前言 Springboot 整合 MyBatis 有两种方式,分别是:"全注解版" 和 "注解.xml混合版". 创建项目 创建Springboot项目,选择依 ...

  9. SpringBoot学习之整合Druid的简单应用

    一.Druid介绍 Druid简介 Druid是目前Java语言中最好的数据库连接池之一.结合了 C3P0.DBCP 等 DB 池的优点,同时加入了日志监控.Druid 是一个分布式的.支持实时多维 ...

随机推荐

  1. 文件读取一些payload

    Windows: C:boot.ini //查看系统版本 C:WindowsSystem32inetsrvMetaBase.xml //IIS配置文件 C:Windowsrepairsam //存储系 ...

  2. 3.Unity3d物体操作常用按键

    新建一个cube物体.在unity3d界面左上角可以看到红色下划线的五个图标(下面用图标1到5数字表示),分别对应不同功能,这些功能操作物体很常用.下面用cube物体的操作来演示这几个功能. 1.按Q ...

  3. PE文件格式详解(一)

    PE文件格式介绍(一) 0x00 前言 PE文件是portable File Format(可移植文件)的简写,我们比较熟悉的DLL和exe文件都是PE文件.了解PE文件格式有助于加深对操作系统的理解 ...

  4. docker自动化部署前端项目实战一

    docker自动化部署前端项目实战一 本文适用于个人项目,如博客.静态文档,不涉及后台数据交互,以部署文档为例. 思路 利用服务器node脚本,监听github仓库webhook push事件触发po ...

  5. 全局作用域中,用 const 和 let 声明的变量不在 window 上,那到底在哪里?如何去获取?

    在ES5中,顶层对象的属性和全局变量是等价的,var 命令和 function 命令声明的全局变量,自然也是顶层对象. var a = 12; function f(){}; console.log( ...

  6. shell专题(三):Shell脚本入门

    1.脚本格式 脚本以#!/bin/bash开头(指定解析器) 2.第一个Shell脚本:helloworld (1)需求:创建一个Shell脚本,输出helloworld (2)案例实操: [atgu ...

  7. 爬虫页面解析 lxml 简单教程

    一.与字符串的相互转换 1.字符串转变为etree 对象 import lxml.html tree = lxml.html.fromstring(content) # content 字符串对象 2 ...

  8. python之爬虫(四)之 Requests库的基本使用

    什么是Requests Requests是用python语言基于urllib编写的,采用的是Apache2 Licensed开源协议的HTTP库如果你看过上篇文章关于urllib库的使用,你会发现,其 ...

  9. Python并发编程05 /死锁现象、递归锁、信号量、GIL锁、计算密集型/IO密集型效率验证、进程池/线程池

    Python并发编程05 /死锁现象.递归锁.信号量.GIL锁.计算密集型/IO密集型效率验证.进程池/线程池 目录 Python并发编程05 /死锁现象.递归锁.信号量.GIL锁.计算密集型/IO密 ...

  10. Python 图像处理 OpenCV (14):图像金字塔

    前文传送门: 「Python 图像处理 OpenCV (1):入门」 「Python 图像处理 OpenCV (2):像素处理与 Numpy 操作以及 Matplotlib 显示图像」 「Python ...