Springboot integrates mybatis (starter)

Time:2021-8-24

Spring boot integrates mybatis

essential information

Technology stack

Spring Boot 2.4.5、Mybatis

Learning purpose

Spring boot integrates mybatis

Project details

Create a new spring initializr project

Springboot integrates mybatis (starter)

Create the file structure of the project and select the version of the JDK

Springboot integrates mybatis (starter)

Select the dependencies required by the project

Springboot integrates mybatis (starter)

Modify the project name and click Finish to finish

Springboot integrates mybatis (starter)

Pom.xml generated after the project is built

<?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>

Modify profile

Instead of using the application. Properties file, this article uses the more concise application. YML file. Delete the original application.properties file in the resource folder and create the application.yml configuration file (Note: the bottom layer of springboot will parse the application.yml file into application.properties). This paper creates two YML files (application.yml and application dev.yml)

application.yml
spring:
  profiles:
    active: dev
application-dev.yml
server:
  port: 8000
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.malf.entity
#showSql
logging:
  level:
    com:
      example:
        mapper : debug
spring:
  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

Database table structure

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;

Create entity classes to implement business processes

Create packages controller, entity, Dao and service, and create mapping folders under resources to write SQL statements, or directly write them in the mapper file in the form of annotations.

entity
package com.malf.entity;

/**
 *@ author peak dictionary
 * @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 peak dictionary
 * @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 peak dictionary
 * @description
 * @date 2021/5/20
 * @project springboot_mybatis
 */
@Repository
public interface UserMapper {

    User selectById(int id);

}
service
package com.malf.service;

import com.malf.entity.User;

/**
 *@ author peak dictionary
 * @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 peak dictionary
 * @description
 * @date 2021/5/20
 * @project springboot_mybatis
 */
@Service
public 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>

Final frame structure

Springboot integrates mybatis (starter)

Annotate the startup class to give the mapper file path @ mapperscan (“com. Malf. Dao”) to be scanned

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") // scanned mapper
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }

}

Finally, start the browser and enter the address:http://localhost:8000/user/getUser/1

Springboot integrates mybatis (starter)
After the test is successful, the spring boot integration mybatis basic framework is built successfully.

Source code reference

springboot_mybatis