• SpringBoot 整合 MyBatis


    作者:大三的土狗

    专栏:SpringBoot入门到精通
    在这里插入图片描述


    前言

      文本是基于MVC前后端分离模式的一个SpringBoot整合MyBatis的项目,不过没有用到前端页面,使用了更方便的Apifox请求工具。


    1、创建模块

    1、创建SpringBoot模块

    在这里插入图片描述

    2、勾选Mysql Driver,Mybatis Framework

    在这里插入图片描述

    2、坐标导入

    因为刚刚以及勾选了mybatis,mysql,所以他们已经添加到了pom.xml中,下面导入其他坐标。

    • lombok 减少get、set方法的编写
    • druid 数据库连接池
    		
            
                com.alibaba
                druid
                1.2.4
            
    
            
                org.projectlombok
                lombok
            
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    3、项目目录构建

    在这里插入图片描述

    4、编写代码

    1、定义实体类(与数据库一一对应)

    在这里插入图片描述

    package com.example.mybatis.pojo;
    
    import lombok.AllArgsConstructor;
    import lombok.Data;
    import lombok.NoArgsConstructor;
    
    @Data					#lombok的注解减少getset方法
    @AllArgsConstructor
    @NoArgsConstructor
    public class User {
        private Integer id;
        private String name;
        private String password;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    2、mapper

    package com.example.mybatis.mapper;
    
    
    import com.example.mybatis.pojo.User;
    import org.apache.ibatis.annotations.Mapper;
    import org.springframework.stereotype.Repository;
    
    
    import java.util.List;
    
    @Mapper  // 告诉springboot这是一个mybatis的mapepr类
    @Repository   // 将userdao交由spring容齐管理
    public interface UserMapper {
    
        // 查询所有用户
        public List listUser();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    3、service接口

    package com.example.mybatis.service;
    
    
    import com.example.mybatis.pojo.User;
    
    import java.util.List;
    
    public interface UserService {
    
        // 查询所有用户
        public List listUser();
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    4、service接口的实现类serviceimpl

    package com.example.mybatis.service.impl;
    
    import com.example.mybatis.mapper.UserMapper;
    import com.example.mybatis.pojo.User;
    import com.example.mybatis.service.UserService;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    
    import java.util.List;
    
    @Service   //  交由spring容齐管理
    public class UserServiceImpl implements UserService {
        @Autowired
        private UserMapper userMapper;
    
        @Override
        public List listUser() {
            return userMapper.listUser();
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    5、Controller

    package com.example.mybatis.controller;
    
    
    import com.example.mybatis.pojo.User;
    import com.example.mybatis.service.UserService;
    import com.example.mybatis.untils.JSONResult;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.List;
    
    
    @RestController
    public class UserController {
    
        @Autowired
        private UserService userService;
    
        @GetMapping("/users")
        public JSONResult test(){
    
           return JSONResult.ok(userService.listUser());
    
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    6、工具类JSONResult

    package com.example.mybatis.untils;
    
    /**
     * 
     * @Title: JSONResult.java
     * @Description: 自定义响应数据结构
     * 				本类可提供给 H5/ios/安卓/公众号/小程序 使用
     * 				前端接受此类数据(json object)后,可自行根据业务去实现相关功能
     * 				200:表示成功
     * 				500:表示错误,错误信息在msg字段中
     * 				501:bean验证错误,不管多少个错误都以map形式返回
     * 				502:拦截器拦截到用户token出错
     * 				555:异常抛出信息
     * 				556: 用户qq校验异常
     * 			    557: 校验用户是否在CAS登录,用户门票的校验
     * @Copyright: Copyright (c) 2020
     */
    public class JSONResult {
    
        // 响应业务状态
        private Integer status;
    
        // 响应消息
        private String msg;
    
        // 响应中的数据
        private Object data;
        
        private String ok;	// 不使用
    
        public static JSONResult build(Integer status, String msg, Object data) {
            return new JSONResult(status, msg, data);
        }
    
        public static JSONResult build(Integer status, String msg, Object data, String ok) {
            return new JSONResult(status, msg, data, ok);
        }
        
        public static JSONResult ok(Object data) {
            return new JSONResult(data);
        }
    
        public static JSONResult ok() {
            return new JSONResult(null);
        }
        
        public static JSONResult errorMsg(String msg) {
            return new JSONResult(500, msg, null);
        }
    
        public static JSONResult errorUserTicket(String msg) {
            return new JSONResult(557, msg, null);
        }
        
        public static JSONResult errorMap(Object data) {
            return new JSONResult(501, "error", data);
        }
        
        public static JSONResult errorTokenMsg(String msg) {
            return new JSONResult(502, msg, null);
        }
        
        public static JSONResult errorException(String msg) {
            return new JSONResult(555, msg, null);
        }
        
        public static JSONResult errorUserQQ(String msg) {
            return new JSONResult(556, msg, null);
        }
    
        public JSONResult() {
    
        }
    
        public JSONResult(Integer status, String msg, Object data) {
            this.status = status;
            this.msg = msg;
            this.data = data;
        }
        
        public JSONResult(Integer status, String msg, Object data, String ok) {
            this.status = status;
            this.msg = msg;
            this.data = data;
            this.ok = ok;
        }
    
        public JSONResult(Object data) {
            this.status = 200;
            this.msg = "OK";
            this.data = data;
        }
    
        public Boolean isOK() {
            return this.status == 200;
        }
    
        public Integer getStatus() {
            return status;
        }
    
        public void setStatus(Integer status) {
            this.status = status;
        }
    
        public String getMsg() {
            return msg;
        }
    
        public void setMsg(String msg) {
            this.msg = msg;
        }
    
        public Object getData() {
            return data;
        }
    
        public void setData(Object data) {
            this.data = data;
        }
    
    	public String getOk() {
    		return ok;
    	}
    
    	public void setOk(String ok) {
    		this.ok = ok;
    	}
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 56
    • 57
    • 58
    • 59
    • 60
    • 61
    • 62
    • 63
    • 64
    • 65
    • 66
    • 67
    • 68
    • 69
    • 70
    • 71
    • 72
    • 73
    • 74
    • 75
    • 76
    • 77
    • 78
    • 79
    • 80
    • 81
    • 82
    • 83
    • 84
    • 85
    • 86
    • 87
    • 88
    • 89
    • 90
    • 91
    • 92
    • 93
    • 94
    • 95
    • 96
    • 97
    • 98
    • 99
    • 100
    • 101
    • 102
    • 103
    • 104
    • 105
    • 106
    • 107
    • 108
    • 109
    • 110
    • 111
    • 112
    • 113
    • 114
    • 115
    • 116
    • 117
    • 118
    • 119
    • 120
    • 121
    • 122
    • 123
    • 124
    • 125
    • 126
    • 127
    • 128
    • 129
    • 130

    7、配置文件

    server:
      port: 8080
    
    # 数据库数据源
    spring:
      datasource:
        type: com.alibaba.druid.pool.DruidDataSource        # 数据源类型
        username: root
        password: xmpkj
        url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT
        driver-class-name: com.mysql.cj.jdbc.Driver
    
    mybatis:
      mapper-locations: classpath:/mapper/*.xml   #   xml文件
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    8、mapper.xml

    
    
    
    
    
        
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    5、测试

    运行项目,打开Postman或者Apifox访问

    localhost:8080/users
    
    • 1

    成功从数据库查到信息

    在这里插入图片描述


    总结

    SpringBoot+MyBatis使用起来更方便,更舒服。掌握SpingBoot整合MyBatis,要比Spring整合简单的多,少了很多繁琐的配置。

  • 相关阅读:
    【408数据结构与算法】—希尔排序 Donald Shell(十七)
    leetcode每天5题-Day11
    命令解压aar、文件压缩成aar图文详解
    windows:批处理bat入门
    JDBC:获取数据库连接(一)
    壳聚糖-凝集素|Chitosan-Lectins|凝集素-PEG-壳聚糖|壳聚糖-聚乙二醇-凝集素
    html5播放器禁止拖拽功能实例(教学内容禁止拖动观看)
    数仓面经大框架
    计算机二级WPS 选择题(模拟和解析八)
    [ACTF2020 新生赛]Exec1命令注入
  • 原文地址:https://blog.csdn.net/qq_53463544/article/details/126317320