一,初始 MyBatis-Plus

一,初始 MyBatis-Plus

@

目录
  • 一,初始 MyBatis-Plus
  • 1. MyBatis-Plus 的概述
  • 2. 入门配置第一个 MyBatis-Plus 案例
  • 3. 补充说明:
    • 3.1 通用 Mapper 接口介绍
      • 3.1.1 Mapper 接口的 “增删改查”
        • 3.1.1.1 查询所有记录
        • 3.1.1.2 插入一条数据
        • 3.1.1.3 删除一条数据
        • 3.1.1.4 更新一条数据
        • 3.1.1.5 查询一条数据
    • 3.2 通用 service接口介绍
      • 3.2.1 Service 接口的“增删改查”
        • 3.2.1.1 添加一条记录
        • 3.2.1.2 删除一条记录
        • 3.2.1.3 修改一条记录
        • 3.2.1.4 查询一条记录
    • 3.3 自定义方法
      • 3.3.1 自定义Mapper接口方法
  • 4. 总结:
  • 6. 最后:


1. MyBatis-Plus 的概述

学习 MyBatis -Plus 之前,我们可以先来简单的,稍微的,回顾一下,MyBatis 框架的一些问题:

这里只是简单的回顾,关于MyBatis 的更多详细内容大家可以移步至:✏️✏️✏️ MyBatis_ChinaRainbowSea的博客-CSDN博客

我们来简单思考一下,MyBatis 框架的开发效率怎么样?

开发效率也就是我们使用这款框架开发的速度快不快,是否简单好用易上手。从这个角度思考,每当我们需要编写一个SQL需求的时候,我们需要做几步:

  1. Mapper 接口提供一个抽象方法。
  2. Mapper 接口对应的映射配置文件提供对应的标签和SQL语句
  3. 在 Service 中依赖 Mapper 实例对象
  4. 调用 Mapper 实例中的方法
  5. 在Controller 中依赖 Service 实例对象
  6. 调用 Service 实例中的方法

通过上面的发现,对于一个SQL需求,无论是单表还是多表,我们是需要完成如上几步,才能实现SQL需求的开发。


但是在开发中,有一些操作是通过逻辑,这些通用逻辑是可以被简化的,例如:

  1. 对于 dao ,是否可以由框架帮我们提供好单表的 Mapper 抽象方法,和对应的SQL实现,不需要程序员去实现这些。
  2. 对于 service,使用可以有框架直接帮我们提供好一些 serivce 的抽象方法,和对应的实现,不需要程序员去实现这些。
  3. 一些其它的企业开发中所需要的操作

分析到这里我们发现,其实核心框架并没有发生变化,依赖还是 Mybatis,只不过我们希望对于 MyBatis 进行一些封装和优化,让他更加的好用,更加的易用。

所以:MyBatis Plus 它就来了,它是 MyBatis 的一款增强工具。

MybatisPlus,从名称上来看,我们就发现,他和Mybatis长得很像,其实MybatisPlus就是Mybatis的孪生兄弟。学习MyBatis-Plus 首先,我们来看看它的官网地址是:https://baomidou.com/

在这里插入图片描述

MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

愿景

我们的愿景是成为 MyBatis 最好的搭档,就像 魂斗罗 中的 1P、2P,基友搭配,效率翻倍。

在这里插入图片描述

MyBatis-Plus的特性说明:

  • 无侵入:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑
  • 损耗小:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作
  • 强大的 CRUD 操作:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求
  • 支持 Lambda 形式调用:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错
  • 支持主键自动生成:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题
  • 支持 ActiveRecord 模式:支持 ActiveRecord 形式调用,实体类只需继承 Model 类即可进行强大的 CRUD 操作
  • 支持自定义全局通用操作:支持全局通用方法注入( Write once, use anywhere )
  • 内置代码生成器:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置等您来使用
  • 内置分页插件:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
  • 分页插件支持多种数据库:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer 等多种数据库
  • 内置性能分析插件:可输出 SQL 语句以及其执行时间,建议开发测试时启用该功能,能快速揪出慢查询
  • 内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可自定义拦截规则,预防误操作

MyBatis-Plus 的框架结构:

在这里插入图片描述

什么是Mybatis框架呢,他是一个持久层框架,目的是简化持久层的开发。在这里我们就使用springboot整合Mybatis,实现Mybatis框架的搭建。

特别说明:这里这个是 IDEA 2021 创建项目的操作步骤:

我们首先创建一个空的工程

在这里插入图片描述

工程名称是mp

在这里插入图片描述

创建springboot模块

在这里插入图片描述

在这里插入图片描述

这里我们选择springboot2.7.8的版本,并不勾选依赖,随后通过pom.xml手动添加

在这里插入图片描述

在这里插入图片描述




特别说明:下面这个是:IDEA 2024 的操作配置

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述


2. 入门配置第一个 MyBatis-Plus 案例

第一步: 创建数据库 mybatisplus

在这里插入图片描述

这些测试表,是来自于 MyBatis-Plus 官网教学的内容,大家也可以移步去看看:✏️✏️✏️ https://baomidou.com/getting-started/

在这里插入图片描述

现有一张 User 表,其表结构如下:

id name age email
1 Jone 18 test1@baomidou.com
2 Jack 20 test2@baomidou.com
3 Tom 28 test3@baomidou.com
4 Sandy 21 test4@baomidou.com
5 Billie 24 test5@baomidou.com

其对应的数据库 Schema 脚本如下:

DROP TABLE IF EXISTS `user`;CREATE TABLE `user`
(id BIGINT NOT NULL COMMENT '主键ID',name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',age INT NULL DEFAULT NULL COMMENT '年龄',email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',PRIMARY KEY (id)
);

其对应的数据库 Data 脚本如下:

DELETE FROM `user`;INSERT INTO `user` (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

在这里插入图片描述

第二步: 引入相关依赖,在 pom.xml 文件当中配置我们所需要的 jar 依赖。

在这里插入图片描述

<?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 https://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.5.3</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.rainbowsea</groupId><artifactId>mp02</artifactId><version>0.0.1-SNAPSHOT</version><name>mp02</name><description>mp02</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--        spring boot web 依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--        mysql 驱动依赖--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><!--        lombok 的依赖--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><!--        druid--><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.2.8</version></dependency><!--        mybatis-plus 的依赖--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version></dependency></dependencies><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build><repositories><repository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></repository></repositories><pluginRepositories><pluginRepository><id>spring-snapshots</id><name>Spring Snapshots</name><url>https://repo.spring.io/snapshot</url><releases><enabled>false</enabled></releases></pluginRepository></pluginRepositories></project>

特别说明:这里我们,将 Spring boot 改为:2.5.3 版本的。在这里插入图片描述

在这里插入图片描述

在:MyBatis-Plus 当中是包含了MyBatis 的依赖的。所以,引入了 MyBatis-Plus 也就引入了MyBatis了。

在这里插入图片描述

第三步: 编写该项目/模块的场景启动器:

在这里插入图片描述

第四步: 根据数据表创建对应的实体类:

在这里插入图片描述

package com.rainbowsea.bean;import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {private Long id;private String name;private Integer age;private String email;
}

第五步: 切换数据库连接池为 Druid 。这里我们编写配置类的方式,切换数据库连接池。

  1. 在 resoucre 类路径下,创建名为 applicaiton.yaml 的配置文件,其中编写连接数据库的配置信息。

在这里插入图片描述

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mybatisplus?serverTimezone=UTC&characterEncoding=utf8&useUnicode=true&useSSL=falseusername: rootpassword: MySQL123
  1. 编写配置类,切换数据库为 Druid

在这里插入图片描述

package com.rainbowsea.config;import com.alibaba.druid.pool.DruidDataSource;import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;/*** 配置切换,Druid 数据库连接池*/
@Configuration  // 标志配置类
public class DruidDataSourceConfig {@Bean  // 被 Spring ioc 容器管理起来@ConfigurationProperties(value = "spring.datasource")public DataSource getDataSource() {DruidDataSource druidDataSource = new DruidDataSource();return druidDataSource;}
}

特别说明:关于spring boot 中切换数据库连接池的详细内容,大家可以移步至:✏️✏️✏️ 十六,Spring Boot 整合 Druid 以及使用 Druid 监控功能-CSDN博客

测试:看看我们是否成功切换为了 Druid 数据库连接池。

在这里插入图片描述

import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate JdbcTemplate jdbcTemplate;@Testvoid contextLoads() {System.out.println(jdbcTemplate.getDataSource().getClass());}
}

在这里插入图片描述

第六步: 后面的都是对应 MyBatis-Plus 的内容上的重点内容。

编写 Mapper接口

在这里插入图片描述

package com.rainbowsea.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rainbowsea.bean.User;
import org.apache.ibatis.annotations.Mapper;@Mapper // 被Spring Boot 扫描到
public interface UserMapper extends BaseMapper<User> {}

在这里插入图片描述

在这里插入图片描述

我们的自己编写的 Mapper 接口 extends(继承) BaseMapper 接口就会拥有了其该接口下的方法。

第七步: 编写 Service 接口

在这里插入图片描述

在这里插入图片描述

package com.rainbowsea.service;import com.baomidou.mybatisplus.extension.service.IService;
import com.rainbowsea.bean.User;import java.util.List;public interface UserService extends IService<User> {// 当 IService 当中提供的方法,不能满足我们的业务需要的时候,// 我们可以自定义方法。// 自定义的方法List<User> selectAll();
}

在这里插入图片描述

在这里插入图片描述

第八步: 编写ServiceImpl

在这里插入图片描述

在这里插入图片描述

package com.rainbowsea.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import javax.annotation.Resource;
import java.util.Collections;
import java.util.List;@Service
public class UserServiceImpl extends ServiceImpl<UserMapper,User>implements UserService  {//@Resource@Autowired  // 自动装配private UserMapper userMapper;// 对自定义方法的,重写实现@Overridepublic List<User> selectAll() {return userMapper.selectList(null);}
}

在这里插入图片描述

它们之间的关系结构如下:

在这里插入图片描述

在这里插入图片描述

第九步:编写Controller 控制器:

在这里插入图片描述

package com.rainbowsea.controller;import com.rainbowsea.bean.User;
import com.rainbowsea.service.UserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.List;@RestController
public class UserController {@Resourceprivate UserService userService;@GetMapping(value = {"/selectList"})public List<User> selectList() {return userService.selectAll();}
}

第十一步 :打开浏览器运行测试。

在这里插入图片描述

3. 补充说明:

3.1 通用 Mapper 接口介绍

有关于 Mapper 接口,之前我们已经看到了,我们自己编写的Mapper接口继承 自己 BaseMapper 接口,由 BaseMapper 接口提供了很多单表的增删改查 相关的操作方法,在入门案例种,我们测试了查询所有的操作。我们介绍一些简单的Mapper 接口中的方法,主要是感觉一下。Mapper接口中对于单表的增删改查的操作都有涉及,更加高级的一些操作。

在这里插入图片描述

在这里插入图片描述

3.1.1 Mapper 接口的 “增删改查”

3.1.1.1 查询所有记录

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate UserMapper userMapper;// 查询所有@Testvoid selectList() {List<User> users = userMapper.selectList(null);for (User user : users) {System.out.println(user);}}
}

3.1.1.2 插入一条数据

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate UserMapper userMapper;// 简单添加@Testvoid insert() {User user = new User();user.setId(6L);user.setAge(18);user.setName("Lihua");user.setEmail("test6@baomidou.com");userMapper.insert(user);}
}

3.1.1.3 删除一条数据

在这里插入图片描述

import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate UserMapper userMapper;// 简单删除@Testvoid deleteOne() {userMapper.deleteById(4L);}}

3.1.1.4 更新一条数据

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate UserMapper userMapper;// 简单更新@Testvoid updateById() {User user = new User();user.setId(2L);user.setAge(18);user.setName("李华");user.setEmail("lihua@baomidou.com");userMapper.updateById(user);}}

3.1.1.5 查询一条数据

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate UserMapper userMapper;// 简单查询@Testvoid selectById() {User user = userMapper.selectById(6L);System.out.println(user);}}

3.2 通用 service接口介绍

除了Mapper接口,MybatisPlus还提供了IService接口和对应的实现类ServiceImpl,该实现类已经提供好了一些对应的Service相关的方法,在某些场景下,我们可以直接使用ServiceImpl提供的方法,实现对应的功能。

IService接口
在这里插入图片描述

IService接口中包含了service相关的一些增删改查方法
在这里插入图片描述
在这里插入图片描述

ServiceImpl实现类
在这里插入图片描述

ServiceImpl实现类提供了service相关的增删改查方法的实现

在这里插入图片描述

UserService接口继承自IService接口

在这里插入图片描述

UserServiceImpl类继承ServiceImpl<UserMapper,User>
在这里插入图片描述

在这里插入图片描述

注入UserService对象,测试相关方法

在这里插入图片描述

3.2.1 Service 接口的“增删改查”

3.2.1.1 添加一条记录

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Autowiredprivate UserService userService;//  UserService 添加@Testvoid insertService() {User user = new User();user.setId(7L);user.setAge(18);user.setName("Tom");user.setEmail("Tom@baomidou.com");userService.save(user);}}

3.2.1.2 删除一条记录

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Autowiredprivate UserService userService;// UserService 删除@Testvoid deleteServie() {userService.removeById(2L);}
}

3.2.1.3 修改一条记录

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Autowiredprivate UserService userService;// userService 修改@Testvoid updateService() {User user = new User();user.setId(3L);user.setAge(22);userService.updateById(user);}}

3.2.1.4 查询一条记录

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Autowiredprivate UserService userService;// UserService 查询@Testvoid selectService() {List<User> users = userService.selectAll();for (User user : users) {System.out.println(user);}}
}

3.3 自定义方法

MybatisPlus除了给我们提供了这些丰富的接口方法以外,对于我们自己的需求,也可以编写自定义的接口方法,我们通过自己编写SQL语句的形式,实现想要的SQL需求

3.3.1 自定义Mapper接口方法

Mapper接口中提供抽象方法

在这里插入图片描述

package com.rainbowsea.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.rainbowsea.bean.User;
import org.apache.ibatis.annotations.Mapper;@Mapper // 被Spring Boot 扫描到
public interface UserMapper extends BaseMapper<User> {// 自定义方法User selectByName(String name);}

提供映射配置文件,提供对应的SQL语句

注意:对应的映射的 SQL 配置文件的路径/包要一致,以及名称也要一致,才行。

在这里插入图片描述

在这里插入图片描述

<?xml version="1.0" encoding="UTF-8"?> <!-- 这句不要动,表示xml的版本,以及读取的编码 --><!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace="com.rainbowsea.mapper.UserMapper" ><select id="selectByName" resultType="com.rainbowsea.bean.User" parameterType="string">select id,age,name,emailfrom userwhere name = #{value}</select>
</mapper>

测试自定义的Mapper接口方法

在这里插入图片描述


import com.rainbowsea.bean.User;
import com.rainbowsea.mapper.UserMapper;
import com.rainbowsea.service.UserService;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;
import java.util.List;@SpringBootTest(classes = Mp02Application.class)  // Spring Boot 当中的测试,必须要有 项目的启动场景,不然无法测试报错
class Mp02ApplicationTests {@Resourceprivate UserMapper userMapper;// 测试自定义方法@Testvoid myMethod() {User tom = userMapper.selectByName("Lihua");System.out.println(tom);}
}

4. 总结:

  1. MyBatis-Plus官网地址:https://baomidou.com/
  2. MyBatis-Plus (opens new window)(简称 MP)是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
  3. 记忆理解 MyBatis-Plus 内置的 Mapper 接口,和 Service 接口

在这里插入图片描述

在这里插入图片描述

6. 最后:

“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[神经网络与深度学习笔记]LDA降维

LDA降维 LinearDiscriminant Analysis 线性判别分析,是一种有监督的线性降维算法。与PCA保持数据信息不同,LDA的目标是将原始数据投影到低维空间,尽量使同一类的数据聚集,不同类的数据尽可能分散 步骤:计算类内散度矩阵\(S_b\) 计算类间散度矩阵\(S_w\) 计算矩阵\(S_w^{-1…

C++ 指针和迭代器支持的操作

▲ 《C++ Primer》 P96 指针也都支持上面的操作。

代码整洁之道--读书笔记(14)

代码整洁之道简介: 本书是编程大师“Bob 大叔”40余年编程生涯的心得体会的总结,讲解要成为真正专业的程序员需要具备什么样的态度,需要遵循什么样的原则,需要采取什么样的行动。作者以自己以及身边的同事走过的弯路、犯过的错误为例,意在为后来者引路,助其职业生涯迈上更…

hexo安装后报错hexo 不是内部或外部命令,也不是可运行的程序 或批处理文件。

hexo问题 之前利用hexo和gitee搭建了一个博客,但是最近gitee的gitpage停止服务了,便想着在github上搭建一个。 在到安装hexo这一步的时候,一直报错hexo 不是内部或外部命令,也不是可运行的程序 或批处理文件。 我的所有安装步骤和环境变量发现都没有错,反复配置后去找了一…

跑冒滴漏监测系统

跑冒滴漏监测系统应用计算机视觉和深度学习技术对危化品生产区域实时检测,当检测到液体泄露时,立即抓拍存档告警并回传给后台监控平台方便人员及时处理,提高图像数据的实时监控效率。跑冒滴漏监测系统7*24小时不间断对监控画面实时分析监测,避免意外事故发生,同时降低人力…

学校食堂明厨亮灶监控系统

学校食堂明厨亮灶监控系统通过卷积神经网络学习与图像识别技术,学校食堂明厨亮灶监控系统将对现场监控画面进行24小时实时分析,如:厨房出现老鼠狗猫、厨师未戴口罩、厨师未戴厨师帽、厨师服穿戴识别、抽烟识别、玩手机识别,同时实时抓拍相关情况,全程记录留痕,提升监管效…

河道采砂识别监测系统

河道采砂识别监测系统借助深度视觉边缘分析技术,自动对监控区域违法采砂进行实时监测。如果河道采砂识别监测系统监测到有人违法采砂时,立即抓拍存档预警,将违规采砂截图发给后台管理中心,提醒后台人员及时处理。河道采砂识别监测系统可根据时间段违规记录、视频进行查找,…

煤炭传送带状态检测系统

煤炭传送带状态检测系统通过机器视觉+边缘分析技术对煤炭皮带状况进行实时监测,一旦煤炭传送带状态检测系统监测到皮带跑偏、堆煤、撕裂、异物等其他情况,煤炭传送带状态检测系统马上开展警报提醒,通知后台监控平台,并提醒相关人员及时处置。煤炭传送带状态检测系统同时把告…

城市道路积水识别监测系统

城市道路积水识别监测系统基于机器视觉分析,城市道路积水识别监测系统实时识别街道路面积水情况,对严重积水时立即报警。城市道路积水识别监测系统对低洼区域进行实时监测,一旦城市道路积水识别监测系统监测到街道路面积水时,立即进行抓拍告警,告知监控管理中心,提醒相关…

Thinkphp8安装topthink/think-captcha验证码的和使用方法

ThinkPHP8默认没有验证码,安装验证码可以使用composer来安装验证码 一、安装验证码 执行composer安装验证码 composer require topthink/think-captcha二、使用方法 1、在目录app\middleware.php中开启session \think\middleware\SessionInit::class 2、配置验证码 安装好验证…

水尺监测识别系统

水尺监测识别系统利用计算机视觉+机器学习技术对河道湖泊进行实时检测,当水尺监测识别系统监测到河道水位异常时,立即告警。水尺监测识别系统同时将告警截图和视频保存下来,推送给后台。水尺监测识别系统极大提升现场区域的管控效率,既方便又节省人力。水尺监测识别系统利用…

人员规范操作行为识别系统

人员规范操作行为识别系统对现场人员操作行为进行实时监测分析,如果人员规范操作行为识别系统发现现场人员未按照要求规范进行操作、遗漏操作步骤更改先后作业顺序或者操作不规范,人员规范操作行为识别系统立即抓拍存档现场语音播报提醒相关人员行为不规范请立即改正,并同步…