中企动力制作的网站后台,新中式家具,汽车之家网页版,用户体验的重要性在Java企业级应用开发中#xff0c;SpringBoot和MyBatis的组合已经成为主流的技术选型方案之一。本文将详细介绍如何从零开始搭建一个基于SpringBoot和MyBatis的项目#xff0c;包括环境配置、数据库设计、实体类创建、Mapper接口编写以及实际应用等完整流程。
一、环境准备…在Java企业级应用开发中SpringBoot和MyBatis的组合已经成为主流的技术选型方案之一。本文将详细介绍如何从零开始搭建一个基于SpringBoot和MyBatis的项目包括环境配置、数据库设计、实体类创建、Mapper接口编写以及实际应用等完整流程。
一、环境准备
1.1 软件安装
首先需要安装以下软件 MySQL 5.7关系型数据库 Navicat数据库可视化工具可选但推荐
安装MySQL时需要注意配置好root用户的密码并确保服务正常启动。
1.2 数据库创建
我们创建一个名为black20250531的数据库并建立用户表
sql
复制
下载
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS 0;-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS user;
CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT COMMENT ID,avatar varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 头像,nick varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 昵称,name varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 用户名登录用户名不能重复,password varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 密码,role varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 角色,phone varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 电话,create_time timestamp NULL DEFAULT CURRENT_TIMESTAMP COMMENT 创建时间,code varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 邮箱验证码,recharge varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 充值记录,consume varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 消耗,balance varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT 余额,PRIMARY KEY (id) USING BTREE,UNIQUE INDEX 用户登录名称(name) USING BTREE
) ENGINE InnoDB AUTO_INCREMENT 110 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci ROW_FORMAT DYNAMIC;SET FOREIGN_KEY_CHECKS 1;
表设计特点 使用utf8mb4字符集支持完整的Unicode字符包括emoji 主键id自增 用户名name字段设置唯一索引 包含基本的用户信息和财务相关字段
二、SpringBoot项目配置
2.1 引入MyBatis依赖
在pom.xml中添加MyBatis Starter依赖
xml
复制
下载
运行
!--mybatis--
dependencygroupIdorg.mybatis.spring.boot/groupIdartifactIdmybatis-spring-boot-starter/artifactIdversion2.3.0/version
/dependency
2.2 数据库连接配置
在application.properties中配置数据库连接
properties
复制
下载
spring.datasource.driver-class-namecom.mysql.cj.jdbc.Driver
# mysql host and user password
spring.datasource.urljdbc:mysql://${host}:3306/black20250531?serverTimezoneGMT%2b8allowMultiQueriestrueuseAffectedRowstrue
spring.datasource.usernameroot
spring.datasource.passwordxxx
mybatis.mapper-locationsclasspath:mapper/*.xml
配置说明 使用MySQL Connector/J驱动 设置时区为GMT8中国标准时间 允许批量查询和使用受影响的行数 指定Mapper XML文件的位置
三、实体类与Mapper设计
3.1 用户实体类
java
复制
下载
package com.black.pojo;import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.black.service.PageService;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;import java.util.Date;
import java.util.List;Data // 直接带get与set
public class User implements PageService {TableId(type IdType.AUTO)private Integer id;private String avatar;private String nick;private String name;private String password;private String code;private String phone;private String recharge 0;private String consume 0;private String balance; // 余额JsonFormat(pattern yyyy-MM-dd HH:mm:ss, timezone GMT8)private Date createTime;private String role; // 角色TableField(exist false)private String newPassword;// 扣费成功标志TableField(exist false)private Boolean reduceFlag;//分页属性TableField(exist false)private Integer currentPage;TableField(exist false)private Integer pageSize;TableField(exist false)private Integer start;TableField(exist false)private Integer end;//批量删除idTableField(exist false)private ListInteger removeIdList;TableField(exist false)private String token; // 会话凭证TableField(exist false)private ListMenu menuList; // 用户拥有的菜单private String ability;
}
实体类特点 使用Lombok的Data注解简化代码 使用MyBatis Plus的TableId指定自增主键 TableField(exist false)标记非数据库字段 JsonFormat格式化日期输出
3.2 Mapper接口
java
复制
下载
package com.black.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.black.pojo.User;
import org.apache.ibatis.annotations.Param;import java.util.List;public interface UserMapper extends BaseMapperUser { // 继承BaseMapper即拥有了CRUD基本方法
}
3.3 MyBatis配置类
java
复制
下载
package com.black.config;import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;Configuration
MapperScan(com.black.mapper)
public class MybatisPlus {Beanpublic MybatisPlusInterceptor buildMybatisPlusInterceptor() {MybatisPlusInterceptor mybatisPlusInterceptor new MybatisPlusInterceptor();mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));return mybatisPlusInterceptor;}
}
配置说明 MapperScan指定Mapper接口扫描路径 配置MyBatis Plus分页插件
四、实际应用示例
在Controller中使用Mapper进行数据库操作
java
复制
下载
RestController
RequestMapping(/big)
public class BigController {ResourceUserMapper userMapper;PostMapping(/checkUser)public Res checkUser(RequestBody User user) {QueryWrapperUser userQueryWrapper new QueryWrapper();userQueryWrapper.eq(StringUtils.isNotBlank(user.getName()), name, user.getName());User existUser userMapper.selectOne(userQueryWrapper);if (existUser ! null) {return Res.error(用户名已存在);}return Res.success();}
}
代码解析 使用Resource注入UserMapper 创建QueryWrapper构建查询条件 调用selectOne方法查询单个用户 根据查询结果返回相应信息
五、MyBatis Plus的优势 简化CRUD操作继承BaseMapper即获得基本CRUD方法 强大的条件构造器通过QueryWrapper可以方便地构建复杂查询条件 分页插件内置分页功能简化分页查询实现 自动填充支持字段自动填充如创建时间、更新时间等 乐观锁内置乐观锁实现
六、常见问题解决 数据库连接失败 检查MySQL服务是否启动 检查连接URL、用户名和密码是否正确 检查数据库驱动版本是否匹配 表字段与实体类属性映射问题 确保数据库字段名与实体类属性名一致或使用TableField指定 检查是否配置了正确的驼峰命名转换 分页不生效 确保配置了分页插件 检查是否传入了正确的Page参数
七、总结
本文详细介绍了SpringBoot整合MyBatis的完整流程从环境准备到实际应用涵盖了数据库设计、实体类创建、Mapper接口编写以及基本CRUD操作。MyBatis Plus作为MyBatis的增强工具可以显著提高开发效率减少样板代码的编写。
在实际项目中还可以进一步探索 MyBatis Plus的自动填充功能 多数据源配置 复杂的动态SQL构建 二级缓存配置等高级特性