十四.Springboot-MyBatis集成

Springboot 集成Mybatis MyBatis 是一个灵活且强大的数据持久化框架,它允许开发者控制 SQL 执行并提供了多种映射功能。与 Spring Boot 集成后,能够利用 Spring Boot 的自动配置和便利性,简化配置和开发过程。通过以上步骤,你可以快速地将 MyBatis 集成到 Spring Boot 项目中,充分发挥两者的优势,提高开发效率和系统的可维护性。 阅读详情

14.1 步骤分析

1 准备一个Springboot项目
2 pom-引入Mybatis Stater
3 yml配置
4 入口类
5 写代码测试

image-20201226191846380

14.2 实现

14.2.1 准备一个Springboot项目

14.2.2 pom-引入Mybatis Stater

<!-- spring-boot整合mybatis -->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>1.1.1</version>
</dependency>
<!-- mysql驱动 -->
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.38</version>
</dependency>

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok
           导入这个jar后,编译后会自动生成相关方法
        -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.8</version>
    <scope>provided</scope>
</dependency>

14.2.3 yml配置

​

server:
  port: 8080 #端口
spring:
  application:
    name: springboot-hello # 应用名称
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    username: root
    password: admin
    url: jdbc:mysql:///test?useUnicode=true&characterEncoding=UTF-8
mybatis:
  type-aliases-package: org.yaosang.org.domain,org.yaosang.org.query

14.2.4 入口类

​

package org.yaosang;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

//标识改项目为springboot项目
@SpringBootApplication //复合注解
@MapperScan("org.yaosang.*.mapper")
public class App {//可以是任何名称
    //springboot启动类,以后以main方法的方式就可以启动Springboot的项目。
    public static void main(String[] args) {
        SpringApplication.run(App.class,args);
    }
}

14.2.4 写代码测试

  1. Domain

    package org.yaosang.org.domain;
    
    import lombok.Data;
    
    //实体类
    @Data
    public class Department {
        private Integer id;
        private String name;
    
        public Department(String name) {
            this.name = name;
        }
    
        public Department() {
        }
    }
    
  2. Mapper&Mapper.xml

    package org.yaosang.org.mapper;
    
    import org.yaosang.org.domain.Department;
    
    import java.util.List;
    
    //Mapper接口
    public interface DepartmentMapper {
        //保存一个对象
        void save(Department department);
        //通过id移除一个对象
        void remove(Long id);
        //更新对象
        void update(Department department);
        //通过id加载对象
        Department loadById(Long id);
        //加载所有对象
        List<Department> loadAll();
    }
    
    
    <?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">
    <!--namespace和Mapper接口同包并同名-->
    <mapper namespace="org.yaosang.org.mapper.DepartmentMapper">
        <!--void save(Department department);-->
        <insert id="save" parameterType="Department">
            insert into t_department(name) values(#{name})
        </insert>
        <!--void remove(Long id);-->
        <delete id="remove" parameterType="long">
            delete from t_department where id = #{id}
        </delete>
    
        <!--void update(Department department);-->
        <update id="update" parameterType="Department">
            update t_department set name = #{name}
            where id = #{id}
        </update>
        <!--Department loadById(Long id);-->
        <select id="loadById" resultType="Department">
            select * from t_department where id = #{id}
        </select>
        <!--Department loadAll();-->
        <select id="loadAll" resultType="Department">
            select * from t_department
        </select>
    </mapper>
    
  3. Service

    package org.yaosang.org.service;
    
    import org.yaosang.org.domain.Department;
    
    import java.util.List;
    
    //业务类接口
    public interface IDepartmentService {
        //添加一个对象
        void add(Department department);
        //通过id删除一个对象
        void del(Long id);
        //更新对象
        void update(Department department);
        //通过id获取对象
        Department getById(Long id);
        //获取所有对象
        List<Department> getAll();
    }
    
    
    package org.yaosang.org.service.impl;
    
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    import org.yaosang.org.domain.Department;
    import org.yaosang.org.mapper.DepartmentMapper;
    import org.yaosang.org.service.IDepartmentService;
    
    import java.util.List;
    
    //业务实现类
    @Service
    public class DepartmentServiceImpl implements IDepartmentService {
        @Autowired
        private DepartmentMapper departmentMapper;
        @Override
        public void add(Department department) {
    
            departmentMapper.save(department);
        }
    
        @Override
        public void del(Long id) {
    
            departmentMapper.remove(id);
        }
    
        @Override
        public void update(Department department) {
    
            departmentMapper.update(department);
        }
    
        @Override
        public Department getById(Long id) {
            return departmentMapper.loadById(id);
        }
    
        @Override
        public List<Department> getAll() {
            return departmentMapper.loadAll();
        }
    }
    
    
  4. Test

    package org.yaosang.org.service.impl;
    
    import org.junit.Test;
    import org.junit.runner.RunWith;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.boot.test.context.SpringBootTest;
    import org.springframework.test.context.junit4.SpringRunner;
    import org.yaosang.App;
    import org.yaosang.org.domain.Department;
    import org.yaosang.org.service.IDepartmentService;
    
    import static org.junit.Assert.*;
    
    @RunWith(SpringRunner.class)
    @SpringBootTest(classes = App.class)
    public class DepartmentServiceImplTest {
        @Autowired
        private IDepartmentService departmentService;
    
        @Test
        public void add() {
            departmentService.add(new Department("屌丝部"));
        }
    
        @Test
        public void del() {
            Department department = departmentService.getById(1L);
            System.out.println(department);
            departmentService.del(1L);
            department = departmentService.getById(1L);
            System.out.println(department);
    
        }
    
        @Test
        public void update() {
            Department department = departmentService.getById(1L);
            System.out.println(department);
            department.setName(department.getName()+"-edit");
            departmentService.update(department);
            department = departmentService.getById(1L);
            System.out.println(department);
        }
    
        @Test
        public void getById() {
            System.out.println(departmentService.getById(1L));
        }
    
        @Test
        public void getAll() {
            departmentService.getAll().forEach(System.out::println);
        }
    }
    

14.3 小结

​ 本章节通过Springboot集成了Mybatis

springboot集成mybatis 在test文件中,先测试是否能联通数据库,可以自己在数据库中插入一个数据,然后测试时查询全部,看看能否将自己插入的。需要的一些数据,也可以不建,直接将这些数据放在application.properties文件下,不过格式得转换。在services下新建接口UserLoginServicesI和类UserLoginServicesImpl。输入用户名和密码,点击登录,如果数据库中存在该账号,则跳转到success页面,如果账号不存在,则显示用户名不存在,请先注册。张三已经注册成功,当然也可以实现登录了! 阅读详情

相关推荐

SpringBoot集成MyBatis-Plus

官网:https://mp.baomidou.com/ 1 简介 MyBatis-Plus 是一个Mybatis的增强工具,在 MyBatis 的基础上只做增强不做改变。也就是说,引入了MyBatis-Plus之后,如果不想使用它的功能,也不会影响MyBatis的使用。 MyBatis-Plus的特性在官网有详细说明。传送门 MyBatis-Plus最大的方便之处就是提供了通用的Mapper和Service,只需要通过简单的继承就可以支持单表大部分的CRUD操作,大大提高了开发效率。 2 Spri.

西瓜游侠的博客 2127

MyBatis源码解析系列之二十四:MyBatis与Spring Boot集成的性能优化

在实际开发中,性能优化是一个永恒的话题。MyBatis与Spring Boot集成时,通过一些优化措施,可以显著提升系统的性能和稳定性。在本篇文章中,我们详细介绍了MyBatis与Spring Boot集成的性能优化方法,包括使用连接池、优化SQL语句、缓存机制、分页查询和批量操作等。通过这些优化措施,开发者可以显著提升系统的性能和稳定性,满足复杂的业务需求。希望通过这些内容,大家能更深入地理解和使用MyBatis与Spring Boot的性能优化技术,提升开发效率和代码质量。

阿里渣渣java研发组-群主 831

SpringBoot 集成mybatis-plus

本篇博客,基于mybatis-plus官网,简单了解和实际运用mybatis-plusMyBatis-Plus 是 一个 MyBatis的增强工具,为简化springboot开发、提高效率而生。简介 | MyBatis-Plus。

m0_74824517的博客 1033

springboot mybatis ehcache_SpringBoot入门建站全系列(十四)集成Redis缓存

SpringBoot入门建站全系列(十四)集成Redis缓存一、概述本地缓存,就是使用应用内使用本地内存将数据暂缓存储,一般数据库的查询如果不怎么改动,可以用本地缓存暂存。远程缓存,比如redis,就是第三方缓存服务器,不是在当前应用的,需要用过tcp请求去获得的缓存。Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。 简单来说,它是一个以(key,value)的形...

weixin_39754267的博客 69

SpringBoot2.x系列教程(五十四)SpringBoot2.x集成Mybatis实战

市面上主流的ORM框架很多,而在国内甚至亚洲地区使用最多的当属Mybatis了,而国外更多使用的是JPA。本文就带大家学习如何通过Spring Boot集成Mybatis。 本篇文章先以集成Mybatis XML版本为例。何谓XML版本?就是对应的SQL语句写在*mapper.xml文件中,而非通过注解的形式实现。 Mybatis简介 MyBatis是一款优秀的持久层框架,它支持自定义SQL、存储...

程序新视界 1555

SpringBoot系列之集成Mybatis教程

SpringBoot系列之集成Mybatis教程 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </...

Nicky's blog 7278

SpringBoot集成MyBatis

SpringBoot 1. SpringBoot集成MyBatis 1.1 添加mybatis依赖,MySQL驱动 1.2 使用MyBatis提供的逆向工程生成实体Bean,映射文件,DAO接口 1.2.1 配置文件GeneratorMapper.xml 1.2.2 插件 1.2.3 成功生成映射文件,DAO接口,实体Bean 1.2.4 总结: 1.3 SpringBoot集成MyBatis测试 1.4 扫描DAO的注解——有两种@Mapper和@MapperScan() 1.5 问题:Ja

m0_67391377的博客 1万+

MyBatis和SpringBoot的集成——SpringBoot+MyBatis项目实战

1、什么是 MyBatis?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码并且使数据库操作变得简单一致。2、为什么要用 MyBatis?可以将 XML 配置文件中的数据库操作逻辑分离出来,即便是多个开发人员同时开发时也不会互相干扰,提高协作效率;提供详细的错误信息,可以很方便地定位到底出了哪里的问题;支持多种数据库系统,可以自动生成 SQL,适应不同数据库系统;

AI天才研究院 2209

SpringBoot——SpringBoot集成MyBatis

SpringBoot——SpringBoot集成MyBatis

贝尔摩德苦艾酒 9987

「点燃我,温暖你」用Python制作一个动态爱心效果

最近「点燃我,温暖你」这部剧非常火,讲述的是程序员的爱情故事。其中陈飞宇饰演的男主李峋,在剧中用程序做出的爱心跳动效果,非常炫。

Modeler_xiaoyu的博客 1万+

ArcMap新手必看:5分钟搞定面要素的四至信息提取(附字段重命名技巧)

本文为ArcMap新手提供了快速提取面要素四至信息的详细教程,包括数据准备、坐标系选择、批量处理技巧及字段重命名优化方案。通过实战步骤和Python脚本示例,帮助用户高效完成GIS数据处理任务,特别适合行政区划数据分析和报告生成。

weixin_29266007的博客 384

手把手教你springboot集成mybatis

很多小伙伴工作多年,但是在每次开始一个新项目的时候都要重新开始搭建项目。另一个就是新手小伙伴对于项目如何从零开始搭建的还存在疑问。在这片文章中,正好一次性解决这两个问题。这是该项目的首先,我们需要创建一个springboot项目。...

m0_67322837的博客 8723

LangChain4j-针对性操作Function-call+系统预设角色

如果我们想要对一些敏感信息进行针对化的操作,不仅仅是接口大模型去进行回复。比如我们现在数据库里面有一些菜品,那么用户提问,店里有多少套餐,那么云端大模型肯定是不知道的,我们希望捕获这些关键字然后进行自己的业务查询或者处理,这个时候就可以使用function-call。

DDDDDouble的博客 454

SpringBoot集成Mybatis 【图文教程】

本文介绍了SpringBoot与MyBatis集成开发的基本流程。SpringBoot简化了应用配置,MyBatis提供了灵活的SQL操作能力。集成步骤包括:添加依赖(SpringBoot和MyBatis starter)、配置数据源、创建实体类、Mapper接口与XML映射文件,以及实现Service层和Controller层。通过注解方式实现自动注入,最终构建了一个完整的用户管理REST API,包含查询、新增、修改和删除功能。这种组合既保持了开发效率,又确保了数据库操作的灵活性。

深耕 Java 后端与企业级软件架构设计,专注微服务、分布式系统、大模型 AI 应用架构落地。 1327

HIL(硬件在环)技术汇总梳理

HIL(Hardware-in-the-Loop)测试领域的知名公司有dSPACE、NI、Vector和speedgoat等,本文是针对这几家HIL技术的对比分析。

Mr.Cssust的博客 3687

Python量化交易入门:天勤量化TqSdk保姆级教程(含避坑指南)

本文提供Python量化交易入门指南,重点介绍天勤量化TqSdk的使用方法,包括环境配置、核心API实战、策略开发技巧及实盘部署。教程涵盖中国期货市场,帮助个人投资者快速掌握量化交易技术,避开常见陷阱。

weixin_29065791的博客 836

springboot集成MyBatis

记录mybatis学习

现在的我强的可怕 1613

解锁机器人逆运动学算法:从理论到实战

机器人逆运动学,简单来说,就是已知机器人末端执行器(如机械臂的手部、工具等)期望达到的位置和姿态,求解机器人各个关节需要达到的角度或位移的过程。在机器人的实际应用场景中,逆运动学起着不可或缺的作用。以工业制造中的焊接机器人为例,为了完成复杂的焊接任务,焊接头(末端执行器)需要精准地到达工件上的各个焊接点,并保持合适的姿态以确保焊接质量。这时,逆运动学算法就根据焊接点的三维坐标以及焊接头应有的姿态(如角度等),计算出机械臂各个关节的转动角度,从而控制机械臂带动焊接头准确地运动到目标位置。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 2053

SpringBoot集成MyBatis-plus

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。说明:QueryWrapper(LambdaQueryWrapper) 和 UpdateWrapper(LambdaUpdateWrapper) 的父类用于生成 sql 的 where 条件, entity 属性也用于生成 sql 的 where 条件。

qq_43548590的博客 9407

lammps教程:MS转data文件出错原因分析及解决办法

使用ms建模是lammps建模的一种重要方法,但是ms建模转换为data过程中经常会出现各种各样的错误。 ms模型转data文件流程分两部分,一是ms建模、forcite设置力场并导出car文件,二是msi2lmp将car转为data文件。 任何一个环节出错都会导致无法得到data文件,最容易出错的是forcite力场设置环节。 forcite力场设置出错原因有很多,一个原因是缺乏某类原子的力场参数。 msi2lmp软件只能转换cvff或pcff力场的car文件,因此,如果力场中不包含某类原子的参数,在设置

lammps_jiayou的博客 5062

API Streaming Failed 400 <400>InternalError.Algo.InvalidParameter input content must be a string解决方案

本文主要介绍了API Streaming Failed 400 <400> InternalError.Algo.InvalidParameter input content must be a string解决方案,希望能对使用vscode中cline的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

SpringBoot 集成 mybatis的四种方式

关于springBoot集成mybatis的方式,其实有很多,网上也有很多的案例,经过一系列参考和实践,大致有以下几种方式。 方式一 (使用注解形式,全程无MyBatis与Spring的配置文件) 1、添加依赖 <!-- mybatis --> <dependency> <groupId>org.mybatis.spring.boot</group...

真的愿意去努力,人生最坏的结果,也不过是大器晚成。 3054

廖雪峰Python教程[完整版]

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

Maven构建SpringBoot集成MyBatis

SpringBoot集成Mybatis、Maven,idea版一、新建由Maven构建的SpringBoot项目点击next下一步点击next下一步1.选择安装Maven路径2.选择Maven安装包里的配置文件3.选择Maven本地仓库注意:安装Maven需配置Maven,配置如下 一、新建由Maven构建的SpringBoot项目 点击next下一步 点击next下一步 1.选择安装Maven路径 2.选择Maven安装包里的配置文件 3.选择Maven本地仓库 注意:安装Maven需配置Maven

真心喜欢你吖研发工程师,记录学习笔记、问题解决方案、知识总结、知识分享;冲鸭! 3605

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

1. Springboot集成Mybatis

在深入理解mybatis源码之前,首先搭建mybatis的测试环境用于跟踪代码测试用。下面介绍两种springboot集成mybatis运行环境的案例。一种是通过springboot包装mybatis的构建过程,一种是自行构建Mybatis的执行环境。以查询user表为例,数据如下。

u010502101的博客 2950

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

SpringBoot6/springBoot集成MyBatis实战:从零开始构建数据访问层

SpringBoot6/springBoot是一个专注于SpringBoot学习的开源项目,提供了丰富的Demo代码,每个子项目对应一个SpringBoot知识点,代码开箱即用,非常适合新手学习或开发者复习。本文将详细介绍如何在该项目中集成MyBatis,从零开始构建高效的数据访问层。 ## 一、环境准备:快速搭建项目基础 要开始SpringBoot集成MyBatis的实战,首先需要准备好项目

gitblog_00631的博客 1034

SpringBoot 集成mybatis

1.2 启动类中开启事务代理 @EnableTransactionManagement(proxyTargetClass=true) 借助idea的 myBatis逆向生成工具EasyCode 等插件或者第三方其他工具生成代码 EasyCode 可以帮我们连接数据库,一键生成entity、dao、service、serviceimpl、controller、mapper,如下图安装好easyCode 插件后,在DataSoure 面板中添加我们对应的数据源后 点开连接选中对应的表右键在弹出的右键中选

tian830937的专栏 1685
上一篇: 十三 Springboot-spring data jpa
下一篇: 十五 Springboot-配置Spring事务
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值