Mybatis在Spring boot里面的简单使用

Spring Boot中利用YAML配置MyBatis-Plus 阅读详情

在 Spring Boot 项目中整合 MyBatis 实现 Mapper 层开发,需遵循以下核心步骤和关键实现细节,结合多个最佳实践案例:


一、项目基础配置

1. 添加依赖

在 pom.xml 中引入 MyBatis 核心依赖及数据库驱动:

<!-- MyBatis Spring Boot Starter -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.3.0</version>  <!-- 根据Spring Boot版本选择,需要符合Spring boot版本号 -->
</dependency>
<!-- MySQL驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>
2. 数据源配置

在 application.properties 或 application.yml 中配置数据库连接和 MyBatis 参数,修改一下配置,数据库名称,密码,用户:

spring:
  datasource:
    url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  mapper-locations: classpath:mapper/*.xml  # XML映射文件路径
  type-aliases-package: com.example.model   # 实体类包别名
  configuration:
    map-underscore-to-camel-case: true      # 字段名驼峰转换

二、Mapper 层实现方式

1. 注解方式(适合简单SQL)

通过 @Mapper 或 @MapperScan 声明接口,并直接编写 SQL 注解:

@Mapper
public interface UserMapper {
    // 查询所有用户(@Results处理字段映射)
    @Select("SELECT id, user_name, create_time FROM user")
    @Results({
        @Result(property = "userName", column = "user_name"),
        @Result(property = "createTime", column = "create_time")
    })
    List<User> findAll();

    // 动态参数插入(@Param绑定参数)
    @Insert("INSERT INTO user(user_name, password) VALUES(#{name}, #{pwd})")
    int insert(@Param("name") String name, @Param("pwd") String password);
}

优势:代码简洁,无需 XML 文件;局限:复杂 SQL 或动态条件处理不便。

2. XML 方式(推荐复杂场景)

• Step 1:定义接口

@Mapper
public interface UserMapper {
    User findById(Long id);
    int updateUser(User user);
}

• Step 2:创建 XML 映射文件(resources/mapper/UserMapper.xml)

<mapper namespace="com.example.mapper.UserMapper">
    <select id="findById" resultType="User">
        SELECT * FROM user WHERE id = #{id}
    </select>

    <update id="updateUser" parameterType="User">
        UPDATE user
        <set>
            <if test="userName != null">user_name = #{userName},</if>
            <if test="password != null">password = #{password}</if>
        </set>
        WHERE id = #{id}
    </update>
</mapper>

优势:支持动态 SQL(如 <if>、<choose> 标签),便于维护复杂查询。


三、关键实现细节

1. 实体类映射

• 字段名映射:通过 @Result 注解或 XML 的 <resultMap> 解决数据库字段与实体类属性不一致问题。
• Lombok 简化代码:使用 @Data 注解自动生成 Getter/Setter(需添加 Lombok 依赖)。

2. 动态 SQL 实现

在 XML 中使用 MyBatis 动态标签:

<select id="findByCondition" resultType="User">
    SELECT * FROM user
    <where>
        <if test="name != null">AND user_name LIKE #{name}</if>
        <if test="minAge != null">AND age >= #{minAge}</if>
    </where>
</select>

支持条件分支、循环等复杂逻辑。

3. 事务管理

在 Service 层添加 @Transactional 注解实现事务控制:

@Service
public class UserService {
    @Autowired
    private UserMapper userMapper;

    @Transactional
    public void updateUserWithTx(User user) {
        userMapper.updateUser(user);
        // 其他数据库操作
    }
}

四、常见问题解决

  1. Mapper 接口未被扫描
    • 方案1:在启动类添加 @MapperScan("com.example.mapper")
    • 方案2:每个 Mapper 接口单独添加 @Mapper 注解
    注意一下包放的位置。每个包

  2. 包的体系结构
    需要严格遵守这个包结构,否则会出现包无法扫描的结果。

     src/
     ├── main/
     │   ├── java/
     │   │   └── com.example/
     │   │       ├── controller/       # 表示层
     │   │       ├── service/          # 业务逻辑层
     │   │       ├── mapper/           # 数据访问层接口
     │   │       └── entity/           # 数据库实体
     │   └── resources/
     │       ├── mapper/               # MyBatis XML文件
     │       ├── application.yml       # 全局配置
     │       └── mybatis-config.xml    # 高级配置(可选)
     └── test/                         # 单元测试
    

五、总结

• 注解 vs XML:简单查询优先用注解,复杂动态 SQL 用 XML
• 性能优化:结合二级缓存、批量操作(@Options 注解)提升效率
• 扩展性:通过自定义 TypeHandler 处理特殊数据类型(如 JSON 字段)

Spring Boot与MyBatis Spring Boot是一个用于创建独立的、基于Spring的生产级应用程序的框架,它简化了Spring应用的初始搭建以及开发过程。MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。将Spring Boot和MyBatis结合使用,可以高效地开发数据驱动的应用程序。 阅读详情

相关推荐

Spring,Spring Boot中使用MyBatis简单教程

Spring,Spring Boot中使用MyBatis简单教程 1. 概述 MyBatis是Java应用程序中实现SQL数据库访问最常用的开源框架之一。 在这个快速教程中,我们将介绍如何将MyBatis与Spring和Spring Boot集成 2. 定义数据库模型 首先,让我们从定义简单的POJO开始,我们将在下文使用它: public class Article { private Long id; private String title; private String au

kerongao的博客 516

【Mybatis】配置yml小结

在Spring Boot中,配置文件通常使用YAML(YAML Ain't Markup Language)格式,因为它比传统的properties文件更易读且更有表现力。YAML文件以`.yml`作为文件扩展名。

慕白Lee的博客 1939

MCGS 和 200SMART 时间同步

在实际应用中,PLC经常会因为断电原因,导致时间不准确。假设我们设置了一个投加泵,每天8-18点投加。屏幕上显示的时间和PLC内部的时间,很可能不一样。所以需要在触摸屏上读取PLC的时间,并且提供设置功能。

mmxxoo_xxmmp的博客 1520

mybatis-plus 3.0.6 yml 配置

叙述 收集了mybatis-plus 3.0.6 基于 yml 配置,方便以后使用和优化。 配置 mybatis-plus: #外部化xml配置 #config-location: classpath:mybatis-config.xml #指定外部化 MyBatis Properties 配置,通过该配置可以抽离配置,实现不同环境的配置部署 #configuration-properties: classpath:mybatis/config.properties #xml扫.

lizhengyu891231的博客 2265

【中软软件测试笔试题】中国软件与技术服务股份有限公司笔试一卷

请分别写出ISO7层架构,并分别说明TCP、UDP协议分别在处于哪一层,以及TCP、 UPD协议有什么区别。 答:7 应用层 6 表示层 5 会话层 4 传输层 3网络层 2 数据链路层 1 物理层 第四层;UDP是面向无连接、不可靠数据传输协议; TCP是面向连接、可靠数据传输协议......

Yanan990830的博客 1815

centos7下100T存储扩容(LVM)至150T

查看新增磁盘情况lsblk,fdisk -l [root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sr0 11:0 1 4.2G 0 rom vda 252:0 0 80G 0 disk ├─vda1 252:1 0 1G 0 part /boot └─vda2 252:2

tiyager的博客 1025

【六】SpringBoot集成MyBatis-yml自动化配置原理详解

简介:spring boot整合mybatis开发web系统目前来说是市面上主流的框架,每个Java程序和springboot mybatis相处的时间可谓是比和自己女朋友相处的时间都多,但是springboot mybatis并没有得到你的真爱,因为你只是为了养活你女朋友而委曲求全的和spring boot mybatis假意相处。这里我们要看spring-boot-autoconfigure,找到META-INF\spring.factories,这些就是我们配置的数据库相关的配置了。

作者:大头兵(kit) 5741

Innovus ECO修复时序违例:ecoAddRepeater插Buffer原理与实战

芯片物理设计越到后期,时序收敛越依赖局部修正而非全局重跑。ECO(Engineering Change Order)作为数字后端高频操作,能在不破坏既有布局布线结果的前提下,精准修复DRV违例、hold时序问题或实现功能补丁。其中,插入Buffer或Inverter是拆解长线RC负载、改善max_transition/max_capacitance最直接的手段。Innovus提供的ecoAddRepeater命令封装了单元选择、坐标摆放和网表重连等底层细节,配合ecoRoute可快速完成绕线。合理选型Buf

weixin_31858171的博客 300

MyBatis学习:使用外部yaml或yml或properties文件配置MyBatis所用的数据库信息

我本人正在学习MyBatis框架,在原先了解并且懵懵懂懂使用的基础上,开始系统正式的学习。阐述了MVC架构模式和三层架构,回顾了JDBC连接数据库,建立了使用MyBatis和MySQL的Maven项目,解释了STDOUT_LOGGING日志和手动提交事务,记录了MyBatis中#占位符的使用方法,回顾了MyBatis执行SQL语句的过程和使用到的一些重要类和接口,记录了将固定化的代码整合到一个工具类MyBatisUtil中,以减少代码量。记录了dao层接口的实现以及为什么要实现它。

weixin_46281472的博客 3264

快速配置ORCAD导出智能PDF原理图

在OrCAD 中导出类似Altium Designer的智能PDF(即交互式PDF);

QingNing3028的博客 3946

图像去雾常见数据集

上述数据集涵盖了室内、室外、真实和合成等多种场景,可以满足不同研究需求。在选择数据集时,建议根据具体任务的应用场景和目标选择合适的数据集,例如真实雾天图像适合模型的实际应用验证,而合成数据则适合模型的快速迭代和训练。希望本文能为从事图像去雾研究的朋友提供一些帮助!

m0_68604571的博客 6334

Spring Boot整合MyBatis实现简单的CRUD

这篇文章主要针对java初学者,详细介绍如何创建一个基本的springboot项目来对数据库进行crud操作。

沐雨橙风ιε的博客 4487

30天入门 SAP BTP 开发系列之十四: 将 SAP Business Application Studio 里开发好的 Node.js 应用部署到 Cloud Foundry 环境中

本教程详细介绍了如何将SAP Business Application Studio中的Node.js应用部署到Cloud Foundry环境。在完成本地开发和测试后,通过cf login命令连接Cloud Foundry环境,配置manifest.yml文件指定应用参数和路由信息。使用cf push命令完成应用的上传和部署,最终使应用运行在SAP BTP的云端环境中。教程包含从路由创建到部署验证的完整流程,确保开发者能够成功将Node.js应用发布到生产环境。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1080

[ Spring ] Spring Boot Mybatis++ 2025

[ Spring ] Spring Boot Mybatis++ 2025

天天向上 Up Up Up (*^▽^*) 3536

QT开发技术 [QXlsx 导出大量数据的崩溃大坑]

QXlsx 是一个基于 Qt 框架开发的开源库,用于读写 Excel 文件(.xlsx 格式),无需依赖 Microsoft Office 或第三方库。以下从多个方面为你详细介绍 QXlsx:主要特性读写功能:支持创建、读取和修改 Excel 文件,能处理单元格的数值、公式、格式等基本操作。样式设置:可以设置单元格的字体、颜色、对齐方式、边框等样式,还能创建自定义样式并应用到多个单元格。图表支持:支持创建多种类型的图表,如柱状图、折线图、饼图等,并能对图表的样式和属性进行配置。

weixin_45397344的博客 653

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Spring Boot整合MyBatis

在开发中,通常会涉及到对数据库的数据进行操作,Spring Boot在简化项目开发以及实现自动化配置的基础上,对关系型数据库和非关系型数据库的访问操作都提供了非常好的整合支持。Spring Boot默认采用整合SpringData的方式统一处理数据访问层,通过添加大量自动配置,引入各种数据访问模板xxxTemplate以及统一的Repository接口,从而达到简化数据访问层的操作。Spring Boot提供的常见数据库依赖启动器名称对应数据库。

梁辰兴的博客 1万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

Spring Boot 集成 mybatis 浅析

SpringBoot是对Spring框架的封装增强,通过Starter依赖管理和自动配置机制简化开发。它提供spring-boot-starter-*依赖包自动管理兼容版本,利用@EnableAutoConfiguration基于条件注解实现零配置启动。核心仍为Spring Framework,默认集成SpringMVC但支持多种应用类型。自动配置通过扫描classpath组件实现,开发者也可手动集成非官方模块。相比传统Spring,SpringBoot显著减少了配置工作量,使开发者能快速构建生产级应用。

chxii的专栏 1220

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

spring boot+mybatis开发基础复习

spring boot+mybatis复习

2201_75999403的博客 962

Spring Boot 集成 MyBatis 全面讲解

ResultMap用于自定义数据库字段与 Java 对象属性的映射。它支持嵌套映射、别名和字段处理,适合复杂的对象映射场景。SqlSessionMapper配置文件和ResultMap是 MyBatis 的核心概念。通过灵活的配置和映射,MyBatis 可以高效地处理各种复杂的数据库操作需求。熟练掌握这些特性可以让开发者在项目中更高效地处理数据访问逻辑。三、Spring Boot 集成 MyBatisMyBatis 是一种轻量级的持久层框架,与 Spring Boot 集成后可以极大地提升开发效率。

旺旺小崔崔的博客 2235

【Spring Boot】基于MyBatis的条件分页

条件分页是平常工作生产中十分常见的场景。储存过程还流行的年代,喜欢把分页逻辑封装在储存过程里,称之为数据库分页。甚至在前端,我们也可以通过对Array的操作实现前端分页。 本篇文章主要还是在Spring Boot框架上基于MyBatis来实现分页,并且引申出诸如分页数据封装对象,PageHelpe辅助工具和MyBatis XML中实现条件语句这些工作中实用的点,希望能帮助到大家。

Arabys的博客 1161

Spring Boot中MyBatis的定义与使用

在 Spring Boot 中,MyBatis 是一个通过少量配置就能集成的高效、灵活、SQL-centric 的持久层框架。它完美地结合了 Spring Boot 的自动配置优势和开发者对 SQL 的完全控制能力,是许多需要精细操作数据库和进行 SQL 优化的项目的首选。

BillKu的博客 722

Spring Boot 中使用 MyBatis-Spring-Boot-Starter

Spring Boot 中使用 MyBatis-Spring-Boot-Starter 本文将使用 MyBatis-Spring-Boot-Starter 在Spring Boot中建立 Mybatis 应用。 本文将实现: 构建一个独立应用 将JDBC模板代码减少到最小值(接近0) 更少的XML配置 版本要求 MyBatis-Spring-Boot-Starter MyBatis-Spring Spring Boot Java 2.2 2.0(2.0.6以上解锁所有功能) 2.5或以上

ljinest 1万+
上一篇: MySQL基础SQL语法
下一篇: Mybatis的动态SQL和结果映射
小李不秃头♛
博客等级 码龄2年 619粉丝 102原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值