news 2026/7/14 4:09:33

数据访问: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/7/14 5:40:20

PaddlePaddle模型服务化部署:配合HTML界面实现可视化推理

PaddlePaddle模型服务化部署&#xff1a;配合HTML界面实现可视化推理 在智能系统日益普及的今天&#xff0c;一个训练得再精准的AI模型&#xff0c;如果无法被业务人员顺畅使用&#xff0c;其价值就会大打折扣。我们常看到这样的场景&#xff1a;算法工程师完成了OCR模型的优化…

作者头像 李华
网站建设 2026/7/12 17:43:17

openFuyao多样化算力使能

一、引言&#xff1a;算力多样化时代的挑战与机遇1.1 当前算力发展趋势在数字经济快速发展的时代&#xff0c;算力已成为新型生产力的核心驱动力。当前算力发展呈现出显著的多样化特征&#xff1a; *异构硬件普遍化*&#xff1a;CPU、GPU、NPU、FPGA等多种处理器架构并存&#…

作者头像 李华
网站建设 2026/7/13 19:06:23

3.1IT治理

1、IT治理的驱动因素&#xff1a;解决信息孤岛 2、IT治理主要目标包括&#xff1a;与业务目标一致、有效利用信息与数据资源、风险管理。 3、管理层次分为三层&#xff1a;最高管理层、执行管理层、业务与服务执行层。 4、IT治理体系的具体构成包括&#xff1a;IT定位、IT治理架…

作者头像 李华
网站建设 2026/7/14 2:36:57

中小企业的营销“暖心伙伴”——北京易美之尚,让增长不再难

“深夜改完的营销方案&#xff0c;投出去却石沉大海&#xff1b;花大价钱引的流量&#xff0c;转头就成了‘一次性过客’”——这大概是很多中小企业主的日常焦虑。在互联网营销的浪潮里&#xff0c;不是不想冲&#xff0c;而是怕方向错&#xff1b;不是没投入&#xff0c;而是…

作者头像 李华
网站建设 2026/7/12 9:32:10

Excalidraw链接功能全解析:超链接与跳转处理

Excalidraw链接功能全解析&#xff1a;超链接与跳转处理 在远程协作日益频繁的今天&#xff0c;一张图是否“能点”&#xff0c;往往决定了它是装饰还是生产力工具。许多团队还在用静态截图传递信息时&#xff0c;另一些人已经通过 Excalidraw 构建起可交互的知识网络——点击一…

作者头像 李华