不废话Spring Boot(四)整合Mybatis

SpringBoot快速教程四整合Mybatis-plus SpringBoot3版本整合最新版Mybatis-plus的教程方便自己日常无缝迁移,那么来了,本篇教程就是基于SpringBoot3.3.4整合最新版的Mybatis-plus的3.5.7的SpringBoot3专属版本,希望大家可以和之前的Mybatis做一下对比,俗话说,没有对比,就没有伤害! 阅读详情

简介

上一节学习了在Spring Boot里通过JPA方式访问数据库,除此之外,还有一种以编写SQL为核心的方式(上一节中有详细介绍),就是通过整合Mybatis来操作数据库,今天再来学习一下在Spring Boot整合Mybatis,Mybatis框架已经很流行了,就不介绍太多了。

整合Mybatis

首先在POM文件里添加Mybatis的依赖

<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.0.0</version>
</dependency>

然后加入MySQL驱动依赖

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>

参考上一节代码内容,配置数据库连接信息

spring.datasource.url=jdbc:mysql://localhost:3306/springbootstudy?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=123456

spring.jpa.properties.hibernate.hbm2ddl.auto=update
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect
spring.jpa.show-sql=true

以上,整合Mybatis的工作就可以了。

无配置文件版本

接下来我们创建数据库表,和上一节一样

CREATE TABLE user (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) DEFAULT NULL,
  `addr` varchar(255) DEFAULT NULL,
  `company` varchar(255) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

对应实体类 

package org.dothwinds.springbootstudy.model;

import java.io.Serializable;

public class User implements Serializable {
    private Long id;
    private String name;
    private String company;
    private String addr;

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getCompany() {
        return company;
    }

    public void setCompany(String company) {
        this.company = company;
    }

    public String getAddr() {
        return addr;
    }

    public void setAddr(String addr) {
        this.addr = addr;
    }
}

把对应的数据库及实体类都创建完了,接下来编写代码操作数据表。不管哪种方式,SQL都是不可缺少的,Mybatis本身就鼓励写SQL而不是像Hibernate自动生成。编写Mapper接口,这块是核心内容,SQL处理都在这里,编写增删改查功能

package org.dothwinds.springbootstudy.dao;

import org.apache.ibatis.annotations.*;
import org.dothwinds.springbootstudy.model.User;

@Mapper
public interface UserMapper {
    @Insert("insert into user(name, addr, company) values(#{name}, #{addr}, #{company})")
    int add(@Param("name") String name, @Param("addr") String addr, @Param("company") String company);

    @Update("update user set name = #{name}, addr = #{addr}, company=#{company} where id = #{id}")
    int update(@Param("name") String name, @Param("addr") String addr,@Param("company") String company , @Param("id") long  id);

    @Delete("delete from user where id = #{id}")
    int delete(@Param("id") long  id);

    @Select("select * from user where id = #{id}")
    User findUserById(@Param("id") int id);
}

编写UserService,只写了增加和删除功能

package org.dothwinds.springbootstudy.service;

import org.dothwinds.springbootstudy.dao.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public int add(String name, String addr, String company) {
        return userMapper.add(name, addr, company);
    }

    public int delete(long id) {
        return userMapper.delete(id);
    }

}

编写UserController

package org.dothwinds.springbootstudy.controller;

import org.dothwinds.springbootstudy.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/addUser")
    public String addUser(@RequestParam(value = "name") String name, @RequestParam(value = "addr") String addr, @RequestParam(value = "company") String company){
        int result = userService.add(name, addr, company);
        if (result == 1) {
            return "success";
        } else {
            return "fail";
        }
    }

    @GetMapping("/deleteUser")
    public String deleteUser(@RequestParam(value = "id") long id){
        int result = userService.delete(id);
        if (result == 1) {
            return "success";
        } else {
            return "fail";
        }
    }
}

然后启动服务进行测试返回成功,数据库里也存在。

在测试一下删除也返回成功,数据库里也被删除掉了

 

配置文件版本 

 先指定配置文件都放在哪里,在application.properties里加入配置文件存放位置

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

修改mybatis-config,指定java类型别名,也可以加入一些基础配置,比如数据源之类等等

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
    <typeAliases>
        <typeAlias alias="Integer" type="java.lang.Integer" />
        <typeAlias alias="Long" type="java.lang.Long" />
        <typeAlias alias="VARCHAR" type="java.lang.String" />
    </typeAliases>
</configuration>

接下来就是把相关SQL操作放到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="org.dothwinds.springbootstudy.dao.UserMapper" >
    <resultMap id="BaseResultMap" type="org.dothwinds.springbootstudy.model.User" >
        <id column="id" property="id" jdbcType="BIGINT" />
        <result column="name" property="name" jdbcType="VARCHAR" />
        <result column="addr" property="addr" jdbcType="VARCHAR" />
        <result column="company" property="company" javaType="VARCHAR"/>
    </resultMap>

    <sql id="Base_Column_List" >
        id, name, addr, company
    </sql>

    <insert id="add" parameterType="java.lang.String" >
        INSERT INTO
        user
        (name,addr,company)
        VALUES
        (#{name}, #{addr}, #{company})
    </insert>


    <delete id="delete" parameterType="java.lang.Long">
        DELETE FROM
        user
        WHERE
        id =#{id}
    </delete>
</mapper>

DAO接口变简单了,只有对应的调用方法了

package org.dothwinds.springbootstudy.dao;

import org.apache.ibatis.annotations.Param;

public interface UserMapper {
    /*
    无配置注解方式的代码
    @Insert("insert into user(name, addr, company) values(#{name}, #{addr}, #{company})")
    int add(@Param("name") String name, @Param("addr") String addr, @Param("company") String company);

    @Update("update user set name = #{name}, addr = #{addr}, company=#{company} where id = #{id}")
    int update(@Param("name") String name, @Param("addr") String addr,@Param("company") String company , @Param("id") long  id);

    @Delete("delete from user where id = #{id}")
    int delete(@Param("id") long  id);

    @Select("select * from user where id = #{id}")
    User findUserById(@Param("id") int id);
     */

    //配置文件版本
    int add(@Param("name") String name, @Param("addr") String addr, @Param("company") String company );

    int delete(@Param("id") long  id);
}

其余的Controller和Service都不用做变化,测试都没问题

一些需要注意的地方

SQL写到配置文件里,需要配置的内容比较多,大概注意几点:

1,在application.properties文件里,要写明mybatis config和mapper xml的文件路径,比如:

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

2, 别忘记写 @MapperScan(basePackages = {"org.dothwinds.springbootstudy.dao"}) ,其作用为指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现类,也就是需要找到DAO在哪

3,mapper xml文件和具体的DAO要对应好,重点看mapper xml里的namespace指定,如下:

<mapper namespace="org.dothwinds.springbootstudy.dao.UserMapper" >

代码地址:码云

Spring Boot从入门到进阶教程系列 -- MyBatis配置,数据库选择器和分页方言实现 上一个教程我们讲解如何配置数据源示例,本次我们将接着上个教程的成果来整合MyBatis配置,如需看上篇教程的同学可点击链接【Spring Boot从入门到进阶教程系列 -- Druid数据源初始化配置】 下面我们直接开启代码之旅步骤1. 编写数据库枚举,列举我们常用的数据库类型public enum DBType { DB2("DB2"), Derby("Derby"), HSQL("HSQL... 阅读详情

相关推荐

Spring Boot入门(12):从零开始!轻松掌握Spring Boot整合MyBatis-Plus的最佳实践!

一文吃透SpringBoot整合mybatis-plus及实战演练,赶紧来学!

**My Coding Family** 1万+

Mybatis分页插件

1. Mybatis分页插件 - PageHelper说明 如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。 该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。 点击提交BUG 2. 版本说明 2.1. 最新版本为3.7.5 PageInfo中的judgePageBoudary方法修

qq_34590943的博客 700

RAG在医药行业为什么80%都翻车了?

这篇文章不是要劝你别做RAG,而是把坑说清楚。医药行业有它的特殊性——监管压力、专业术语密度、多语言混排、文档结构复杂——这些因素叠加在一起,让标准RAG教程里的那套方法论几乎直接失效

qq_31808385的博客 635

spring-boot 集成mybatis的分页插件PageHelper和Generator (番外)

分页插件PageHelper 参看了pagehelper-spring-boot,使用起来非常放方便。 添加maven依赖 根据上面地址中的说明,只需要添加如下依赖,并且可以不再mybatis的依赖 com.github.pagehelper pagehelper-spring-boot-starter 1.0.0

zl 4万+

android osmdroid 加载常用离线地图格式(开源的在线地图)

osmdroid是(几乎)完整/免费更换为Android MapView(v1 API)类。它还包括一个模块化的瓷砖供应商系统支持众多的在线和离线瓷砖来源和覆盖支持内置覆盖绘制图标,跟踪位置和形状。如果想在你项目中使用osmdroid,绝对是灵活度最高,不用申请百度,高德等的key。还有一堆规则要遵循。osmdroid可以支持多图层叠加,绘制自已的图层。离线加载常用地图格式zip,sqlite,.

mmsx990的博客 1万+

华为OD机试真题 新系统【小花获胜的奶茶】

华为OD机试真题 新系统【小花获胜的奶茶】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【小花获胜的奶茶】多语言题解。

qq_45776114的博客 384

Spring Boot学习(十六):Spring Boot整合pagehelper(Mybatis分页神器)

前言 Spring Boot系列: 点击查看Spring Boot系列文章 PageHelper 要说MyBatis最常用的分页插件是什么?那一定非PageHelper不可了。 下面是官方的介绍 MyBatis 分页插件 PageHelper 如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。 Spring Boot集成PageHelper 下面,我们就在Spring Boot集成PageHelper 1、pom.xml添加依赖 注意:

qq_36551991的博客 2355

宇树科技嵌入式面试题及参考答案(春晚机器人的公司)

内存对齐是指在内存中为数据对象分配存储空间时,按照一定的规则将数据存储在特定的地址上,以提高内存访问效率。不同的数据类型在内存中都有其特定的对齐要求,例如,int类型通常要求 4 字节对齐,double类型通常要求 8 字节对齐。这意味着数据的存储地址必须是其对齐字节数的整数倍。如果不进行内存对齐,处理器在访问数据时可能需要进行多次内存访问,从而降低了访问效率。指令可以用于控制结构体内存布局,它允许程序员指定结构体成员的对齐方式。其基本用法是在结构体定义之前使用来指定对齐字节数n,其中n。

大模型大数据攻城狮的专栏 3225

Mybatis,Springboot对Mybatis的整合及Mybatis基础操作案例

1.Mybatis 官网地址: https://mybatis.org/mybatis-3/zh/index.html 介绍 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。 MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。 MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 Java POJO(Plain Old Java Objects,普通老式 Java 对象)为数据库中的记录。 MyBatis 本是apac

qq_764694767的博客 1122

YOLOv11改进 | 损失函数改进篇 | MPDIoU、InnerMPDIoU助力细节涨点(二次创新 + 代码解析)

本文为读者详细介绍了YOLOv11模型的最新改进,带来的改进机制是最新的损失函数MPDIoU和融合了最新的Inner思想的InnerMPDIoU(效果打爆之前的所有的损失函数提升检测精度和处理细节方面的作用。通过深入探讨MPDIoU和InnerMPDIoU(全网首发)的工作原理和实际代码实现,本文旨在指导读者如何将这些先进的损失函数技术应用到YOLOv11模型中,以提高其性能和准确性。文章内容涵盖从理论基础、代码实现,到实际教你如何添加本文的机制到你的模型中。

Snu77的博客 4024

CE电流法测试中的dBμV负值解析

传导发射(CE)电流法测试中出现的dBμV负值现象表明被测设备干扰电平低于1μV参考基准。这源于对数计算特性(小于1μV的电压转换后为负值)、设备优良的EMC设计(如滤波效果显著)及测试环境的影响(LISN隔离、屏蔽室低噪声)。负值虽不代表实际负电压,但反映干扰水平优于标准限值,为系统集成预留电磁裕度。工程应用中需结合设备灵敏度、环境背景噪声等因素综合分析,避免误判,这类数据可用于评估EMI设计冗余度。

硬核科技 298

Spring Boot3.3.X整合Mybatis-Plus

解决Spring boot整合mybatis-plus后不能实现mybatis-plus自带的方法,出现Invalid bound statement (not found)错误,仅需导入一个依赖轻松搞定

qq_53376718的博客 2万+

QGIS编译(跨平台编译)001:Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

QGIS编译;Flex、Bison编译(安装)(Windows、Linux、MacOS环境下安装)

LuckyHanMo的博客 3080

Spring Boot-整合MyBatis

*将自定义的 Druid数据源添加到容器中,不再让 Spring Boot 自动创建绑定全局配置文件中的 druid 数据源属性到 com.alibaba.druid.pool.DruidDataSource从而让它们生效@ConfigurationProperties(prefix = “spring.datasource”):作用就是将 全局配置文件中。

2401_85112189的博客 1015

YOLO十年演进:从CNN到Transformer再到MoE,我看懂了2026年目标检测的落地风向标

技术永远是为业务服务的,能解决真实问题的技术,才是有价值的。YOLO的十年演进,从CNN到Transformer再到MoE,从来都不是学术上的炫技,而是一步一步解决工业落地的痛点:从让实时检测成为可能,到解决复杂场景的漏检误检,再到打破精度和算力的死局,每一步都踩在了工业落地的真实需求上。很多新入行的朋友,总喜欢追新,今天换Transformer,明天堆MoE,觉得模型越新、参数越大,就越厉害。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 748

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

spring boot整合mybatis

前面,我们将数据库环境在本地搞定了,是时候来搞定Spring Boot与Mybatis的整合了。废话不多说,开整!

felix_alone2012的博客 185

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

自写Spring boot+Mybatis整合教程

是否

weixin_44001753的博客 253

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

Spring Boot——整合MyBatis

用简单的例子和代码讲解SpringBoot利用Druid连接池整合MyBatis。

一心同学的博客 942

spring boot +springMVC +mybatis整合踩过的坑

刚刚接触spring boot 不久,目前对spring boot的最直观的理解是spring boot 通过注解的方式大大减少了spring 原有的配置文件。最近做的就是将原有的spring +springMVC+mybatis的工程改造成springboot+springMVC+mybatis。废话不多说,下面是改造过程中遇到的坑: 1.Application启动类的位置 首先Appl

qq_15980815的博客 2469

Spring Boot整合MyBatis

都说好记性不如烂笔头,每天写一点,从量变到质变的开始!废话不多说,以下所有内容均来自本人实际操作: 1.开发环境 Windows10+JDK8+IntelliJ IDEA+MySQL+Spring Boot+MyBatis+Lombok 2.案列需求 通过实现指令的添删改查,了解Spring Boot与MyBatis的整合(有关MyBatis的具体使用请参阅MyBatis官网) 3.数据库初始化准备 连接数据库执行如下脚本

weixin_42759726的博客 181
上一篇: 不废话Spring Boot(三)访问数据库
下一篇: Hadoop启停服务命令大全
呼吸先生
博客等级 码龄21年 57粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值