SpringBoot集成mybatis教程

引言:

本文主要介绍SpringBoot如何集成mybatis框架,本文是由作者一步一操作书写完成,欢迎学习。

MyBatis简单介绍:

MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java Object,普通的 Java对象)映射成数据库中的记录。
Mybatis具有简单易学、灵活、解除sql与程序代码的耦合、提供映射标签,支持对象关系组建维护、提供xml标签,支持编写动态sql等优点。

创建项目:

一、新建一个Spring Initializr项目
1、File->New->Project
在这里插入图片描述
2、选择Spring Initializr地址为 https://start.spring.io
在这里插入图片描述
3、填写Group包名 等信息。
在这里插入图片描述

4、选择组件时根据需要,这里选择Spring Web,Mybatis,MySQL。
在这里插入图片描述
5、确定项目名完成即可。
在这里插入图片描述
6、生成项目后我们可以看到SpringBoot集成MyBatis所需相关依赖并添加junit依赖如下:

 <!--Springboot集成mybatis相关依赖-->
    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.1.2</version>
    </dependency>
   <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.12</version>
    </dependency>
    <!-- Springboot的测试支持 --> 
           <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <scope>test</scope>
    </dependency>

二、修改resources下的配置文件application.properties
本文不使用application.properties文件 而使用更加简洁的application.yml文件。将resources文件夹下原有的application.properties文件后缀改成yml,(备注:其实SpringBoot底层会把application.yml文件解析为application.properties),本文创建了两个yml文件(application.yml和application-dev.yml),分别来看一下内容
1、application.yml

spring:
  profiles:
    active: dev

2、 application-dev.yml

server:
  port: 8080
  servlet:
      context-path: /	 
spring:
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapper/*DAOMapper.xml
  type-aliases-package: com.hbc.springboot.entity

创建两个文件的原因是项目中可以有不同环境,开发环境、测试环境、生产环境等等,每个环境参数不同,就可以通过yml文件进行分别配置。
并且配置文件名满足application-{profile}.yml的格式,其中{profile}对应你的环境标识,比如:

application-dev.yml:开发环境
application-test.yml:测试环境
application-prod.yml:生产环境
至于哪个具体的配置文件会被加载,需要在application.yml文件中通过spring.profiles.active属性来设置,其值对应{profile}值。
三、在入口类配置

@MapperScan("com.hbc.springboot.dao")

用来扫描dao.

四、创建包controller、entity、dao、service。resources下创建mapper文件夹,用于写sql语句,也可以用注解的方式直接写在mapper文件里。
目录结构如下
在这里插入图片描述
1、创建一个名为test的数据库,并创建一个名为user的表。
在这里插入图片描述
2、entity下新建实体类user.java 并提供get、set、toString方法。

package com.hbc.springboot.entity;

/**
 * @description: 用户实体类
 * @author: hbc
 */


public class User {
    private  String id;
    private  String name;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

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

2、dao中创建UserDAO

	package com.hbc.springboot.dao;

	import com.hbc.springboot.entity.User;
	
	import java.util.List;
	
	/**
	 * @description: 用户DAO层
	 * @author: hbc
	 */
	
	
	public interface UserDAO {
	    List<User> findAllUser();
	}

3、mapper中创建UserDAOMapper.xml用于书写sql语句。

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "mybatis-3-mapper.dtd" >
<mapper namespace="com.hbc.springboot.dao.UserDAO">

	<select id="findAllUser" resultType="User">
		SELECT id,name FROM user;
	</select>
		
</mapper>

4、可以在SpringbootApplicationTests测试dao层接口

package com.hbc.springboot;

import com.hbc.springboot.dao.UserDAO;
import com.hbc.springboot.entity.User;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

import java.util.List;

@RunWith(SpringJUnit4ClassRunner.class)
@SpringBootTest(classes = SpringbootApplication.class)
public class SpringbootApplicationTests {

    @Autowired
    private UserDAO userDAO;

    @Test
    public void testUser(){
        List<User> allUser = userDAO.findAllUser();
        System.err.println(allUser);
    }

}

5、运行结果如下
在这里插入图片描述
访问数据库成功。
6、通过接口访问,由于本文测试接口,所以直接注入dao层。

package com.hbc.springboot.controller;

import com.hbc.springboot.dao.UserDAO;
import com.hbc.springboot.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * @description: 用户controller层
 * @author: hbc
 * @date: 2020-04-16 11:09
 */

@Controller
@ResponseBody
@RequestMapping("/user")
public class UserController {
    @Autowired
    private UserDAO userDAO;

    @RequestMapping("/queryAllUser")
    public List<User> queryAllUser(){
        List<User> allUser = userDAO.findAllUser();
        return allUser;
    }
}

7、浏览器输入访问地址:http://localhost:8080/user/queryAllUser,得到如下结果
在这里插入图片描述
访问成功。

总结

SpringBoot集成MyBatis步骤比较简单,有一些需要注意的问题。
例如:
com.mysql.jdbc.Driver 是 mysql-connector-java 5中的,
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的。
并且JDBC连接Mysql6 com.mysql.cj.jdbc.Driver, 需要指定时区serverTimezone,例如:

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

以上SpringBoot集成MyBatis的基本框架就搭建好了。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值