news 2026/5/19 23:26:46

数据访问:MyBatisMybatis-Plus

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
数据访问:MyBatisMybatis-Plus

Spring Boot集成MyBatis

Spring Boot集成MyBatis的步骤

添加依赖pom.xml文件中添加MyBatis和数据库驱动依赖。以MySQL为例:

<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> <scope>runtime</scope> </dependency>

配置数据源application.propertiesapplication.yml中配置数据库连接信息:

spring.datasource.url=jdbc:mysql://localhost:3306/your_database spring.datasource.username=your_username spring.datasource.password=your_password spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

创建实体类定义与数据库表对应的实体类:

public class User { private Long id; private String name; private Integer age; // getters and setters }

创建Mapper接口使用注解或XML方式编写Mapper接口。注解方式示例:

@Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); @Insert("INSERT INTO user(name, age) VALUES(#{name}, #{age})") int insert(User user); }

启用Mapper扫描在启动类上添加@MapperScan注解扫描Mapper接口:

@SpringBootApplication @MapperScan("com.example.mapper") public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } }

XML配置方式(可选)如果需要使用XML配置SQL,在application.properties中指定XML路径:

mybatis.mapper-locations=classpath:mapper/*.xml

测试使用在Service或Controller中注入Mapper进行测试:

@RestController public class UserController { @Autowired private UserMapper userMapper; @GetMapping("/user/{id}") public User getUser(@PathVariable Long id) { return userMapper.findById(id); } }

常见问题解决

TypeHandler配置如需自定义类型处理器,可通过以下配置:

mybatis.type-handlers-package=com.example.handler

驼峰命名转换启用数据库字段到实体类的自动驼峰转换:

mybatis.configuration.map-underscore-to-camel-case=true

多数据源配置需额外配置多个DataSource和SqlSessionFactory,并使用@Qualifier区分不同Bean。

MyBatis-Spring-Boot-Starter 简介

MyBatis-Spring-Boot-Starter 是 MyBatis 官方为 Spring Boot 提供的快速集成依赖,简化了 MyBatis 与 Spring Boot 的配置和整合过程。通过自动配置和默认约定,开发者可以快速实现数据库操作。

核心功能

  • 自动配置:自动配置SqlSessionFactorySqlSessionTemplate,无需手动编写 XML 配置。
  • Mapper 扫描:支持自动扫描 Mapper 接口并注册为 Spring Bean。
  • 事务管理:与 Spring 事务管理无缝集成,支持@Transactional注解。

依赖配置

pom.xml中添加以下依赖(以 Maven 为例):

<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>3.0.3</version> <!-- 使用最新版本 --> </dependency>

需配合数据库驱动(如 MySQL):

<dependency> <groupId>com.mysql</groupId> <artifactId>mysql-connector-j</artifactId> <scope>runtime</scope> </dependency>

基础配置

application.propertiesapplication.yml中配置数据源和 MyBatis 属性:

# 数据源配置 spring.datasource.url=jdbc:mysql://localhost:3306/test spring.datasource.username=root spring.datasource.password=123456 spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver # MyBatis 配置 mybatis.mapper-locations=classpath:mapper/*.xml # XML 映射文件路径 mybatis.type-aliases-package=com.example.model # 实体类别名包

使用示例

  1. 定义 Mapper 接口
    使用@Mapper注解标记接口:

    @Mapper public interface UserMapper { @Select("SELECT * FROM user WHERE id = #{id}") User findById(Long id); }
  2. 实体类定义

    public class User { private Long id; private String name; // Getter/Setter 省略 }
  3. Service 层调用

    @Service public class UserService { @Autowired private UserMapper userMapper; public User getUserById(Long id) { return userMapper.findById(id); } }

高级配置

  • XML 映射文件
    若使用 XML 编写 SQL,需在resources/mapper目录下创建文件(如UserMapper.xml):

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.example.mapper.UserMapper"> <select id="findById" resultType="User"> SELECT * FROM user WHERE id = #{id} </select> </mapper>
  • 多数据源支持
    需手动配置多个SqlSessionFactoryDataSource,并通过@Qualifier指定 Bean。

常见问题

  • Mapper 扫描失败
    确保启动类添加@MapperScan("com.example.mapper")或 Mapper 接口标注@Mapper
  • 事务不生效
    检查是否启用事务管理(默认已启用)并在方法上添加@Transactional

版本兼容性

  • Spring Boot 3.x:需使用 MyBatis-Spring-Boot-Starter 3.x。
  • Spring Boot 2.x:兼容 Starter 2.x 版本。

通过上述配置和示例,可以快速完成 MyBatis 在 Spring Boot 中的集成与开发。

SpringBoot集成MyBatis-Plus

MyBatis-Plus概述

MyBatis-Plus(简称MP)是一款基于MyBatis的增强工具,旨在简化开发、提高效率。它在不改变MyBatis原有功能的基础上,提供了通用的CRUD操作、条件构造器、分页插件等特性,显著减少手动编写SQL的工作量。

核心特性

内置通用CRUD
通过继承BaseMapper接口,可直接实现单表的增删改查操作,无需编写XML或注解SQL。例如:

userMapper.insert(user); // 插入 userMapper.selectById(1); // 查询

条件构造器
提供QueryWrapperUpdateWrapper等工具,支持链式调用构建复杂查询条件:

QueryWrapper<User> wrapper = new QueryWrapper<>(); wrapper.lambda().eq(User::getName, "Alice").gt(User::getAge, 20); userMapper.selectList(wrapper);

分页插件
通过PaginationInterceptor实现物理分页,与条件构造器无缝集成:

Page<User> page = new Page<>(1, 10); // 当前页, 每页数量 userMapper.selectPage(page, wrapper);

代码生成器
支持通过模板引擎自动生成Entity、Mapper、Service等代码,快速搭建项目基础结构。

优势与适用场景

  • 减少样板代码:自动生成SQL,降低手写错误风险。
  • 与MyBatis兼容:原有MyBatis功能可正常使用,无侵入性。
  • 适合快速开发:尤其适用于后台管理系统、标准化业务模块开发。

扩展功能

  • 乐观锁:通过@Version注解实现并发控制。
  • 逻辑删除:配置@TableLogic注解标记软删除字段。
  • 动态表名:支持运行时动态解析表名,适用于分表场景。

MyBatis-Plus通过简化持久层操作,显著提升开发效率,是MyBatis生态中的高效补充工具。

Lombok概述

Lombok是一个Java库,通过注解方式简化代码编写,自动生成getter/setter、构造方法、日志变量等样板代码,减少冗余代码量,提升开发效率。

核心功能

@Getter/@Setter
自动生成字段的getter和setter方法,支持类级别或字段级别使用。

@ToString
生成包含所有字段的toString()方法,可通过exclude参数排除特定字段。

@EqualsAndHashCode
自动实现equals()hashCode()方法,基于字段值比较。

@NoArgsConstructor/@AllArgsConstructor
生成无参构造方法和全参构造方法。

@Data
组合注解,包含@Getter@Setter@ToString@EqualsAndHashCode@RequiredArgsConstructor的功能。

@Slf4j/@Log4j
自动为类注入日志对象(如log),支持多种日志框架。

使用示例

@Data @AllArgsConstructor @NoArgsConstructor public class User { private String name; private int age; } // 自动生成getter/setter、toString、equals/hashCode及构造方法 User user = new User("Alice", 30); System.out.println(user.getName());

集成方式

  1. Maven依赖
<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.18.24</version> <scope>provided</scope> </dependency>
  1. IDE插件
    安装Lombok插件(如IntelliJ IDEA需通过插件市场安装),确保注解生效。

注意事项

  • 编译时依赖:Lombok在编译阶段生成代码,无需运行时依赖。
  • 反射问题:部分框架(如Hibernate)可能依赖getter/setter,需确认兼容性。
  • 代码可读性:过度使用可能降低代码显式逻辑的清晰度。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/19 17:14:24

别墅地源热泵怎么埋管

别墅地源热泵系统埋管施工全流程解析在别墅地源热泵系统设计中&#xff0c;地下埋管环节是决定系统运行效率与稳定性的关键所在。作为拥有53项专利的地源热泵技术领先企业&#xff0c;瑞冬集团结合多年别墅项目实践经验&#xff0c;为您详细解析地源热泵埋管的专业技术要点。埋…

作者头像 李华
网站建设 2026/5/10 6:57:05

监控网络实施

需求&#xff1a;公司共计6个监控区域&#xff0c;各监控区域摄像头数量20个。核心交换机使用的是S6520-30SG-SI。各监控区域使用的直连交换机是S5024X-EI。一、梳理6个区域共计120个摄像头&#xff0c;核心交换机&#xff08;S6520-30SG-SI&#xff09;与接入交换机&#xff0…

作者头像 李华
网站建设 2026/5/9 21:40:21

Jenkins Font Awesome API插件:现代化插件界面的图标引擎

在Jenkins的生态系统中&#xff0c;用户界面&#xff08;UI&#xff09;的直观性和美观性对于提升用户体验至关重要。长期以来&#xff0c;许多Jenkins插件依赖于过时的Tango图标集&#xff0c;这在视觉上和功能上都已无法满足现代Web应用的需求。Font Awesome API插件的出现&a…

作者头像 李华
网站建设 2026/5/18 15:02:33

Jenkins Pipeline共享库(Shared Library)完全指南

Jenkins的 Pipeline: Groovy Libraries插件 是实现“流水线即代码”的关键&#xff0c;它通过**共享库&#xff08;Shared Library&#xff09;**机制&#xff0c;让团队能将通用的Pipeline逻辑&#xff08;如构建、部署步骤&#xff09;封装起来&#xff0c;供所有项目复用&am…

作者头像 李华
网站建设 2026/5/13 8:29:36

多语言国际打车平台 (PangudiDi)项目介绍说明

一、项目背景及简介项目概述PangudiDi 是一个基于 uni-app 框架开发的多语言国际打车平台&#xff0c;专为海外市场设计&#xff0c;特别针对阿拉伯语地区&#xff08;如也门&#xff09;的出行需求。平台采用现代化的移动端技术栈&#xff0c;提供完整的乘客端和司机端解决方案…

作者头像 李华