SpringBoot学习之整合Mybatis
本博客使用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的更多相关文章
- springboot学习2 整合mybatis
		springboot整合mybatis 一.添加mybatis和数据库连接的依赖 <!--整合mybatis--> <dependency> <groupId>or ... 
- SpringBoot学习:整合Mybatis,使用HikariCP超高性能数据源
		一.添加pom依赖jar包: <!--整合mybatis--> <dependency> <groupId>org.mybatis.spring.boot</ ... 
- SpringBoot学习:整合MyBatis,使用Druid连接池
		项目下载地址:http://download.csdn.NET/detail/aqsunkai/9805821 (一)添加pom依赖: <!-- https://mvnrepository.co ... 
- SpringBoot 2.X整合Mybatis
		1.创建工程环境 勾选Web.Mybatis.MySQL,如下 依赖如下 <dependency> <groupId>org.springframework.boot</ ... 
- 【springboot spring mybatis】看我怎么将springboot与spring整合mybatis与druid数据源
		目录 概述 1.mybatis 2.druid 壹:spring整合 2.jdbc.properties 3.mybatis-config.xml 二:java代码 1.mapper 2.servic ... 
- SpringBoot当中如何整合mybatis和注入
		[学习笔记] 6.整合mybatis和注入: 马克-to-win@马克java社区: 根据第3部分的helloworld例子,用那个项目做底子.pom.xml只需要加入mybatis和mysql的部分 ... 
- SpringBoot | 3.2 整合MyBatis
		目录 前言 1. 导入MyBatis场景 1.1 初始化导向 1.2 手动导入 2. *MyBatis自动配置原理 3. 全局配置文件 @Mapper @MapperScan 3.1 配置模式 3.2 ... 
- springboot笔记07——整合MyBatis
		前言 Springboot 整合 MyBatis 有两种方式,分别是:"全注解版" 和 "注解.xml混合版". 创建项目 创建Springboot项目,选择依 ... 
- SpringBoot学习之整合Druid的简单应用
		一.Druid介绍 Druid简介 Druid是目前Java语言中最好的数据库连接池之一.结合了 C3P0.DBCP 等 DB 池的优点,同时加入了日志监控.Druid 是一个分布式的.支持实时多维 ... 
随机推荐
- (二)LVS介绍
			LVS分3种模式 (a)NAT(网络地址映射):通过网络地址转换的方法来实现调度 优点:支持所有操作系统及私有网络,且只需一个公网 IP 地址 缺点:用户请求和响应报文都必须 ... 
- [USACO16OPEN]248 G——区间dp
			[USACO16OPEN]248 G 题目描述 Bessie likes downloading games to play on her cell phone, even though she do ... 
- day14 参数
			目录 一.参数介绍 二.形参与实参的具体使用 2.1位置参数 2.2关键字参数 2.3关键字实参和位置实参混合使用时 2.4默认参数 2.5位置形参和默认形参混用 2.6 可变长度的参数(*与**用法 ... 
- mysql numeric
			tinyint 1个字节 smallint 2个字节 mediumint 3个字节 int 4个字节 bigint 8个字节 
- ES6模块与CommonJS模块有什么区别?
			ES6 Module和CommonJS模块的区别: CommonJS是对模块的浅拷贝,ES6 Module是对模块的引用,即ES6 Module只存只读,不能改变其值,具体点就是指针指向不能变,类似c ... 
- 数据可视化之powerBI技巧(十九)DAX作图技巧:使用度量值动态分组和配色
			有了前两篇关于分组的铺垫,这篇文章就来学习一个分组的经典应用,图表的动态分组,并对分组动态配色. 假设有十几个产品,每个产品的销售额,是随着时间而变化的,想知道某个时间的每一个产品的销售额与平均销售额 ... 
- python 装饰器(六):装饰器实例(三)内置装饰器
			内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. def getx(sel ... 
- tensorflw-gpu 运行 。py程序出现gpu不匹配的问题
			安装好了tensorflow-gpu版本,然后程序中写好了 with tf.device('/gpu:0'): 但是python3 .py程序时还是有错误. 报错为: 2018-04-24 12: ... 
- (八) SpringBoot起飞之路-整合Shiro详细教程(MyBatis、Thymeleaf)
			兴趣的朋友可以去了解一下前几篇,你的赞就是对我最大的支持,感谢大家! (一) SpringBoot起飞之路-HelloWorld (二) SpringBoot起飞之路-入门原理分析 (三) Sprin ... 
- JavaScript 基础 学习 (二)
			JavaScript 基础 学习 节点属性  每一个节点都有自己的特点  这个节点属性就记录着属于自己节点的特点 1. nodeType(以一个数字来表示这个节点类型)  语法:节点.nodeT ... 
