SpringBoot 整合 Mybatis

根本信息

技术栈

Spring Boot 2.4.5、Mybatis

学习目标

SpringBoot 整合 Mybatis

我的项目详解

新建一个 Spring Initializr 我的项目

创立我的项目的文件构造以及抉择 jdk 的版本

抉择我的项目所须要的依赖

批改我的项目名,点击 Finish 实现

建好我的项目后生成的 pom.xml

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">    <modelVersion>4.0.0</modelVersion>    <parent>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-parent</artifactId>        <version>2.4.5</version>        <relativePath/> <!-- lookup parent from repository -->    </parent>    <groupId>com.malf</groupId>    <artifactId>springboot_mybatis</artifactId>    <version>0.0.1-SNAPSHOT</version>    <name>springboot_mybatis</name>    <description>Demo project for Spring Boot</description>    <properties>        <java.version>1.8</java.version>    </properties>    <dependencies>        <dependency>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-starter-jdbc</artifactId>        </dependency>        <dependency>            <groupId>org.mybatis.spring.boot</groupId>            <artifactId>mybatis-spring-boot-starter</artifactId>            <version>2.1.4</version>        </dependency>        <dependency>            <groupId>mysql</groupId>            <artifactId>mysql-connector-java</artifactId>            <scope>runtime</scope>        </dependency>        <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>    </dependencies>    <build>        <plugins>            <plugin>                <groupId>org.springframework.boot</groupId>                <artifactId>spring-boot-maven-plugin</artifactId>            </plugin>        </plugins>    </build></project>

批改配置文件

本文不应用 application.properties 文件,而应用更加简洁的 application.yml 文件。将 resource 文件夹下原有的 application.properties 文件删除,创立 application.yml 配置文件(备注:SpringBoot 底层会把 application.yml 文件解析为application.properties),本文创立了两个 yml 文件(application.yml 和 application-dev.yml)

application.yml
spring:  profiles:    active: dev
application-dev.yml
server:  port: 8000mybatis:  mapper-locations: classpath:mapping/*Mapper.xml  type-aliases-package: com.malf.entity#showSqllogging:  level:    com:      example:        mapper : debugspring:  datasource:    url: jdbc:mysql://localhost:3306/springboot_mybatis?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC    username: root    password: 123456    driver-class-name: com.mysql.cj.jdbc.Driver

数据库表构造

CREATE TABLE `user` (  `id` int(32) NOT NULL AUTO_INCREMENT,  `userName` varchar(32) NOT NULL,  `passWord` varchar(50) NOT NULL,  `realName` varchar(32) DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

创立实体类实现业务流程

创立包 controller、entity、dao、service,resources 下创立 mapping 文件夹,用于写 sql 语句,也能够用注解的形式间接写在 mapper 文件里。

entity
package com.malf.entity;/** * @author 巅峰小词典 * @description * @date 2021/5/20 * @project springboot_mybatis */public class User {    private Integer id;    private String userName;    private String passWord;    private String realName;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getUserName() {        return userName;    }    public void setUserName(String userName) {        this.userName = userName;    }    public String getPassWord() {        return passWord;    }    public void setPassWord(String passWord) {        this.passWord = passWord;    }    public String getRealName() {        return realName;    }    public void setRealName(String realName) {        this.realName = realName;    }    @Override    public String toString() {        return "User{" +                "id=" + id +                ", userName='" + userName + '\'' +                ", passWord='" + passWord + '\'' +                ", realName='" + realName + '\'' +                '}';    }}
controller
package com.malf.controller;import com.malf.service.UserService;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;/** * @author 巅峰小词典 * @description * @date 2021/5/20 * @project springboot_mybatis */@RestController@RequestMapping("/user")public class UserController {    @Resource    private UserService userService;    @RequestMapping("getUser/{id}")    public String GetUser(@PathVariable int id) {        return userService.selectById(id).toString();    }}
dao
package com.malf.dao;import com.malf.entity.User;import org.springframework.stereotype.Repository;/** * @author 巅峰小词典 * @description * @date 2021/5/20 * @project springboot_mybatis */@Repositorypublic interface UserMapper {    User selectById(int id);}
service
package com.malf.service;import com.malf.entity.User;/** * @author 巅峰小词典 * @description * @date 2021/5/20 * @project springboot_mybatis */public interface UserService {    public User selectById(int id);}
service.impl
package com.malf.service.impl;import com.malf.entity.User;import com.malf.dao.UserMapper;import com.malf.service.UserService;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * @author 巅峰小词典 * @description * @date 2021/5/20 * @project springboot_mybatis */@Servicepublic class UserServiceImpl implements UserService {    @Resource    UserMapper userMapper;    public User selectById(int id){        return userMapper.selectById(id);    }}
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.malf.dao.UserMapper">    <resultMap type="com.malf.entity.User" id="User">        <result column="id" jdbcType="INTEGER" property="id"/>        <result column="userName" jdbcType="VARCHAR" property="userName"/>        <result column="passWord" jdbcType="VARCHAR" property="passWord"/>        <result column="realName" jdbcType="VARCHAR" property="realName"/>    </resultMap>    <select id="selectById" resultType="com.malf.entity.User">        select * from user where id = #{id}  </select></mapper>

最终框架结构

在启动类里加上注解用于给出须要扫描的 mapper 文件门路 @MapperScan("com.malf.dao")

package com.malf;import org.mybatis.spring.annotation.MapperScan;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication@MapperScan("com.malf.dao") // 扫描的mapperpublic class SpringbootMybatisApplication {    public static void main(String[] args) {        SpringApplication.run(SpringbootMybatisApplication.class, args);    }}

最初启动,浏览器输出地址:http://localhost:8000/user/getUser/1


测试胜利,SpringBoot 整合 Mybatis 根本框架就搭建胜利了。

源码参考

springboot_mybatis