小工具知识网

当前位置: 首页 > 行业知识 > SpringBoot(整合MyBatis + MyBatis-Plus + MyBatisX插件使用)

行业知识

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

2026-11-06 00:38:26 来源:互联网转载

文章目录

    • 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.数据库表设计
                                      CREATE DATABASE `springboot_mybatis`;use `springboot_mybatis`;CREATE TABLE `monster` ( `id` INT NOT NULL AUTO_INCREMENT, `age` INT NOT NULL,  `birthday` DATE DEFAULT NULL,  `email` VARCHAR(255) DEFAULT NULL, `gender` char(1) DEFAULT NULL, `name` VARCHAR(255) DEFAULT NULL,  `salary` DOUBLE NOT NULL, PRIMARY KEY (`id`));SELECT * FROM `monster`;insert into monster values(null, 20, '2000-11-11', 'nmw@sohu.com', '男', '牛魔王', 5000.88);insert into monster values(null, 10, '2011-11-11', 'bgj@sohu.com', '女', '白骨精', 2000.00);
                                      3.数据库环境配置
                                      1.新建maven项目
                                      2.pom.xml 引入依赖
                                                      spring-boot-starter-parent        org.springframework.boot        2.5.3                                                org.springframework.boot            spring-boot-starter-web                                    org.projectlombok            lombok            true                                    org.springframework.boot            spring-boot-starter-test            test                                    org.springframework.boot            spring-boot-configuration-processor            true                                            org.springframework.boot            spring-boot-starter-data-jdbc                                    mysql            mysql-connector-java            runtime                                    com.alibaba            druid            1.1.17                                    org.mybatis.spring.boot            mybatis-spring-boot-starter            2.2.2            
                                      3.application.yml 配置数据源
                                      • 数据库名
                                      • 用户名
                                      • 密码
                                      • 驱动是mysql8的(因为上面使用了版本仲裁)
                                        server:  port: 8080spring:  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 编写启动类
                                        package com.sun.springboot.mybatis;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * @author 孙显圣 * @version 1.0 */@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}
                                        5.测试
                                        package com.sun.springboot.mybatis;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@SpringBootTestpublic class ApplicationTest {    //依赖注入    @Resource    private JdbcTemplate jdbcTemplate;    @Test    public void t1() {        //查看目前数据源        System.out.println(jdbcTemplate.getDataSource().getClass());    }}
                                        6.配置类切换druid数据源
                                        package com.sun.springboot.mybatis.config;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import java.sql.SQLException;import java.util.Arrays;/** * @author 孙显圣 * @version 1.0 */@Configurationpublic class DruidDataSourceConfig {    //注入一个德鲁伊数据源    @ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置    @Bean    public DataSource dataSource() throws SQLException {        DruidDataSource druidDataSource = new DruidDataSource();        druidDataSource.setFilters("stat, wall"); //开启sql监控        return druidDataSource;    }    //配置德鲁伊监控sql功能    @Bean    public ServletRegistrationBean statViewServlet() {        StatViewServlet statViewServlet = new StatViewServlet();        ServletRegistrationBean registrationBean =                new ServletRegistrationBean(statViewServlet, "/druid/*");        //配置登录监控页面用户名和密码        registrationBean.addInitParameter("loginUsername", "root");        registrationBean.addInitParameter("loginPassword", "root");        return registrationBean;    }    //配置webStatFilter    @Bean    public FilterRegistrationBean webStatFilter() {        WebStatFilter webStatFilter = new WebStatFilter();        FilterRegistrationBean filterRegistrationBean =                new FilterRegistrationBean(webStatFilter);        //默认对所有 URL 请求监控        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));        //排除 URL        filterRegistrationBean.addInitParameter                ("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");        return filterRegistrationBean;    }}
                                        7.测试数据源是否成功切换
                                        package com.sun.springboot.mybatis;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@SpringBootTestpublic class ApplicationTest {    //依赖注入    @Resource    private JdbcTemplate jdbcTemplate;    @Test    public void t1() {        //查看目前数据源        System.out.println(jdbcTemplate.getDataSource().getClass());    }}
                                        4.Mybatis基础配置
                                        1.编写映射表的bean
                                        package com.sun.springboot.mybatis.bean;import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import java.util.Date;/** * @author 孙显圣 * @version 1.0 */@Datapublic class Monster {    private Integer id;    private Integer age;    @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone="GMT+8")    private Date birthday;    private String email;    private String name;    private String gender;    private Double salary;}
                                        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指定要实现的接口
                                                        select * from monster where id = #{id}    
                                            4.application.yml 扫描mapper.xml配置文件的位置
                                            • 扫描类路径下mapper文件夹下的所有文件
                                              mybatis:  #指定要扫描的mapper.xml  mapper-locations: classpath:mapper/*.xml
                                              5.测试
                                              package com.sun.springboot.mybatis;import com.sun.springboot.mybatis.bean.Monster;import com.sun.springboot.mybatis.mapper.MonsterMapper;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@SpringBootTestpublic class ApplicationTest {    //依赖注入    @Resource    private JdbcTemplate jdbcTemplate;    //注意这里注入的是MonsterMapper的代理对象    @Resource    private MonsterMapper monsterMapper;    @Test    public void t1() {        //查看目前数据源        System.out.println(jdbcTemplate.getDataSource().getClass());    }    @Test    public void t2() {        //测试mybatis        Monster monsterById = monsterMapper.getMonsterById(1);        System.out.println(monsterById);    }}
                                              5.MyBatis高级配置
                                              1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
                                              2.方式二:直接在application.yml中配置
                                              mybatis:  #指定要扫描的mapper.xml  mapper-locations: classpath:mapper/*.xml  #配置类型别名包,这样只要在这个包下的类型都可以简写  type-aliases-package: com/sun/springboot/mybatis/bean  #输出日志  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
                                              6.继续编写Service层和Controller层
                                              1.MonsterService.java
                                              package com.sun.springboot.mybatis.service;import com.sun.springboot.mybatis.bean.Monster;/** * @author 孙显圣 * @version 1.0 */public interface MonsterService {    public Monster getMonsterById(Integer id);}
                                              2.MonsterServiceImpl.java
                                              package com.sun.springboot.mybatis.service.Impl;import com.sun.springboot.mybatis.bean.Monster;import com.sun.springboot.mybatis.mapper.MonsterMapper;import com.sun.springboot.mybatis.service.MonsterService;import org.springframework.stereotype.Service;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@Servicepublic class MonsterServiceImpl implements MonsterService {    @Resource    private MonsterMapper monsterMapper; //返回代理对象    @Override    public Monster getMonsterById(Integer id) {        return monsterMapper.getMonsterById(id);    }}
                                              3.测试
                                              package com.sun.springboot.mybatis;import com.sun.springboot.mybatis.bean.Monster;import com.sun.springboot.mybatis.mapper.MonsterMapper;import com.sun.springboot.mybatis.service.MonsterService;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.jdbc.core.JdbcTemplate;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@SpringBootTestpublic class ApplicationTest {    //依赖注入    @Resource    private MonsterService monsterService;    @Test    public void getMonsterById() {        Monster monsterById = monsterService.getMonsterById(1);        System.out.println(monsterById);    }}
                                              4.MonsterController.java
                                              package com.sun.springboot.mybatis.Controller;import com.sun.springboot.mybatis.bean.Monster;import com.sun.springboot.mybatis.service.MonsterService;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@Controllerpublic class MonsterController {    @Resource    private MonsterService monsterService;    @GetMapping("/getMonster/{id}") //路径参数的请求    @ResponseBody //响应一个json    public Monster getMonsterById(@PathVariable("id") Integer id) {        Monster monsterById = monsterService.getMonsterById(id);        return monsterById;    }}
                                              5.测试
                                              6.解决时间问题
                                              7.完整文件目录

                                              2.整合MyBatis-Plus

                                              1.MyBatis-Plus基本介绍
                                              2.数据库表设计
                                              CREATE DATABASE `springboot_mybatisplus`;USE `springboot_mybatisplus`;CREATE TABLE `monster` (`id` INT NOT NULL AUTO_INCREMENT,`age` INT NOT NULL, `birthday` DATE DEFAULT NULL, `email` VARCHAR(255) DEFAULT NULL, `gender` CHAR(1) DEFAULT NULL, `name` VARCHAR(255) DEFAULT NULL, `salary` DOUBLE NOT NULL,PRIMARY KEY (`id`));SELECT * FROM `monster`;INSERT INTO monster VALUES(NULL, 20, '2000-11-11', 'xzj@sohu.com', '男', ' 蝎 子 精 ',15000.88);INSERT INTO monster VALUES(NULL, 10, '2011-11-11', 'ytj@sohu.com', '女', ' 玉 兔 精 ',18000.88);
                                              3.数据库环境配置
                                              1.创建maven项目
                                              2.pom.xml 导入依赖
                                                      spring-boot-starter-parent    org.springframework.boot    2.5.3                        org.springframework.boot      spring-boot-starter-web                  org.projectlombok      lombok      true                  org.springframework.boot      spring-boot-starter-test      test                  org.springframework.boot      spring-boot-configuration-processor      true                      mysql      mysql-connector-java      runtime                  com.alibaba      druid      1.1.17                      com.baomidou      mybatis-plus-boot-starter      3.4.3      
                                              3.application.yml 配置数据源
                                              • 数据库名称
                                              • 用户名
                                              • 密码
                                                server:  port: 8080spring:  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数据源
                                                package com.sun.springboot.mybatisplus.config;import com.alibaba.druid.pool.DruidDataSource;import com.alibaba.druid.support.http.StatViewServlet;import com.alibaba.druid.support.http.WebStatFilter;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.boot.web.servlet.ServletRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import javax.sql.DataSource;import java.sql.SQLException;import java.util.Arrays;/** * @author 孙显圣 * @version 1.0 */@Configurationpublic class DruidDataSourceConfig {    //注入一个德鲁伊数据源    @ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置    @Bean    public DataSource dataSource() throws SQLException {        DruidDataSource druidDataSource = new DruidDataSource();        druidDataSource.setFilters("stat, wall"); //开启sql监控        return druidDataSource;    }    //配置德鲁伊监控sql功能    @Bean    public ServletRegistrationBean statViewServlet() {        StatViewServlet statViewServlet = new StatViewServlet();        ServletRegistrationBean registrationBean =                new ServletRegistrationBean(statViewServlet, "/druid/*");        //配置登录监控页面用户名和密码        registrationBean.addInitParameter("loginUsername", "root");        registrationBean.addInitParameter("loginPassword", "root");        return registrationBean;    }    //配置webStatFilter    @Bean    public FilterRegistrationBean webStatFilter() {        WebStatFilter webStatFilter = new WebStatFilter();        FilterRegistrationBean filterRegistrationBean =                new FilterRegistrationBean(webStatFilter);        //默认对所有 URL 请求监控        filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));        //排除 URL        filterRegistrationBean.addInitParameter                ("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*");        return filterRegistrationBean;    }}
                                                5.编写启动类Application.java,测试运行
                                                package com.sun.springboot.mybatisplus;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/** * @author 孙显圣 * @version 1.0 */@SpringBootApplicationpublic class Application {    public static void main(String[] args) {        SpringApplication.run(Application.class, args);    }}
                                                4.MyBatis-Plus基础配置
                                                1.编写映射表的bean
                                                package com.sun.springboot.mybatisplus.bean;import com.fasterxml.jackson.annotation.JsonFormat;import lombok.Data;import java.util.Date;/** * @author 孙显圣 * @version 1.0 */@Datapublic class Monster {    private Integer id;    private Integer age;    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")    private Date birthday;    private String email;    private String name;    private String gender;    private Double salary;}
                                                2.MonsterMapper.java 编写Mapper接口
                                                package com.sun.springboot.mybatisplus.mapper;import com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.sun.springboot.mybatisplus.bean.Monster;import org.apache.ibatis.annotations.Mapper;/** * @author 孙显圣 * @version 1.0 *///直接继承BaseMapper接口@Mapper //注入容器public interface MonsterMapper extends BaseMapper {    //如果提供的方法不够用再自定义方法}
                                                3.测试接口方法使用
                                                package com.sun.springboot.mybatisplus;import com.sun.springboot.mybatisplus.bean.Monster;import com.sun.springboot.mybatisplus.mapper.MonsterMapper;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@SpringBootTestpublic class MonsterMapperTest {    //注入针对Mapper接口的代理对象    @Resource    private MonsterMapper monsterMapper;    @Test    public void t1() {        Monster monster = monsterMapper.selectById(1);        System.out.println(monster);    }}
                                                5.MyBatis-Plus高级配置
                                                application.yml 进行配置
                                                #进行mybatis-plus配置mybatis-plus:  configuration:    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
                                                6.继续编写Service层和Controller层
                                                1.MonsterService.java
                                                package com.sun.springboot.mybatisplus.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.sun.springboot.mybatisplus.bean.Monster;import com.sun.springboot.mybatisplus.mapper.MonsterMapper;import com.sun.springboot.mybatisplus.service.MonsterService;import org.springframework.stereotype.Service;/** * 这里 * @author 孙显圣 * @version 1.0 */@Servicepublic class MonsterServiceImpl extends ServiceImpl implements MonsterService {    //自定义方法实现}
                                                2.MonsterServiceImpl.java
                                                package com.sun.springboot.mybatisplus.service.Impl;import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;import com.sun.springboot.mybatisplus.bean.Monster;import com.sun.springboot.mybatisplus.mapper.MonsterMapper;import com.sun.springboot.mybatisplus.service.MonsterService;import org.springframework.stereotype.Service;/** * 这里 * @author 孙显圣 * @version 1.0 */@Servicepublic class MonsterServiceImpl extends ServiceImpl implements MonsterService {    //自定义方法实现}
                                                3.测试
                                                package com.sun.springboot.mybatisplus;import com.sun.springboot.mybatisplus.bean.Monster;import com.sun.springboot.mybatisplus.mapper.MonsterMapper;import com.sun.springboot.mybatisplus.service.MonsterService;import org.junit.jupiter.api.Test;import org.springframework.boot.test.context.SpringBootTest;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@SpringBootTestpublic class MonsterServiceTest {    @Resource    private MonsterService monsterService;    @Test    public void t1() {        Monster byId = monsterService.getById(2);        System.out.println(byId);    }}
                                                4.细节说明
                                                • 简单来说就是MonsterServiceImpl只需要实现MonsterService接口的方法
                                                • 可以调用IService接口的方法,也可以调用MonsterService接口的方法
                                                  5.MonsterController.java
                                                  package com.sun.springboot.mybatisplus.controller;import com.sun.springboot.mybatisplus.bean.Monster;import com.sun.springboot.mybatisplus.service.MonsterService;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.ResponseBody;import javax.annotation.Resource;/** * @author 孙显圣 * @version 1.0 */@Controllerpublic class MonsterController {    @Resource    //注入的是MonsterServiceImpl的bean对象,可以直接调用IService接口的方法    private MonsterService monsterService;    @GetMapping("/getMonster/{id}")    @ResponseBody    public Monster getMonsterById(@PathVariable("id") Integer id) {        Monster byId = monsterService.getById(id);        return byId;    }}
                                                  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小结

上一篇:ASP源码深度解析,功能实现与探索之旅

下一篇:服务器区域限制怎么解决?