SpringBoot实战教程(4)| 整合Mybatis

        ​MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs)

mybatis官网文档地址:http://mybatis.org/spring/zh/index.html

目录

一、初始化SpringBoot项目

二、引入依赖文件

三、创建数据库脚本

四、Demo源代码

(1)application.yml

(2)UserController.java

(3)UserDao.java

(4)SysUser.java

(5)UserService.java

(6)UserServiceImpl.java

(7)ResponseUtil.java

(8)SpringbootDemoMybatisApplication.java

五、程序运行结果

六、简单总结


一、初始化SpringBoot项目

二、引入依赖文件

 <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>2.5.6</version>
        </dependency>
        <!-- mybatis-spring-boot-starter-->
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.2.0</version>
        </dependency>
        <!-- 数据源-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.27</version>
        </dependency>
        <!-- 阿里巴巴druid-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.8</version>
        </dependency>
        <!--fastjson-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.78</version>
        </dependency>

三、创建数据库脚本

MySQL数据库脚本:

/*
 Navicat Premium Data Transfer

 Source Server         : 本地数据库
 Source Server Type    : MySQL
 Source Server Version : 50733
 Source Host           : localhost:3306
 Source Schema         : springboot-mybatis

 Target Server Type    : MySQL
 Target Server Version : 50733
 File Encoding         : 65001

 Date: 20/11/2021 02:27:37
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user`  (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `password` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  `sex` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 2 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_bin ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES (1, 'admin', '123456', '男');

SET FOREIGN_KEY_CHECKS = 1;

四、Demo源代码

(1)application.yml#

spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot-mybatis
    username: root
    password: 123456

(2)UserController.java#

package com.csdn.controller;

import com.csdn.entity.SysUser;
import com.csdn.service.UserService;
import com.csdn.util.ResponseUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequestMapping("/users")
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * 根据ID查询用户
     * @param id
     * @return
     */
    @GetMapping("/{id}")
    public String users(@PathVariable("id") Integer id) {
        SysUser user = userService.selectUserById(1);
        return ResponseUtil.successJSONData(user);
    }
}

(3)UserDao.java#

package com.csdn.dao;

import com.csdn.entity.SysUser;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;

@Repository
public interface UserDao {
    /**
     * 根据ID查询用户
     * @param id 用户ID
     * @return
     */
    @Select("select * from sys_user where id=#{id}")
    public SysUser selectUserById(Integer id);
}

(4)SysUser.java#

package com.csdn.entity;

import com.alibaba.fastjson.annotation.JSONField;
import lombok.Data;
import java.io.Serializable;

@Data
public class SysUser implements Serializable {

    /**
     * 主键ID
     */
    @JSONField(ordinal = 1)
    private Integer id;
    /**
     * 用户名
     */
    @JSONField(ordinal = 2)
    private String username;
    /**
     * 密码
     */
    @JSONField(ordinal = 3)
    private String password;

    /**
     *性别
     */
    @JSONField(ordinal = 4)
    private String sex;
}

(5)UserService.java#

package com.csdn.service;


import com.csdn.entity.SysUser;

public interface UserService {
    /**
     * 查询用户
     *
     * @param id 用户ID
     * @return
     */
    public SysUser selectUserById(Integer id);
}

(6)UserServiceImpl.java#

package com.csdn.service.impl;

import com.csdn.dao.UserDao;
import com.csdn.entity.SysUser;
import com.csdn.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    /**
     * 查询用户
     *
     * @param id 用户ID
     * @return
     */
    public SysUser selectUserById(Integer id) {
        SysUser user = userDao.selectUserById(id);
        return user;
    }

}

(7)ResponseUtil.java#

package com.csdn.util;


import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;

/**
 * @Date 2021年11月20日
 * @Description 统一返回结果
 */
public class ResponseUtil extends JSONObject {

    /**
     * @param code
     * @param msg
     * @param data
     * @return java.lang.String
     * @name successJSONData
     * @description 自定义返回状态码,提示信息,响应数据
     */
    public static String successJSONData(int code, String msg, Object data) {
        return toJSONString(new BaseUtil(code, msg, data));
    }

    /**
     * @param msg
     * @param data
     * @return java.lang.String
     * @name successJSONData
     * @description 响应成功返回200,需自定义响应信息和响应数据
     */
    public static String successJSONData(String msg, Object data) {
        return toJSONString(new BaseUtil(200, msg, data));
    }

    /**
     * @param data
     * @return java.lang.String
     * @name successJSONData
     * @description 请求成功返回200,"请求成功"字样,需传入响应数据data
     */
    public static String successJSONData(Object data) {
        return toJSONString(new BaseUtil(200, "请求成功", data));
    }

    /**
     * @param
     * @return java.lang.String
     * @name successJSONData
     * @description 请求成功,默认返回200,不需要传入任何参数,多用于增、删、改操作
     */
    public static String successJSONData() {
        return toJSONString(new BaseUtil(200, "操作成功", null));
    }

    /**
     * @param code
     * @param msg
     * @param data
     * @return java.lang.String
     * @name errorJSONData
     * @description 请求失败,自定义返回状态码,提示信息,响应数据
     */
    public static String errorJSONData(int code, String msg, Object data) {
        return toJSONString(new BaseUtil(code, msg, data));
    }

    /**
     * @param msg
     * @param data
     * @return java.lang.String
     * @name errorJSONData
     * @description 请求失败,默认返回500,需自定义提示信息,响应数据
     */
    public static String errorJSONData(String msg, Object data) {
        return toJSONString(new BaseUtil(500, msg, data));
    }

    /**
     * @param code
     * @param msg
     * @return java.lang.String
     * @name errorJSONData
     * @description 请求失败,需自定义返回状态码,提示信息,响应数据默认为null
     */
    public static String errorJSONData(int code, String msg) {
        return toJSONString(new BaseUtil(code, msg, null));
    }

    /**
     * @param
     * @return java.lang.String
     * @name errorJSONData
     * @description 请求失败,默认返回500,不需要传入任何参数,多用于增、删、改操作
     */
    public static String errorJSONData() {
        return toJSONString(new BaseUtil(500, "系统异常,操作失败!", null));
    }

    /**
     * @param msg
     * @return java.lang.String
     * @name errorJSONData
     * @description 请求失败,默认返回500,需自定义提示信息
     */
    public static String errorJSONData(String msg) {
        return toJSONString(new BaseUtil(500, msg, null));
    }

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    static class BaseUtil implements Serializable {

        /*响应状态码*/
        private int code;

        /*响应信息*/
        private String msg;

        /*响应数据*/
        private Object data;
    }
}

(8)SpringbootDemoMybatisApplication.java#

package com.csdn;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan("com.csdn.dao")
public class SpringbootDemoMybatisApplication {

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

}

五、程序运行结果

访问地址:http://localhost:8080/users/1

六、简单总结

本章教程只是简单的整合了一下mybatis,其实里面还有更多的配置参数,在这里没有做详细说明,需要了解更多相关资料可以前往mybatis官网文档查看。

作者:YangRoc

出处:https://www.cnblogs.com/YangRoc/p/17186446.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   Roc-xb  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!

易微帮源码


易微帮官网

more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示