关于java:SpringBoot-整合-Mybatis入门版

5次阅读

共计 5994 个字符,预计需要花费 15 分钟才能阅读完成。

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

数据库表构造

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
 */
@Repository
public 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
 */
@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>

最终框架结构

在启动类里加上注解用于给出须要扫描的 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") // 扫描的 mapper
public class SpringbootMybatisApplication {public static void main(String[] args) {SpringApplication.run(SpringbootMybatisApplication.class, args);
    }

}

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


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

源码参考

springboot_mybatis

正文完
 0