SSM - Springboot - MyBatis-Plus 全栈体系(二十九)

news2024/12/24 2:21:03

第六章 SpringBoot

五、SpringBoot3 整合 MyBatis

1. MyBatis 整合步骤

  • 导入依赖:在您的 Spring Boot 项目的构建文件(如 pom.xml)中添加 MyBatis 和数据库驱动的相关依赖。例如,如果使用 MySQL 数据库,您需要添加 MyBatis 和 MySQL 驱动的依赖。
  • 配置数据源:在application.propertiesapplication.yml中配置数据库连接信息,包括数据库 URL、用户名、密码、mybatis 的功能配置等。
  • 创建实体类:创建与数据库表对应的实体类。
  • 创建 Mapper 接口:创建与数据库表交互的 Mapper 接口。
  • 创建 Mapper 接口 SQL 实现: 可以使用 mapperxml 文件或者注解方式
  • 创建程序启动类
  • 注解扫描:在 Spring Boot 的主应用类上添加@MapperScan注解,用于扫描和注册 Mapper 接口。
  • 使用 Mapper 接口:在需要使用数据库操作的地方,通过依赖注入或直接实例化 Mapper 接口,并调用其中的方法进行数据库操作。

2. MyBatis 整合实践

2.1 创建项目
2.2 导入依赖
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.0.5</version>
</parent>

<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>3.0.1</version>
    </dependency>

    <!-- 数据库相关配置启动器 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jdbc</artifactId>
    </dependency>

    <!-- druid启动器的依赖  -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-3-starter</artifactId>
        <version>1.2.18</version>
    </dependency>

    <!-- 驱动类-->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.28</version>
    </dependency>

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.28</version>
    </dependency>

</dependencies>
2.3 配置文件
server:
  port: 80
  servlet:
    context-path: /
spring:
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    druid:
      url: jdbc:mysql:///day01
      username: root
      password: root
      driver-class-name: com.mysql.cj.jdbc.Driver

mybatis:
  configuration:  # setting配置
    auto-mapping-behavior: full
    map-underscore-to-camel-case: true
    log-impl: org.apache.ibatis.logging.slf4j.Slf4jImpl
  type-aliases-package: com.alex.pojo # 配置别名
  mapper-locations: classpath:/mapper/*.xml # mapperxml位置
2.4 实体类准备
package com.alex.pojo;

public class User {
    private String account ;
    private String password ;
    private Integer id ;

    public String getAccount() {
        return account;
    }

    public void setAccount(String account) {
        this.account = account;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public Integer getId() {
        return id;
    }

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

    @Override
    public String toString() {
        return "User{" +
                "account='" + account + '\'' +
                ", password='" + password + '\'' +
                ", id=" + id +
                '}';
    }
}
2.5 Mapper 接口准备
public interface UserMapper {

    List<User> queryAll();
}
2.6 Mapper 接口实现(XML)
  • 位置:resources/mapper/UserMapper.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!-- namespace = 接口的全限定符 -->
<mapper namespace="com.alex.mapper.UserMapper">

    <select id="queryAll" resultType="user">
        select * from users
    </select>

</mapper>
2.7 编写三层架构代码

伪代码,不添加业务接口!

2.7.1 controller
@Slf4j
@Controller
@RequestMapping("/user")
public class UserController {

    @Autowired
    private UserService userService;

    @GetMapping("/list")
    @ResponseBody
    public List<User> getUser(){
        List<User> userList = userService.findList();
        log.info("查询的user数据为:{}",userList);
        return userList;
    }

}
2.7.2 service
@Slf4j
@Service
public class UserService {

    @Autowired
    private UserMapper userMapper;

    public List<User> findList(){
        List<User> users = userMapper.queryAll();
        log.info("查询全部数据:{}",users);
        return users;
    }
}
2.8 启动类和接口扫描
@MapperScan("com.alex.mapper") //mapper接口扫描配置
@SpringBootApplication
public class MainApplication {

    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class,args);
    }
}
2.9 启动测试

3. 声明式事务整合配置

  • 依赖导入
 <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
  • 注:SpringBoot 项目会自动配置一个 DataSourceTransactionManager,所以我们只需在方法(或者类)加上 @Transactional 注解,就自动纳入 Spring 的事务管理了。
@Transactional
public void update(){
    User user = new User();
    user.setId(1);
    user.setPassword("test2");
    user.setAccount("test2");
    userMapper.update(user);
}

4. AOP 整合配置

  • 依赖导入
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-aop</artifactId>
</dependency>
  • 直接使用 aop 注解即可:
@Component
@Aspect
public class LogAdvice {

    @Before("execution(* com..service.*.*(..))")
    public void before(JoinPoint joinPoint){
        System.out.println("LogAdvice.before");
        System.out.println("joinPoint = " + joinPoint);
    }

}

六、SpringBoot3 项目打包和运行

1. 添加打包插件

在 Spring Boot 项目中添加 spring-boot-maven-plugin 插件是为了支持将项目打包成可执行的可运行 jar 包。如果不添加 spring-boot-maven-plugin 插件配置,使用常规的 java -jar 命令来运行打包后的 Spring Boot 项目是无法找到应用程序的入口点,因此导致无法运行。

<!--    SpringBoot应用打包插件-->
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2. 执行打包

  • 在 idea 点击 package 进行打包
  • 可以在编译的 target 文件中查看 jar 包
    在这里插入图片描述

3. 命令启动和参数说明

  • java -jar命令用于在 Java 环境中执行可执行的 JAR 文件。下面是关于java -jar命令的说明:
命令格式:java -jar  [选项] [参数] <jar文件名>
  • -D<name>=<value>:设置系统属性,可以通过System.getProperty()方法在应用程序中获取该属性值。例如:java -jar -Dserver.port=8080 myapp.jar
  • -X:设置 JVM 参数,例如内存大小、垃圾回收策略等。常用的选项包括:
    • -Xmx<size>:设置 JVM 的最大堆内存大小,例如 -Xmx512m 表示设置最大堆内存为 512MB。
    • -Xms<size>:设置 JVM 的初始堆内存大小,例如 -Xms256m 表示设置初始堆内存为 256MB。
  • -Dspring.profiles.active=<profile>:指定 Spring Boot 的激活配置文件,可以通过application-<profile>.propertiesapplication-<profile>.yml文件来加载相应的配置。例如:java -jar -Dspring.profiles.active=dev myapp.jar
  • 启动和测试:在这里插入图片描述
  • 注意: -D 参数必须要在 jar 之前!否则不生效!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1098753.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pulsar Manager配置自定义认证插件访问

Pulsar Manager配置自定义认证插件访问 Pulsar Manager和dashboard部署和启用认证 pulsar自定义认证插件开发 前面博客讲了以token方式访问pulsar 这节博客讲如何配置自定义认证插件的方式访问pulsar #启动pulsar-manager docker run --name pulsar-manager -dit \-p 9527:…

C# Winform编程(3)对话框

C# Winform编程&#xff08;3&#xff09;对话框 Show(string text);Show(string text, string caption);Show(string text, string caption, MessageBoxButtons buttons);Show(string text, string caption, MessageBoxButtons buttons, MessageBoxIcon icon); using System;…

UE5发布Android屏幕适配实践(Blueprint)

之前发了一个文章UE5屏幕适配&#xff0c;后续做项目中又遇到问题&#xff0c;对DPI Scale又有了理解&#xff0c;所以又写了这篇文章。https://mp.csdn.net/mp_blog/creation/editor/133337134https://mp.csdn.net/mp_blog/creation/editor/133337134 DPI Scale Rule使用Short…

Linux:将mysql数据导入mongodb

mysql和mongodb都要同时开启 进入mysql创建一个数据库为aaa create database aaa; 创建一个tarro表结构为 &#xff08;id int,name varchar(20)&#xff09; create table tarro(id int,name varchar(20)); 插入几个数据&#xff0c;等会把这里的数据导过去 insert in…

Java多线程解密:揭秘多线程的奥秘,给你全面了解与实践的权威指南

一&#xff1a;进程与线程 概述&#xff1a;几乎任何的操作系统都支持运行多个任务&#xff0c;通常一个任务就是一个程序&#xff0c;而一个程序就是一个进程。当一个进程运行时&#xff0c;内部可能包括多个顺序执行流&#xff0c;每个顺序执行流就是一个线程。 进程&#…

Python学习基础笔记七十二——IDE集成开发环境

集成开发环境&#xff0c;英文缩写是IDE。 IDE可以帮你更高效地开发项目代码。因为它提供了非常实用的功能&#xff0c;比如项目文件管理、语法高亮、代码导航、自动补齐代码、语法静态检查、调试、版本控制等等。 两款IDE&#xff1a;Pycharm和VSCode。 pycharm中的代码文件都…

香港学界呼吁RWA“在港先发”,构建基于港元稳定币的Web3生态!

2023年以来&#xff0c;市场对于RWA&#xff08;Real World Assets&#xff09;即真实世界资产“代币化”的讨论愈发频繁&#xff0c;一些观点认为 RWA将在下一轮加密资产牛市中成为焦点&#xff0c;部分Web3创业者和传统金融企业也快速将业务方向瞄准相关赛道&#xff0c;而被…

Java|学习|异常

1.异常 1.1 异常 1.1.1 概述 异常&#xff1a;就是程序出现了不正常的情况。 Error&#xff1a;严重问题&#xff0c;不需要处理。 Exception&#xff1a;称为异常类&#xff0c;它表示程序本身可以处理的问题。 RuntimeException&#xff1a;在编译器不检查&#xff0c;出…

WorkPlus即时通讯办公软件,助力企业实现移动化办公

在移动互联网的时代背景下&#xff0c;企业对于高效的移动平台需求日益迫切。WorkPlus作为领先品牌&#xff0c;致力于为企业打造卓越的移动平台&#xff0c;助力企业实现协作与效率的突破。本文将探讨WorkPlus如何通过其专业的解决方案&#xff0c;为企业打造无限可能的移动办…

高级系统架构设计师_笔记_真题

2020 科目一 位示图的计算 分页管理-页式存储 软件系统的文档可以分为用户文档和系统文档两类。软件活动&#xff1a; 对应软件开发的各种活动&#xff0c;软件开发工具包括&#xff1a;需求分析工具、设计工具、编码和排错工具、测试工具等。按需求描述定义的方法可将需求分…

day35

今日内容概要 Socket抽象层(socket编程) 基于TCP协议的借助socket可以编程客户端和服务端的程序 链接循环 通信循环 基于UDP协议的套接字(socket)编程 粘包现象 如何解决粘包现象(重要的是解决的思路) struct模块的使用(打包、解包) 今日内容详细 Socket抽象层&#x…

论文阅读:Rethinking Range View Representation for LiDAR Segmentation

来源ICCV2023 0、摘要 LiDAR分割对于自动驾驶感知至关重要。最近的趋势有利于基于点或体素的方法&#xff0c;因为它们通常产生比传统的距离视图表示更好的性能。在这项工作中&#xff0c;我们揭示了建立强大的距离视图模型的几个关键因素。我们观察到&#xff0c;“多对一”…

Linux:mongodb数据库基础操作(3.4版本)

安装 3.*版本和4.*版本安装都是一样的 Linux&#xff1a;mongodb数据库源码包安装&#xff08;4.4.25版本&#xff09;_鲍海超-GNUBHCkalitarro的博客-CSDN博客https://blog.csdn.net/w14768855/article/details/133826626?spm1001.2014.3001.5501 mysql和mongodb对比 登录…

【SpringCloud-10】SCA-nacos

前言&#xff1a; 前面介绍的springcloud&#xff0c;可以看做第一代&#xff0c;称为&#xff1a;SCN&#xff08;spring cloud Netflix&#xff09;; 接下来介绍的是第二代&#xff1a;SCA&#xff08;spring cloud alibaba&#xff09;&#xff1b; SCA主要有以下组件&#…

【Java 进阶篇】创建 JavaScript 轮播图:让网页焕发生机

欢迎大家来到本篇博客&#xff0c;今天我们将一起探讨如何使用 JavaScript 创建一个精美的轮播图。轮播图是现代网站设计的关键元素之一&#xff0c;它能够使网页更加吸引人&#xff0c;提高用户体验。无需担心&#xff0c;本文将面向基础小白&#xff0c;从头开始解释每一步。…

“最强7B模型”论文发布,揭秘如何超越13B版Llama 2

来自“欧洲OpenAI”的“最强7B开源模型”Mistral最近可谓是圈粉无数。 它各方面的测试指标全面超越了13B的Llama2&#xff0c;甚至让一众网友觉得羊驼不香了。 最新消息是&#xff0c;Mistral AI团队已经发布了相关论文&#xff0c;透露背后的技术细节。 Mistral不仅全面战胜…

多个子div在父中垂直居中

在一个div下&#xff0c;有多个子div&#xff0c;且子div都是水平垂直居中 <template><div><div class"far"><!-- 注意需要多包裹一层 --><div><div class"son1">1</div><div class"son2">222…

30天工作量,推荐4个ai写作生成器工具,一键搞定!

全新升级&#xff01;畅销热门AI写作工具盘点40强&#xff0c;助你一键呈现顶尖文案&#xff01; AI写作工具&#xff0c;引领时代潮流&#xff0c;让办公生活更高效&#xff01;小编特意整理了市面上最好用的AI写作工具&#xff0c;共计40款&#xff01;你使用过哪些&#xff…

Centos中如何删除带有特殊符号的乱码文件_rz命令产生的乱码文件如何删除_使用文件号删除乱码文件---Linux运维工作笔记058

在使用rz命令进行文件上传的时候,偶尔会产生一堆的乱码文件,比如: 可以看到有一堆的乱码文件. 普通的乱码文件,直接rm -rf 文件名就可以删除了,但是有一些不行,包含特殊符号的,比如: 这个文件报错了,可以看到用rm -rf 根本删除不掉. 这个文件后面包含了一个.对吧 那该怎么解决…

C++前缀和算法应用:矩形区域不超过 K 的最大数值和

基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 题目 给你一个 m x n 的矩阵 matrix 和一个整数 k &#xff0c;找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一个数值和不超过 k 的矩形区域。 示例 1&#x…