Spring boot整合Mybatis二:使用注解方式实现与数据库交互

Spring Boot整合MyBatis全攻略:原理剖析与最佳实践 传统Spring项目中整合MyBatis需要配置大量XML和Bean,而Spring Boot通过自动配置和starter机制,实现了"开箱即用"的MyBatis集成体验。零XML配置:基于注解和Java Config的配置方式自动配置:自动发现DataSource、SqlSessionFactory等简化分页:内置分页插件支持强大扩展:支持通用Mapper、MyBatis-Plus等增强工具Spring Boot与MyBatis的整合为Java开发者提供了高效、灵活的数据访问解决方案。 阅读详情

Spring boot整合Mybatis一中我新建了一个整合了MyBatis的Spring boot工程。现在此工程架构上作编码操作,使用注解方式实现与数据库交互。(写博客期间工作事务耽搁了一下,所以有些类的创建日期不同。)

1、新增几个包,改application.properties文件为application.yml(这样使配置更简洁,少写很多前缀),现工程机构如下:

2、 配置pom.xml文件,增加json依赖,增加lombok插件引用,配置启动路径。下面是我的pom文件全部:

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.aigov.springboot-mybatis</groupId>
    <artifactId>springboot-mybatis</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-mybatis</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
            <version>2.0.1</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- 增加json依赖 -->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.12</version>
        </dependency>
        <!-- 增加lombok插件引用-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <!-- 配置启动入口路径 -->
                <configuration>
                    <mainClass>com.aigov.springbootmybatis.springbootmybatis.SpringbootMybatisApplication</mainClass>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

3、配置application.yml文件:端口,数据库。下面是我的application.yml文件全部内容:

server:
  port: 8001

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    name: test
    url: jdbc:mysql://localhost:3306/aigov_core?characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=GMT%2B8
    username: root
    password: 123456
  mvc:
    servlet:
      path: /springboot_mybatis

以上项目基础配置就完成了。

4、用mysql的客户端Navicat 新建一个student表,表结构:

5、新建实体类 Student.java,这里用到了lombok的@Data注解,省去了geter seter.下面是我的Student 类的全部:

package com.aigov.springbootmybatis.springbootmybatis.domain;

import lombok.Data;

/**
 * @author : aigoV
 * @date :2019/5/7
 * 对应数据表的学生实体类
 **/
@Data
public class Student {
    private Integer n_id;
    private String c_xm;
    private Integer n_nl;
    private String c_xb;
}

6、编写dao层的 mapper接口 StudentMapper.java。以下是该文件里的代码:

package com.aigov.springbootmybatis.springbootmybatis.mapper;

import com.aigov.springbootmybatis.springbootmybatis.domain.Student;
import org.apache.ibatis.annotations.*;

/**
 * @author : aigoV
 * @date :2019/5/14
 * 定义学生的增删改查接口
 * 这里就是用注解的方式实现与数据库交互
 **/
@Mapper
public interface StudentMapper {
    /**
     * 新增学生信息
     * @param s
     * @return
     */
    @Insert("INSERT INTO aigov_core.student (n_id,c_xm,n_nl,c_xb) VALUES(#{n_id},#{c_xm},#{n_nl},#{c_xb});")
    int addStudent(Student s);

    /**
     * g根据学生id删除学生信息
     * @param n_id
     * @return
     */
    @Delete("DELETE FROM aigov_core.student WHERE n_id = #{n_id}")
    int deleteStuById(@Param("n_id") Integer n_id);

    /**
     * 根据姓名修改学生信息
     * @param n_nl
     * @param c_xm
     * @return
     */
    @Update("UPDATE aigov_core.student SET n_nl = #{n_nl} WHERE c_xm = #{c_xm}")
    int updateStudent(@Param("n_nl") Integer n_nl,@Param("c_xm") String c_xm);

    /**
     * 根据性别查询学生信息
     * @param c_xb
     * @return
     */
    @Select("SELECT * FROM aigov_core.student WHERE c_xb = #{c_xb}")
    Student findByXb(@Param("c_xb") String c_xb);
}

7、service业务层--处理相关业务。

在这个案例里没有复杂业务要处理,所以你可能会感觉这一层没有存在意义。实际工作中业务是重中之重,所以我还是按照三层架构思想把这一层写出来,便于新手了解。

package com.aigov.springbootmybatis.springbootmybatis.service;

import com.aigov.springbootmybatis.springbootmybatis.domain.Student;
import com.aigov.springbootmybatis.springbootmybatis.mapper.StudentMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;


/**
 * @author : aigoV
 * @date :2019/5/14
 * 处理学生对象信息的业务层
 **/
@Service
public class StudentService {

    @Autowired
    StudentMapper studentMapper;//如果这里报错:注入不了。就在mapper类上加一个 @Component

    /** 插入学生信息 **/
    public void addStu(Student s){
        studentMapper.addStudent(s);
    }

    /** 删除学生信息 **/
    public void deleteStu(int n_id){
        studentMapper.deleteStuById(n_id);
    }

    /**修改学生信息*/
    public void upddateStu(Integer n_nl,String c_xm){
        studentMapper.updateStudent(n_nl,c_xm);
    }

    /** 查询学生信息**/
    public Student findStu(String c_xb){
        return studentMapper.findByXb(c_xb);
    }

}

8、控制层

主要把处理前端发送过来得到请求,并在这里将相应请求转发给相应业务层处理。

我这里前端使用postman,模拟发送请求。这里对请求相关不做详解,简单了解一下,之后会再写个详细的基于Springboot框架下的请求及响应的demo。

控制层简单解释及代码如下:

@RestController:相当于@ResponseBody+@Controller

@RequestMapping("/xxx"):处理请求地址的映射,若用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。

package com.aigov.springbootmybatis.springbootmybatis.controller;

import com.aigov.springbootmybatis.springbootmybatis.domain.Student;
import com.aigov.springbootmybatis.springbootmybatis.service.StudentService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * @author : aigoV
 * @date :2019/5/14
 * 学生信息--控制层
 **/
@RestController
public class StudentController {

    @Autowired
    StudentService studentService;

    //增加
    @RequestMapping("/addStu")
    public void addStu(Student s){
         studentService.addStu(s);
    }

    //删除
    @RequestMapping("/deleteStu")
    public void deleteStu(int n_id){
        studentService.deleteStu(n_id);
    }

    //更新
    @RequestMapping("/updateStu")
    public void updateStu(int n_nl,String c_xm){
        studentService.upddateStu(n_nl,c_xm);
    }

    //查询
    @RequestMapping("/findStu")
    public Student findStu(String c_xb){
        return studentService.findStu(c_xb);
    }

}

9、启动入口类

添加事务注解  @EnableTransactionManagement。详细代码如下:

package com.aigov.springbootmybatis.springbootmybatis;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;

@EnableTransactionManagement
@SpringBootApplication
public class SpringbootMybatisApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringbootMybatisApplication.class, args);
    }

}

10、测试:

启动项目

保证mysql本地服务处于开启状态

打开postman 模拟发送请求,开始测试。(没有postman,百度下载安装)

测试每一个方法,全部通过,数据库数据正确发生变更:

至此,基于Springboot+mybatis的sql注解开发方式的案例写完了,有问题欢迎交流斧正。

注:

1、我在编写过程中出现的小bug及解决办法:

https://blog.youkuaiyun.com/aigoV/article/details/90202671

https://blog.youkuaiyun.com/aigoV/article/details/90201572

 

 

 

 

Spring Boot 整合 MyBatis 前言 下面就讲解下 Springboot 如何整合 MyBatis,这里使用的是xml配置SQL而不是用注解。主要是 SQL 和业务代码应该隔离,方便和 DBA 校对 SQL。 项目源代码 https://github.com/JasperZXY/TestSpringCloud/tree/master/boot-feature 由于我很多功能放在同一个项目里面,所以代码看起 阅读详情

相关推荐

Spring boot整合Mybatis三:使用xml配置文件方式实现与数据库交互

Spring boot整合Mybatis二中,我使用注解方式实现了与数据库交互。 先看那一下Spring boot整合Mybatis二中,工程在经过一系列操作后的目录结构和文件,我将在此基础上实现:使用xml配置方式访问数据库的需求: 为了便于与注解方式的类和代码区分对比,我引入一个新的对象:教师类。 1、mysql数据库新建一张教师信息表 teacher: 2、domain文件夹...

aigoV的博客 1507

SpringBoot整合Mybatis(注解方式)

1.dao层先创建数据库存的类 附上源码 public class Department { private Integer id;//职位id private String departmentName;//职位名 public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public Strin

weixin_51656756的博客 1732

Spring Boot 进阶-详解Spring Boot与其他框架整合

通过一个MyBatis自动注入的小例子,我们分析了整个的Spring Boot在做框架整合的时候需要注意的几个点。首先就是选择对应的启动器;第二就是要注意条件注入;第三注意自动注入的原理以及第四点需要注意的就是自动注入的静态内部类完成的是对自动注入的扩展操作。当然对于这其中的一些其他内容详解,会在后续的分享中为大家呈现,希望大家可以多多关注多多支持。

初学者 2022

SpringBoot整合MyBatis(纯注解版)

准备 本篇文章内容主要讲解SpringBoot如何用纯注解方式整合MyBatis,毕竟SpringBoot的优势就是配置量减少,再写繁复的配置文件不是SpringBoot的风格,因此本篇文章就抛弃配置文件,全面拥抱注解。 本篇文章开始前,已默认读者搭建好了SpringBoot基础框架,并已创建好了一个测试数据库;本文所需的框架目录结构与数据库测试表如下所示: 项目目录结构: 测试数据库: SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- --------

JavaFeng 6621

idea+springboot+mybatis+jsp+bootstrap实现从mysql查询出数据并显示(源码)

http://blog.youkuaiyun.com/madcode2222222222222/article/details/79142581

springboot demo 实现与数据库交互

springboot的入门demo,可以用来体会springboot的启动和开发原理,自己写的,亲测成功!访问地址:http://localhost:8080/test/get http://localhost:8080/user/get

SpringBoot整合Mybatis-plus操作数据库

SpringBoot项目中整合Mybatis-plus操作数据库

justdoit936的博客 599

SAP采购订单行项目增强实战:用BADI ME_GUI_PO_CUST添加自定义字段(避坑指南)

本文详细解析了如何通过BADI ME_GUI_PO_CUST在SAP采购订单行项目中添加自定义字段,包括技术架构理解、字段扩展步骤、自定义函数组创建及BADI实现。文章特别强调了避开官方文档未提及的陷阱,如字段映射限制和屏幕显示问题,并提供了高级优化技巧和性能建议。

weixin_30402343的博客 595

Mybatis实现数据库交互的原理

Mybatis实现数据库交互的原理一、JDBC二、反射+jdk动态代理 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Old Java Objects,普通的 Java对象)映射成数据库中的记录。 一、JDBC Java语言访问数据库的一种规范,是一套API。JDBC (Java

jike11231的博客 4452

土地利用数据从1972到2023:如何利用Landsat和Sentinel数据构建长期变化监测模型

本文详细解析了如何利用1972至2023年的Landsat和Sentinel遥感数据构建土地利用长期变化监测模型。通过多源数据融合策略、时间序列预处理流程和深度学习算法,实现高精度的土地利用分类与变化检测,为生态评估和城市规划提供科学依据。文章还探讨了验证方法和实际应用案例,展示了长期遥感数据在环境建模中的独特价值。

weixin_28720573的博客 445

【论文翻译】VIT:An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale

VIT摘要介绍相关工作模型VISION TRANSFORMER (VIT)微调和高分辨率实验结论 摘要 虽然Transformer架构在自然语言处理任务中已经成为事实标准,但是它在计算机视觉领域的应用仍然受限。在视觉领域,注意力要么和卷积网络结合使用,要么替换卷积网络中的某些部分,同时保持整体结构不变。本文表明对CNNs的依赖不是必要的,纯转换器(pure transformer)直接应用于图像块(image patches)序列在图像分类任务中能发挥很好的作用。当对大量数据进行预训练并把它转移到多个中型或

栗子菜菜 1846

MyBatis和数据库的交互的两种方式

MyBatis和数据库的交互有两种方式: 方式一、原始的dao调用mybatis 1.需要定义dao接口 2.需要实现dao接口 3.在dao接口实现类上注入sqlSessionFactory,创建sqlSessionFactory时需要读取mapper.xml到内存 4.然后通过创建sqlSession对象来调用mapper中的sql语句(sqlSession....

沉下心来,戒骄戒躁 2356

Win10系统权限深度解析:如何安全地将C盘所有者从TrustedInstaller变更为Administrators

本文深入解析了Win10系统中C盘文件权限管理的核心机制,解释了为何管理员账户(Administrators)默认无法修改由TrustedInstaller保护的系统文件。文章在强调安全风险的前提下,详细提供了通过图形界面和命令行两种方式,将文件或文件夹所有权从TrustedInstaller安全变更为Administrators的实操步骤,并给出了关键的风险预警与权限恢复方法。

weixin_29305313的博客 549

Spring boot整合MyBatis-Flex实现查询、更新、新增、删除以及分页的注解与XML方式教程

阐述了在Spring Boot项目中整合MyBatis-Flex的过程,旨在实现高效、灵活的数据库操作。首先,通过添加MyBatis-Flex、MySQL驱动和Druid数据源等依赖,构建起项目的基础环境。接着,配置了Druid数据源,优化了数据库连接管理。在创建好用户表后,设计了对应的Java实体类,确保与数据库表结构的完美映射。随后,定义了Mapper接口,使用MyBatis-Flex的注解来实现增删改查操作,并通过测试类验证了功能的正确性。

qq_27628229的博客 5031

RAG——从0到1快速搭建RAG应用

本文介绍了基于LangChain框架构建RAG(检索增强生成)应用的技术方案,涵盖核心模块选型与实现流程。技术栈包括:LangChain应用框架、pypdf文档解析、RecursiveCharacterTextSplitter文本分块、bge-small-zh-v1.5向量模型、Faiss向量库和通义千问大模型。文章详细说明了开发环境配置步骤,包括虚拟环境创建、依赖库安装和模型下载。核心代码分为索引、检索、生成三大流程,索引流程完成PDF文档解析、分块和向量化存储;检索流程实现查询向量化和相似度匹配;生成流

小志的博客 593

在Qt中集成VTK和PCL:实现数据可视化的完整指南

在现代软件开发中,数据可视化至关重要。将VTK(Visualization Toolkit)和PCL(Point Cloud Library)集成到Qt环境里,能为开发者提供强大的可视化解决方案。本文将深入讲解如何在Qt中读取PCL文件,展示VTK模型和PCL数据,适合想要在Qt项目中实现数据可视化的开发者。

轩宇的博客 917

Java面试-Spring Boot 整合 MyBatis:XML 与 注解方式

《Java面试200问:Spring Boot整合MyBatis全解析》 本文系统讲解了Spring Boot整合MyBatis的两种核心方式:XML配置与注解开发。通过对比分析两种方式的优劣势,配以10000+字的详细指南、丰富代码示例和直观图解,帮助开发者全面掌握MyBatis在Spring Boot项目中的应用。 文章亮点: 深入对比XML与注解方式的适用场景 详细的环境搭建与配置指南 包含动态SQL、分页等高级用法 完整用户管理系统实战案例 高频面试问题全解析 适合人群:准备Java面试的开发者、需

千淘万漉虽辛苦,吹尽狂沙始到金 2万+

2026年GESP3月认证C++五级真题解析

因为要合并成升序数组,所以当A[i]小于等于B[j]时,取A[i],否则取B[j]。当a[i]>a[j]时,左边数组中从i到m的所有元素都大于a[j],因此逆序对数量增加m-i+1。给定一个包含n个互不相同的正整数的数组A与一个包含m个互不相同的正整数的数组B,请你帮忙计算有多少个数在数组A与数组B中均出现。下面代码实现两个整数除法,其中被除数为一个“大整数”,用字符串表示,除数是一个小整数,用int表示,则横线处应该填写()。且a[i] > a[j],则a[i]和a[j]是一个逆序对。

lan_in的博客 119

Spring Boot整合Mybatis(注解版+XML版)

0 Mybatis的简单介绍 ​ MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。 ​ iBATIS一词来源于“internet”和“abatis”的组合,是一个基于Java的持久层框架。iBATIS提供的持久层框架包括SQL Maps和Data Access Objects(DAOs) ​

做兴趣使然的Hero 4487

AI Agent在智能广告投放中的应用

随着互联网的快速发展,广告投放市场变得越来越复杂和竞争激烈。传统的广告投放方式往往难以精准地触达目标受众,导致广告资源的浪费。AI Agent作为一种智能的自动化程序,能够在复杂的环境中自主学习、决策和执行任务。本文章的目的在于深入探讨AI Agent在智能广告投放中的应用,研究如何利用AI Agent提高广告投放的精准度、效率和效果,降低成本。范围涵盖了AI Agent的基本原理、相关算法、在广告投放中的具体应用场景以及实际案例分析等方面。

欢迎来到我的优快云空间!这里聚焦AI大模型应用实战,分享前沿技术、实战案例与开发经验。 619

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Spring Boot整合MyBatis

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

梁辰兴的博客 1万+

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Spring Boot整合MyBatis实现简单的CRUD

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

沐雨橙风ιε的博客 4489

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Spring Boot 整合 MyBatis 全攻略

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

caisang0110的博客 2757

Spring Boot | Spring Boot的“数据访问“、Spring Boot“整合MyBatis“

目录: 一、Spring Boot”数据访问概述“ 二、Spring Boot”整合MyBatis” 1. 基础环境搭建 (引入对应的“依赖启动器” + 配置数据库的“相关参数”) ① 数据准备 (导入Sql文件) ② 创建项目,引入相应的启动器,编写数据库对应的“实体类” ③额外添加pom.xml文件依赖 ④ 编写application.properties 配置文件 ⑤ 编写自定义的关于“DruidDataSource“ 的 配置类” .....

m0_70720417的博客 1280

【MyBatis】MyBatis与Spring和Spring Boot整合原理

讲解Spring Boot如何整合MyBatis,并分析其原理。

小七的博客 1620

spring boot基于注解方式整合mybatis

前面一篇文章已经整合完mysql数据库,现在要整合持久层框架mybatis,基于纯注解的方式。(后期会用mybatis逆向工程创建xml方式和实体类映射) 一、添加mybatis的maven依赖 <!-- 引入mybatis --> <dependency> <groupId>org.mybatis.spring.boot</groupId> ...

wxz980927155的博客 273
上一篇: 解决:InvalidConnectionAttributeException: The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or
下一篇: fastjson时区问题:mysql时间为北京时间,后台返回到前台的json格式数据中的时间字段"timestamp"的值与北京时间相差8小时
aigoV
博客等级 码龄10年 98粉丝 61原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值