SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

作者:k***8584日期:2025/11/24

文章目录
    • 1.整合MyBatis
        • 1.需求分析
          * 2.数据库表设计
          * 3.数据库环境配置
          * * 1.新建maven项目
          * 2.pom.xml 引入依赖
          * 3.application.yml 配置数据源
          * 4.Application.java 编写启动类
          * 5.测试
          * 6.配置类切换druid数据源
          * 7.测试数据源是否成功切换
          * 4.Mybatis基础配置
          * * 1.编写映射表的bean
          * 2.MonsterMapper.java 编写mapper接口
          * 3.MonsterMapper.xml 编写mapper.xml实现mapper接口
          * 4.application.yml 扫描mapper.xml配置文件的位置
          * 5.测试
          * 5.MyBatis高级配置
          * * 1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
          * 2.方式二:直接在application.yml中配置
          * 6.继续编写Service层和Controller层
          * * 1.MonsterService.java
          * 2.MonsterServiceImpl.java
          * 3.测试
          * 4.MonsterController.java
          * 5.测试
          * 6.解决时间问题
          * 7.完整文件目录
    • 2.整合MyBatis-Plus
        • 1.MyBatis-Plus基本介绍
          * 2.数据库表设计
          * 3.数据库环境配置
          * * 1.创建maven项目
          * 2.pom.xml 导入依赖
          * 3.application.yml 配置数据源
          * 4.DruidDataSourceConfig.java 配置类切换druid数据源
          * 5.编写启动类Application.java,测试运行
          * 4.MyBatis-Plus基础配置
          * * 1.编写映射表的bean
          * 2.MonsterMapper.java 编写Mapper接口
          * 3.测试接口方法使用
          * 5.MyBatis-Plus高级配置
          * * application.yml 进行配置
          * 6.继续编写Service层和Controller层
          * * 1.MonsterService.java
          * 2.MonsterServiceImpl.java
          * 3.测试
          * 4.细节说明
          * 5.MonsterController.java
          * 7.细节说明
          * * 1.@MapperScan 扫描包下的所有Mapper
          * * 启动类配置注解
          * 2.@TableName bean的类名与表名不一致时使用
          * image-20240317200951971
          * 3.MyBatis引入了哪些依赖
          * 8.MyBatisX快速开发
          * * 1.安装插件
          * 2.使用方式
          * * 1.挑一个带小鸟的方法
          * 2.直接alt + Enter
          * 3.生成sql语句
          * 4.查看生成的方法
          * 5.点击左边的小鸟就可以直接跳转到指定方法或者xml
          * 9.完整文件目录
          * 10.MyBatis-Plus小结

1.整合MyBatis

1.需求分析

2.数据库表设计
1CREATE DATABASE `springboot_mybatis`;
2
3use `springboot_mybatis`;
4
5CREATE TABLE `monster` (
6 `id` INT NOT NULL AUTO_INCREMENT,
7 `age` INT NOT NULL, 
8 `birthday` DATE DEFAULT NULL, 
9 `email` VARCHAR(255) DEFAULT NULL,
10 `gender` char(1) DEFAULT NULL,
11 `name` VARCHAR(255) DEFAULT NULL, 
12 `salary` DOUBLE NOT NULL,
13 PRIMARY KEY (`id`)
14);
15
16SELECT * FROM `monster`;
17
18insert into monster values(null, 20, '2000-11-11', 'nmw@sohu.com', '男', '牛魔王', 5000.88);
19insert into monster values(null, 10, '2011-11-11', 'bgj@sohu.com', '女', '白骨精', 2000.00);
20
3.数据库环境配置
1.新建maven项目

2.pom.xml 引入依赖
1    <!--导入springboot父工程-->
2    <parent>
3        <artifactId>spring-boot-starter-parent</artifactId>
4        <groupId>org.springframework.boot</groupId>
5        <version>2.5.3</version>
6    </parent>
7
8    <!--引入相关依赖-->
9    <dependencies>
10        <!--常规依赖-->
11        <!--web场景启动器-->
12        <dependency>
13            <groupId>org.springframework.boot</groupId>
14            <artifactId>spring-boot-starter-web</artifactId>
15        </dependency>
16        <!--lombok-->
17        <dependency>
18            <groupId>org.projectlombok</groupId>
19            <artifactId>lombok</artifactId>
20            <optional>true</optional>
21        </dependency>
22        <!--引入测试场景启动器-->
23        <dependency>
24            <groupId>org.springframework.boot</groupId>
25            <artifactId>spring-boot-starter-test</artifactId>
26            <scope>test</scope>
27        </dependency>
28        <!--配置处理器-->
29        <dependency>
30            <groupId>org.springframework.boot</groupId>
31            <artifactId>spring-boot-configuration-processor</artifactId>
32            <optional>true</optional>
33        </dependency>
34
35        <!--数据库配置-->
36        <!--引入data-jdbc数据源-->
37        <dependency>
38            <groupId>org.springframework.boot</groupId>
39            <artifactId>spring-boot-starter-data-jdbc</artifactId>
40        </dependency>
41        <!--mysql依赖使用版本仲裁-->
42        <dependency>
43            <groupId>mysql</groupId>
44            <artifactId>mysql-connector-java</artifactId>
45            <scope>runtime</scope>
46        </dependency>
47        <!-- 引入 druid 依赖 -->
48        <dependency>
49            <groupId>com.alibaba</groupId>
50            <artifactId>druid</artifactId>
51            <version>1.1.17</version>
52        </dependency>
53        <!--MyBatis场景启动器-->
54        <dependency>
55            <groupId>org.mybatis.spring.boot</groupId>
56            <artifactId>mybatis-spring-boot-starter</artifactId>
57            <version>2.2.2</version>
58        </dependency>
59    </dependencies>
60
3.application.yml 配置数据源
  • 数据库名
  • 用户名
  • 密码
  • 驱动是mysql8的(因为上面使用了版本仲裁)
    server:
    port: 8080
    spring:
    datasource: #配置数据源
    url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    driver-class-name: com.mysql.cj.jdbc.Driver
4.Application.java 编写启动类
1package com.sun.springboot.mybatis;
2
3import org.springframework.boot.SpringApplication;
4import org.springframework.boot.autoconfigure.SpringBootApplication;
5
6/**
7 * @author 孙显圣
8 * @version 1.0
9 */
10@SpringBootApplication
11public class Application {
12    public static void main(String[] args) {
13        SpringApplication.run(Application.class, args);
14    }
15}
16
5.测试
1package com.sun.springboot.mybatis;
2
3import org.junit.jupiter.api.Test;
4import org.springframework.boot.test.context.SpringBootTest;
5import org.springframework.jdbc.core.JdbcTemplate;
6
7import javax.annotation.Resource;
8
9/**
10 * @author 孙显圣
11 * @version 1.0
12 */
13@SpringBootTest
14public class ApplicationTest {
15    //依赖注入
16    @Resource
17    private JdbcTemplate jdbcTemplate;
18
19    @Test
20    public void t1() {
21        //查看目前数据源
22        System.out.println(jdbcTemplate.getDataSource().getClass());
23    }
24}
25

6.配置类切换druid数据源
1package com.sun.springboot.mybatis.config;
2
3import com.alibaba.druid.pool.DruidDataSource;
4import com.alibaba.druid.support.http.StatViewServlet;
5import com.alibaba.druid.support.http.WebStatFilter;
6import org.springframework.boot.context.properties.ConfigurationProperties;
7import org.springframework.boot.web.servlet.FilterRegistrationBean;
8import org.springframework.boot.web.servlet.ServletRegistrationBean;
9import org.springframework.context.annotation.Bean;
10import org.springframework.context.annotation.Configuration;
11
12import javax.sql.DataSource;
13import java.sql.SQLException;
14import java.util.Arrays;
15
16/**
17 * @author 孙显圣
18 * @version 1.0
19 */
20@Configuration
21public class DruidDataSourceConfig {
22
23    //注入一个德鲁伊数据源
24    @ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置
25    @Bean
26    public DataSource dataSource() throws SQLException {
27        DruidDataSource druidDataSource = new DruidDataSource();
28        druidDataSource.setFilters("stat, wall"); //开启sql监控
29        return druidDataSource;
30    }
31
32    //配置德鲁伊监控sql功能
33    @Bean
34    public ServletRegistrationBean statViewServlet() {
35        StatViewServlet statViewServlet = new StatViewServlet();
36        ServletRegistrationBean<StatViewServlet> registrationBean =
37                new ServletRegistrationBean<>(statViewServlet, "/druid/*");
38        //配置登录监控页面用户名和密码
39        registrationBean.addInitParameter("loginUsername", "root");
40        registrationBean.addInitParameter("loginPassword", "root");
41        return registrationBean;
42    }
43
44    //配置webStatFilter
45    @Bean
46    public FilterRegistrationBean webStatFilter() {
47        WebStatFilter webStatFilter = new WebStatFilter();
48        FilterRegistrationBean<WebStatFilter> filterRegistrationBean =
49                new FilterRegistrationBean<>(webStatFilter);
50        //默认对所有 URL 请求监控
51        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
52        //排除 URL
53        filterRegistrationBean.addInitParameter
54                ("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
55        return filterRegistrationBean;
56    }
57}
58
7.测试数据源是否成功切换
1package com.sun.springboot.mybatis;
2
3import org.junit.jupiter.api.Test;
4import org.springframework.boot.test.context.SpringBootTest;
5import org.springframework.jdbc.core.JdbcTemplate;
6
7import javax.annotation.Resource;
8
9/**
10 * @author 孙显圣
11 * @version 1.0
12 */
13@SpringBootTest
14public class ApplicationTest {
15    //依赖注入
16    @Resource
17    private JdbcTemplate jdbcTemplate;
18
19    @Test
20    public void t1() {
21        //查看目前数据源
22        System.out.println(jdbcTemplate.getDataSource().getClass());
23    }
24}
25

4.Mybatis基础配置
1.编写映射表的bean
1package com.sun.springboot.mybatis.bean;
2
3import com.fasterxml.jackson.annotation.JsonFormat;
4import lombok.Data;
5
6import java.util.Date;
7
8/**
9 * @author 孙显圣
10 * @version 1.0
11 */
12@Data
13public class Monster {
14    private Integer id;
15    private Integer age;
16    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
17    private Date birthday;
18    private String email;
19    private String name;
20    private String gender;
21    private Double salary;
22}
23
2.MonsterMapper.java 编写mapper接口
  • 使用注解注入容器
    package com.sun.springboot.mybatis.mapper;
    import com.sun.springboot.mybatis.bean.Monster;
    import org.apache.ibatis.annotations.Mapper;
    /**
    • @author 孙显圣
    • @version 1.0
      */
      @Mapper //将接口注入容器
      public interface MonsterMapper {
      public Monster getMonsterById(Integer id);
      }
3.MonsterMapper.xml 编写mapper.xml实现mapper接口
  • 使用namespace指定要实现的接口
<?xml version="1.0" encoding="UTF-8" ?> select \* from monster where id = #{id}

4.application.yml 扫描mapper.xml配置文件的位置
  • 扫描类路径下mapper文件夹下的所有文件
    mybatis:
    #指定要扫描的mapper.xml
    mapper-locations: classpath:mapper/*.xml
5.测试
1package com.sun.springboot.mybatis;
2
3import com.sun.springboot.mybatis.bean.Monster;
4import com.sun.springboot.mybatis.mapper.MonsterMapper;
5import org.junit.jupiter.api.Test;
6import org.springframework.boot.test.context.SpringBootTest;
7import org.springframework.jdbc.core.JdbcTemplate;
8
9import javax.annotation.Resource;
10
11/**
12 * @author 孙显圣
13 * @version 1.0
14 */
15@SpringBootTest
16public class ApplicationTest {
17    //依赖注入
18    @Resource
19    private JdbcTemplate jdbcTemplate;
20    //注意这里注入的是MonsterMapper的代理对象
21    @Resource
22    private MonsterMapper monsterMapper;
23
24    @Test
25    public void t1() {
26        //查看目前数据源
27        System.out.println(jdbcTemplate.getDataSource().getClass());
28    }
29
30    @Test
31    public void t2() {
32        //测试mybatis
33        Monster monsterById = monsterMapper.getMonsterById(1);
34        System.out.println(monsterById);
35    }
36}
37

5.MyBatis高级配置
1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
2.方式二:直接在application.yml中配置
1mybatis:
2  #指定要扫描的mapper.xml
3  mapper-locations: classpath:mapper/*.xml
4  #配置类型别名包,这样只要在这个包下的类型都可以简写
5  type-aliases-package: com/sun/springboot/mybatis/bean
6  #输出日志
7  configuration:
8    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
9
6.继续编写Service层和Controller层
1.MonsterService.java
1package com.sun.springboot.mybatis.service;
2
3import com.sun.springboot.mybatis.bean.Monster;
4
5/**
6 * @author 孙显圣
7 * @version 1.0
8 */
9public interface MonsterService {
10    public Monster getMonsterById(Integer id);
11}
12
2.MonsterServiceImpl.java
1package com.sun.springboot.mybatis.service.Impl;
2
3import com.sun.springboot.mybatis.bean.Monster;
4import com.sun.springboot.mybatis.mapper.MonsterMapper;
5import com.sun.springboot.mybatis.service.MonsterService;
6import org.springframework.stereotype.Service;
7
8import javax.annotation.Resource;
9
10/**
11 * @author 孙显圣
12 * @version 1.0
13 */
14@Service
15public class MonsterServiceImpl implements MonsterService {
16    @Resource
17    private MonsterMapper monsterMapper; //返回代理对象
18    @Override
19    public Monster getMonsterById(Integer id) {
20        return monsterMapper.getMonsterById(id);
21    }
22}
23
3.测试
1package com.sun.springboot.mybatis;
2
3import com.sun.springboot.mybatis.bean.Monster;
4import com.sun.springboot.mybatis.mapper.MonsterMapper;
5import com.sun.springboot.mybatis.service.MonsterService;
6import org.junit.jupiter.api.Test;
7import org.springframework.boot.test.context.SpringBootTest;
8import org.springframework.jdbc.core.JdbcTemplate;
9
10import javax.annotation.Resource;
11
12/**
13 * @author 孙显圣
14 * @version 1.0
15 */
16@SpringBootTest
17public class ApplicationTest {
18    //依赖注入
19    @Resource
20    private MonsterService monsterService;
21
22    @Test
23    public void getMonsterById() {
24        Monster monsterById = monsterService.getMonsterById(1);
25        System.out.println(monsterById);
26    }
27}
28

4.MonsterController.java
1package com.sun.springboot.mybatis.Controller;
2
3import com.sun.springboot.mybatis.bean.Monster;
4import com.sun.springboot.mybatis.service.MonsterService;
5import org.springframework.stereotype.Controller;
6import org.springframework.web.bind.annotation.GetMapping;
7import org.springframework.web.bind.annotation.PathVariable;
8import org.springframework.web.bind.annotation.ResponseBody;
9
10import javax.annotation.Resource;
11
12/**
13 * @author 孙显圣
14 * @version 1.0
15 */
16@Controller
17public class MonsterController {
18    @Resource
19    private MonsterService monsterService;
20
21    @GetMapping("/getMonster/{id}") //路径参数的请求
22    @ResponseBody //响应一个json
23    public Monster getMonsterById(@PathVariable("id") Integer id) {
24        Monster monsterById = monsterService.getMonsterById(id);
25        return monsterById;
26    }
27}
28
5.测试

6.解决时间问题

7.完整文件目录

2.整合MyBatis-Plus

1.MyBatis-Plus基本介绍

2.数据库表设计
1CREATE DATABASE `springboot_mybatisplus`;
2
3USE `springboot_mybatisplus`;
4
5CREATE TABLE `monster` (
6`id` INT NOT NULL AUTO_INCREMENT,
7`age` INT NOT NULL, 
8`birthday` DATE DEFAULT NULL, 
9`email` VARCHAR(255) DEFAULT NULL, 
10`gender` CHAR(1) DEFAULT NULL, 
11`name` VARCHAR(255) DEFAULT NULL, 
12`salary` DOUBLE NOT NULL,
13PRIMARY KEY (`id`)
14);
15SELECT * FROM `monster`;
16INSERT INTO monster VALUES(NULL, 20, '2000-11-11', 'xzj@sohu.com', '男', '    ',
1715000.88);
18INSERT INTO monster VALUES(NULL, 10, '2011-11-11', 'ytj@sohu.com', '女', '    ',
1918000.88);
20
3.数据库环境配置
1.创建maven项目

2.pom.xml 导入依赖
1  <!--导入springboot父工程-->
2  <parent>
3    <artifactId>spring-boot-starter-parent</artifactId>
4    <groupId>org.springframework.boot</groupId>
5    <version>2.5.3</version>
6  </parent>
7
8  <!--引入相关依赖-->
9  <dependencies>
10    <!--常规依赖-->
11    <!--web场景启动器-->
12    <dependency>
13      <groupId>org.springframework.boot</groupId>
14      <artifactId>spring-boot-starter-web</artifactId>
15    </dependency>
16    <!--lombok-->
17    <dependency>
18      <groupId>org.projectlombok</groupId>
19      <artifactId>lombok</artifactId>
20      <optional>true</optional>
21    </dependency>
22    <!--引入测试场景启动器-->
23    <dependency>
24      <groupId>org.springframework.boot</groupId>
25      <artifactId>spring-boot-starter-test</artifactId>
26      <scope>test</scope>
27    </dependency>
28    <!--配置处理器-->
29    <dependency>
30      <groupId>org.springframework.boot</groupId>
31      <artifactId>spring-boot-configuration-processor</artifactId>
32      <optional>true</optional>
33    </dependency>
34
35    <!--数据库配置-->
36    <!--mysql依赖使用版本仲裁-->
37    <dependency>
38      <groupId>mysql</groupId>
39      <artifactId>mysql-connector-java</artifactId>
40      <scope>runtime</scope>
41    </dependency>
42    <!-- 引入 druid 依赖 -->
43    <dependency>
44      <groupId>com.alibaba</groupId>
45      <artifactId>druid</artifactId>
46      <version>1.1.17</version>
47    </dependency>
48    
49    <!--引入MyBatis-Plus场景启动器,会自动引入jdbc和MyBatis-->
50    <dependency>
51      <groupId>com.baomidou</groupId>
52      <artifactId>mybatis-plus-boot-starter</artifactId>
53      <version>3.4.3</version>
54    </dependency>
55  </dependencies>
56
3.application.yml 配置数据源
  • 数据库名称
  • 用户名
  • 密码
    server:
    port: 8080
    spring:
    datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSL=false&useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
4.DruidDataSourceConfig.java 配置类切换druid数据源
1package com.sun.springboot.mybatisplus.config;
2
3import com.alibaba.druid.pool.DruidDataSource;
4import com.alibaba.druid.support.http.StatViewServlet;
5import com.alibaba.druid.support.http.WebStatFilter;
6import org.springframework.boot.context.properties.ConfigurationProperties;
7import org.springframework.boot.web.servlet.FilterRegistrationBean;
8import org.springframework.boot.web.servlet.ServletRegistrationBean;
9import org.springframework.context.annotation.Bean;
10import org.springframework.context.annotation.Configuration;
11
12import javax.sql.DataSource;
13import java.sql.SQLException;
14import java.util.Arrays;
15
16/**
17 * @author 孙显圣
18 * @version 1.0
19 */
20@Configuration
21public class DruidDataSourceConfig {
22
23    //注入一个德鲁伊数据源
24    @ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置
25    @Bean
26    public DataSource dataSource() throws SQLException {
27        DruidDataSource druidDataSource = new DruidDataSource();
28        druidDataSource.setFilters("stat, wall"); //开启sql监控
29        return druidDataSource;
30    }
31
32    //配置德鲁伊监控sql功能
33    @Bean
34    public ServletRegistrationBean statViewServlet() {
35        StatViewServlet statViewServlet = new StatViewServlet();
36        ServletRegistrationBean<StatViewServlet> registrationBean =
37                new ServletRegistrationBean<>(statViewServlet, "/druid/*");
38        //配置登录监控页面用户名和密码
39        registrationBean.addInitParameter("loginUsername", "root");
40        registrationBean.addInitParameter("loginPassword", "root");
41        return registrationBean;
42    }
43
44    //配置webStatFilter
45    @Bean
46    public FilterRegistrationBean webStatFilter() {
47        WebStatFilter webStatFilter = new WebStatFilter();
48        FilterRegistrationBean<WebStatFilter> filterRegistrationBean =
49                new FilterRegistrationBean<>(webStatFilter);
50        //默认对所有 URL 请求监控
51        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));
52        //排除 URL
53        filterRegistrationBean.addInitParameter
54                ("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");
55        return filterRegistrationBean;
56    }
57}
58
5.编写启动类Application.java,测试运行
1package com.sun.springboot.mybatisplus;
2
3import org.springframework.boot.SpringApplication;
4import org.springframework.boot.autoconfigure.SpringBootApplication;
5
6/**
7 * @author 孙显圣
8 * @version 1.0
9 */
10@SpringBootApplication
11public class Application {
12    public static void main(String[] args) {
13        SpringApplication.run(Application.class, args);
14    }
15}
16

4.MyBatis-Plus基础配置
1.编写映射表的bean
1package com.sun.springboot.mybatisplus.bean;
2
3import com.fasterxml.jackson.annotation.JsonFormat;
4import lombok.Data;
5
6import java.util.Date;
7
8/**
9 * @author 孙显圣
10 * @version 1.0
11 */
12@Data
13public class Monster {
14    private Integer id;
15    private Integer age;
16    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
17    private Date birthday;
18    private String email;
19    private String name;
20    private String gender;
21    private Double salary;
22}
23
2.MonsterMapper.java 编写Mapper接口
1package com.sun.springboot.mybatisplus.mapper;
2
3import com.baomidou.mybatisplus.core.mapper.BaseMapper;
4import com.sun.springboot.mybatisplus.bean.Monster;
5import org.apache.ibatis.annotations.Mapper;
6
7/**
8 * @author 孙显圣
9 * @version 1.0
10 */
11//直接继承BaseMapper接口
12@Mapper //注入容器
13public interface MonsterMapper extends BaseMapper<Monster> {
14    //如果提供的方法不够用再自定义方法
15}
16
3.测试接口方法使用
1package com.sun.springboot.mybatisplus;
2
3import com.sun.springboot.mybatisplus.bean.Monster;
4import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
5import org.junit.jupiter.api.Test;
6import org.springframework.boot.test.context.SpringBootTest;
7
8import javax.annotation.Resource;
9
10/**
11 * @author 孙显圣
12 * @version 1.0
13 */
14@SpringBootTest
15public class MonsterMapperTest {
16    //注入针对Mapper接口的代理对象
17    @Resource
18    private MonsterMapper monsterMapper;
19    @Test
20    public void t1() {
21        Monster monster = monsterMapper.selectById(1);
22        System.out.println(monster);
23    }
24}
25

5.MyBatis-Plus高级配置
application.yml 进行配置
1#进行mybatis-plus配置
2mybatis-plus:
3  configuration:
4    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
5
6.继续编写Service层和Controller层
1.MonsterService.java
1package com.sun.springboot.mybatisplus.service.Impl;
2
3import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4import com.sun.springboot.mybatisplus.bean.Monster;
5import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
6import com.sun.springboot.mybatisplus.service.MonsterService;
7import org.springframework.stereotype.Service;
8
9/**
10 * 这里
11 * @author 孙显圣
12 * @version 1.0
13 */
14@Service
15public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> implements MonsterService {
16    //自定义方法实现
17}
18
2.MonsterServiceImpl.java
1package com.sun.springboot.mybatisplus.service.Impl;
2
3import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
4import com.sun.springboot.mybatisplus.bean.Monster;
5import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
6import com.sun.springboot.mybatisplus.service.MonsterService;
7import org.springframework.stereotype.Service;
8
9/**
10 * 这里
11 * @author 孙显圣
12 * @version 1.0
13 */
14@Service
15public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> implements MonsterService {
16    //自定义方法实现
17}
18
3.测试
1package com.sun.springboot.mybatisplus;
2
3import com.sun.springboot.mybatisplus.bean.Monster;
4import com.sun.springboot.mybatisplus.mapper.MonsterMapper;
5import com.sun.springboot.mybatisplus.service.MonsterService;
6import org.junit.jupiter.api.Test;
7import org.springframework.boot.test.context.SpringBootTest;
8
9import javax.annotation.Resource;
10
11/**
12 * @author 孙显圣
13 * @version 1.0
14 */
15@SpringBootTest
16public class MonsterServiceTest {
17    @Resource
18    private MonsterService monsterService;
19    @Test
20    public void t1() {
21        Monster byId = monsterService.getById(2);
22        System.out.println(byId);
23    }
24}
25

4.细节说明
  • 简单来说就是MonsterServiceImpl只需要实现MonsterService接口的方法
  • 可以调用IService接口的方法,也可以调用MonsterService接口的方法

5.MonsterController.java
1package com.sun.springboot.mybatisplus.controller;
2
3import com.sun.springboot.mybatisplus.bean.Monster;
4import com.sun.springboot.mybatisplus.service.MonsterService;
5import org.springframework.stereotype.Controller;
6import org.springframework.web.bind.annotation.GetMapping;
7import org.springframework.web.bind.annotation.PathVariable;
8import org.springframework.web.bind.annotation.ResponseBody;
9
10import javax.annotation.Resource;
11
12/**
13 * @author 孙显圣
14 * @version 1.0
15 */
16@Controller
17public class MonsterController {
18    @Resource
19    //注入的是MonsterServiceImpl的bean对象,可以直接调用IService接口的方法
20    private MonsterService monsterService;
21    @GetMapping("/getMonster/{id}")
22    @ResponseBody
23    public Monster getMonsterById(@PathVariable("id") Integer id) {
24        Monster byId = monsterService.getById(id);
25        return byId;
26    }
27}
28

7.细节说明
1.@MapperScan 扫描包下的所有Mapper
启动类配置注解

2.@TableName bean的类名与表名不一致时使用
3.MyBatis引入了哪些依赖

8.MyBatisX快速开发
1.安装插件

2.使用方式
1.挑一个带小鸟的方法

2.直接alt + Enter

3.生成sql语句

4.查看生成的方法

5.点击左边的小鸟就可以直接跳转到指定方法或者xml

9.完整文件目录

10.MyBatis-Plus小结


SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)》 是转载文章,点击查看原文


相关推荐


推荐个C++高性能内存分配器
程序喵大人2025/11/22

博主介绍:程序喵大人 35 - 资深C/C++/Rust/Android/iOS客户端开发10年大厂工作经验嵌入式/人工智能/自动驾驶/音视频/游戏开发入门级选手《C++20高级编程》《C++23高级编程》等多本书籍著译者更多原创精品文章,首发gzh,见文末👇👇记得订阅专栏,以防走丢👇👇 😉C++基础系列专栏 😃C语言基础系列专栏 🤣C++大佬养成攻略专栏 🤓C++训练营 👉🏻个人网站 在现代多线程应用程序中,高效的内存管理至关重要。Google开发的TCMalloc(T


Redis(137)Redis的模块机制是什么?
Victor3562025/11/21

Redis 模块机制允许开发者扩展 Redis 的功能,通过编写动态加载的模块,可以向 Redis 添加新的命令、数据类型、事件处理器等。Redis 模块机制提供了一套 C 语言 API,开发者可以基于这些 API 实现自己的模块。 核心概念和数据结构 1. Redis 模块 API Redis 提供了一套模块 API,主要通过 redismodule.h 头文件定义。开发者需要包含该头文件并使用其中的函数和宏来实现模块。 2. 模块结构 每个模块需要定义一个 RedisModuleCtx 结构


C语言-----扫雷游戏
Ravi_12025/11/19

扫雷游戏的功能说明 : • 使⽤控制台实现经典的扫雷游戏 • 游戏可以通过菜单实现继续玩或者退出游戏 • 扫雷的棋盘是9*9的格⼦ • 默认随机布置10个雷 • 可以排查雷: ◦ 如果位置不是雷,就显⽰周围有⼏个雷 ◦ 如果位置是雷,就炸死游戏结束 ◦ 把除10个雷之外的所有⾮雷都找出来,排雷成功,游戏结束 test.c //⽂件中写游戏的测试逻辑 game.c //⽂件中写游戏中函数的实现等 game.h //⽂件中写游戏需要的数据类型和函数声明等 逻辑开始: 一、菜单 输入1进入游戏,输入


R语言在线编译器 | 提供快速便捷的编程环境,助力数据分析与学习
hyiciw_6422025/11/18

三十岁学编程:是挑战还是机会?|掌握编程技术,开启全新职业之路三十岁学编程,很多人可能会觉得自己已经不再适合入门这项技能。尤其在传统观念中,编程被视为年轻人的专属领域。然而,随着科技的不断发展,编程技能已经成为一种基础能力,甚至有着广阔的职业前景。对于三十岁的人来说,学习编程不仅是个人成长的一部分,更是迈向新职业的第一步。首先,三十岁的人在学习编程时,能够依靠自己丰富的生活经验与工作经历,这些都可以帮助他们更快地理解技术背后的应用场景。例如,对于在管理或市场领域工作的人来说,编程可以让他们更好地


C#.NET 全局异常到底怎么做?最完整的实战指南
唐青枫2025/11/17

简介 全局异常拦截是构建健壮企业级应用的关键基础设施,它能统一处理系统中未捕获的异常,提供友好的错误响应,同时记录完整的异常信息。 背景和作用 在 ASP.NET Core 应用中,异常可能在控制器、数据库操作或中间件中发生。如果每个动作方法都手动处理异常(如 try-catch),代码会变得冗长且难以维护。全局异常拦截器解决了以下问题: 统一错误处理:集中捕获所有未处理异常,返回标准化的错误响应。 标准化响应:符合 RESTful API 规范(如 RFC 7807 Problem D


c文件编译
芝麻馅汤圆儿2025/11/16

随笔记录 目录 1.背景 2. 编译 2.1 创建 .c 文件 2.2 编译->执行 1.背景 c文件在编译为可执行程序 2. 编译 2.1 创建 .c 文件 已知c 文件源码,创建 .c 文件并编译为可执行程序 1. creat *.c 文件 [root@localhost magx]# vim udp_nobind_sendto.c [root@localhost magx]# [root@localhost magx]# cat udp_nobind_


一句话把 Excalidraw 跑起来?SOLO Coder 把我以前踩过的坑都帮我填了
不惑_2025/11/14

Excalidraw 是一个开源、类手绘风格的虚拟白板工具,支持无限画布、暗色模式、图形库、导出 PNG/SVG、自由绘制、多语言、快捷键与绑定箭头等丰富能力。其官方应用原生支持 PWA 离线、本地优先存储、纯前端架构,非常适合私有化部署或内网使用。 要是你之前动手部署过开源项目,你应该懂那种感觉:教程看着简单,结果一动手就开始打怪,git clone → 解压 → 安装依赖 → 处理网络代理 → 启动服务 → 校验端口 → 本地预览。而这些步骤每一步都可能踩到网络、依赖、端口占用等坑。我以前搭


李飞飞「世界模型」正式开放,人人可用! Pro 版首月仅 7 元
新智元2025/11/13

「【新智元导读】只用一张图,一句话,就能创造出随便乱逛的 3D 世界——李飞飞这次不是在讲故事,而是真的给你「造梦神器」。今天起,全球上线,人人可用。」 李飞飞的「创世神器」今天终于正式上线了!人人可用。 这个由 WorldLabs 推出,名为 Marble 的网站,用世界模型可以生成瑰丽梦幻的「想象世界」~ 体验网址:marble.worldlabs.ai/ 这波属实是李飞飞自己联动自己了,前两天她的一篇万字长文火爆硅谷,定义 AI 的下一个十年是「空间智能」。 文章中,她为真正具备空间智


进入职场第四课—产出
Mapbarfront2025/11/12

新入职一家公司观察、融入、立足之后,要做的第四件事就是产出。 观察和融入帮你顺利度过新手期,立足则让你在团队中站稳脚跟,被大家真正接受,接下来你要做的是保持稳定,持续不断的产出,让团队感受到你究竟有多大能量。 易经乾卦中的终日乾乾,说的就是这个意思,终日指的是持续不断,意味着不能三天打鱼两天晒网,有了开头没有结尾,乾乾代表着产出,要有价值、有思考、有进阶,不能只做重复工作,毕竟在易经中,乾代表天,想完成立足到产出的关键跃升,以下这4个动作一定要做好。 1、产出有价值的成果。 立足期是你独立承担任


SpringBoot实现隐式参数注入
风象南2025/11/10

前言:一个痛点 想象一下这样的场景:用户请求带着 JWT Token 进入你的系统,Filter 层面解析 Token 得到用户 ID,接下来需要: 在 Controller 层获取用户信息 在 Service 层进行权限验证 在某些业务逻辑中记录操作日志 每一个环节都需要知道"当前用户是谁",看看目前常用的解决方案。 传统方案的"缺陷" 方案一:ThreadLocal // 看起来很"Hack" private static final ThreadLocal<Long> currentU

首页编辑器站点地图

本站内容在 CC BY-SA 4.0 协议下发布

Copyright © 2025 聚合阅读