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
目录
(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 国际」许可协议进行许可。
如果本篇文章有帮助到你,你可以请作者喝杯咖啡表示鼓励 ☕️
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!