SpringBoot简单整合Mybatis

Posted guming1125

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SpringBoot简单整合Mybatis相关的知识,希望对你有一定的参考价值。

前言

虽然之前跟着别人的视频做了一个SpringBoot的一个小项目,但是一直不太明白怎么将SpringBoot和Mybatis整合在一起,所以,今天花了一点时间用他们做了一个demo,并作了以下的总结,帮助自己更好的掌握好他们的使用.

项目搭建

创建项目

  • 新建一个Spring Initializr项目

  • 创建项目的文件结构以及jdk的版本

    此demo选择的JDK版本为1.8

  • 选择项目所需要的依赖

    在WEB里面选择”Spring Web Starter”
    在SQL里面选择”mysql Driver” “JDBC API” “Mybatis Framework”
    在Developer Tools里面选择”Lombok”

  • 完成项目创建

数据库准备

1 create table user
2 (
3     id INTEGER auto_increment,
4     user_name varchar(30) not null,
5     password varchar(30) not null,
6     constraint user_pk
7         primary key (id)
8 );

项目构建

  • entity类

package com.example.entity;

import lombok.Data;

@Data
public class User 
    private Integer id;
    private String userName;
    private String password;

原本需要写get\set方法,但是由于使用了lombok下的@Data,再在IDEA中引入一个插件即可便捷管理实体类,不需要繁琐的get\set\toString方法.
插件的安装只需要正在IDEA的设置里面搜索”lombok”即可.

  • Controller类
package com.example.controller;

import com.example.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/userController")
public class UserController 
    @Autowired
    private UserService userService;

    @RequestMapping("getUser/id")
    public String getUser(@PathVariable int id) 
        String user = userService.selectUserById(id).toString();
        return user;
    

通过RequestMapping访问我们控制类中的方法,得到传入id对应的User对象的值.所以,我们就需要定义一个UserService来实现查找的方法.

  • Service类
package com.example.service;

import com.example.entity.User;
import com.example.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService 
    @Autowired
    private UserMapper userMapper;

    public User selectUserById(int id) 
        return userMapper.selectUserById(id);
    

在Service类中,通过Mapper映射的方式,调用Mapper里的接口,而在Mapper接口里面,我们完成和Mybatis的结合.

  • Mapper接口 和 Mapper.xml
package com.example.mapper;

import com.example.entity.User;
import org.springframework.stereotype.Repository;

@Repository
public interface UserMapper 
    User selectUserById(int id);

此接口和xml文件里面相互对应,使用mybatis简化以往JDBC对数据库的操作,只需要在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.example.mapper.UserMapper">
    <resultMap id="BaseResultMap" type="com.example.entity.User">
        <result column="id" jdbcType="INTEGER" property="id" />
        <result column="user_name" jdbcType="VARCHAR" property="userName" />
        <result column="password" jdbcType="VARCHAR" property="password" />
    </resultMap>
    <select id="selectUserById" resultMap="BaseResultMap">
        select * from user where id = #id
    </select>
</mapper>

在mapper的xml文件中需要注意namespace要和mapper接口相对应,sql语句的id要和mapper接口中的方法相对应,以及ResultMap里面column要和数据库中表的列名相对应.

  • application配置文件

server:
  port: 8080
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatis_user?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
    username: root
    password: password
mybatis:
  mapper-locations: classpath:mapping/*Mapper.xml
  type-aliases-package: com.example.entity

在以上过程中,即可根据需要配置application文件,此项目使用application.yml作为配置文件.

  • server.port:表示项目运行在本地的8080端口.

  • spring.datasource.*:表示连接数据库的配置

  • mybatis:对mybatis的实体类,xml租借进行声明,让xml和mapper接口能对应起来

项目运行

在springboot运行文件上加个@MapperScan(“com.example.mapper”)给出mapper接口的访问路径,可以让springboot能扫描到mapper接口.

最后在访问链接 http://127.0.0.1:8080/userController/getUser/1 即可实现.在网页页面显示user对象的数据内容

以上是关于SpringBoot简单整合Mybatis的主要内容,如果未能解决你的问题,请参考以下文章

SpringBoot整合LayUI和Thymeleaf制作简单登录页面

SpringBoot整合LayUI和Thymeleaf制作简单登录页面

SpringBoot整合LayUI和Thymeleaf制作简单登录页面

springBoot整合MyBatise及简单应用

SpringBoot简单整合Mybatis

Springboot与MyBatis简单整合