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项目
二、引入依赖文件
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-web
2.5.6
org.mybatis.spring.boot
mybatis-spring-boot-starter
2.2.0
mysql
mysql-connector-java
5.1.27
com.alibaba
druid
1.2.8
com.alibaba
fastjson
1.2.78
三、创建数据库脚本
MySQL数据库脚本:
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;
@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 {
@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 {
@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 {
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;
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;
public class ResponseUtil extends JSonObject {
public static String successJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String successJSonData(String msg, Object data) {
return toJSonString(new baseUtil(200, msg, data));
}
public static String successJSonData(Object data) {
return toJSonString(new baseUtil(200, "请求成功", data));
}
public static String successJSonData() {
return toJSonString(new baseUtil(200, "操作成功", null));
}
public static String errorJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String errorJSonData(String msg, Object data) {
return toJSonString(new baseUtil(500, msg, data));
}
public static String errorJSonData(int code, String msg) {
return toJSonString(new baseUtil(code, msg, null));
}
public static String errorJSonData() {
return toJSonString(new baseUtil(500, "系统异常,操作失败!", null));
}
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);
}
}
五、程序运行结果
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;
@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 {
@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 {
@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 {
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;
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;
public class ResponseUtil extends JSonObject {
public static String successJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String successJSonData(String msg, Object data) {
return toJSonString(new baseUtil(200, msg, data));
}
public static String successJSonData(Object data) {
return toJSonString(new baseUtil(200, "请求成功", data));
}
public static String successJSonData() {
return toJSonString(new baseUtil(200, "操作成功", null));
}
public static String errorJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String errorJSonData(String msg, Object data) {
return toJSonString(new baseUtil(500, msg, data));
}
public static String errorJSonData(int code, String msg) {
return toJSonString(new baseUtil(code, msg, null));
}
public static String errorJSonData() {
return toJSonString(new baseUtil(500, "系统异常,操作失败!", null));
}
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);
}
}
五、程序运行结果
package com.csdn.dao;
import com.csdn.entity.SysUser;
import org.apache.ibatis.annotations.Select;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao {
@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 {
@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 {
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;
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;
public class ResponseUtil extends JSonObject {
public static String successJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String successJSonData(String msg, Object data) {
return toJSonString(new baseUtil(200, msg, data));
}
public static String successJSonData(Object data) {
return toJSonString(new baseUtil(200, "请求成功", data));
}
public static String successJSonData() {
return toJSonString(new baseUtil(200, "操作成功", null));
}
public static String errorJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String errorJSonData(String msg, Object data) {
return toJSonString(new baseUtil(500, msg, data));
}
public static String errorJSonData(int code, String msg) {
return toJSonString(new baseUtil(code, msg, null));
}
public static String errorJSonData() {
return toJSonString(new baseUtil(500, "系统异常,操作失败!", null));
}
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);
}
}
五、程序运行结果
package com.csdn.service;
import com.csdn.entity.SysUser;
public interface UserService {
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;
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;
public class ResponseUtil extends JSonObject {
public static String successJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String successJSonData(String msg, Object data) {
return toJSonString(new baseUtil(200, msg, data));
}
public static String successJSonData(Object data) {
return toJSonString(new baseUtil(200, "请求成功", data));
}
public static String successJSonData() {
return toJSonString(new baseUtil(200, "操作成功", null));
}
public static String errorJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String errorJSonData(String msg, Object data) {
return toJSonString(new baseUtil(500, msg, data));
}
public static String errorJSonData(int code, String msg) {
return toJSonString(new baseUtil(code, msg, null));
}
public static String errorJSonData() {
return toJSonString(new baseUtil(500, "系统异常,操作失败!", null));
}
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);
}
}
五、程序运行结果
package com.csdn.util;
import com.alibaba.fastjson.JSONObject;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
public class ResponseUtil extends JSonObject {
public static String successJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String successJSonData(String msg, Object data) {
return toJSonString(new baseUtil(200, msg, data));
}
public static String successJSonData(Object data) {
return toJSonString(new baseUtil(200, "请求成功", data));
}
public static String successJSonData() {
return toJSonString(new baseUtil(200, "操作成功", null));
}
public static String errorJSonData(int code, String msg, Object data) {
return toJSonString(new baseUtil(code, msg, data));
}
public static String errorJSonData(String msg, Object data) {
return toJSonString(new baseUtil(500, msg, data));
}
public static String errorJSonData(int code, String msg) {
return toJSonString(new baseUtil(code, msg, null));
}
public static String errorJSonData() {
return toJSonString(new baseUtil(500, "系统异常,操作失败!", null));
}
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官网文档查看。



