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

文章目录

    • 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.需求分析

image-20240317110407816

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项目

image-20240317111137777

2.pom.xml 引入依赖
    <!--导入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><!--引入相关依赖--><dependencies><!--常规依赖--><!--web场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--引入测试场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--配置处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--数据库配置--><!--引入data-jdbc数据源--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jdbc</artifactId></dependency><!--mysql依赖使用版本仲裁--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- 引入 druid 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><!--MyBatis场景启动器--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.2.2</version></dependency></dependencies>
3.application.yml 配置数据源
  • 数据库名
  • 用户名
  • 密码
  • 驱动是mysql8的(因为上面使用了版本仲裁)
server:port: 8080
spring:datasource: #配置数据源url: jdbc:mysql://localhost:3306/springboot_mybatis?useSSL=false&useUnicode=true&characterEncoding=UTF-8username: rootpassword: rootdriver-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*/
@SpringBootApplication
public 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*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void t1() {//查看目前数据源System.out.println(jdbcTemplate.getDataSource().getClass());}
}

image-20240317135531900

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*/
@Configuration
public class DruidDataSourceConfig {//注入一个德鲁伊数据源@ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置@Beanpublic DataSource dataSource() throws SQLException {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setFilters("stat, wall"); //开启sql监控return druidDataSource;}//配置德鲁伊监控sql功能@Beanpublic ServletRegistrationBean statViewServlet() {StatViewServlet statViewServlet = new StatViewServlet();ServletRegistrationBean<StatViewServlet> registrationBean =new ServletRegistrationBean<>(statViewServlet, "/druid/*");//配置登录监控页面用户名和密码registrationBean.addInitParameter("loginUsername", "root");registrationBean.addInitParameter("loginPassword", "root");return registrationBean;}//配置webStatFilter@Beanpublic FilterRegistrationBean webStatFilter() {WebStatFilter webStatFilter = new WebStatFilter();FilterRegistrationBean<WebStatFilter> filterRegistrationBean =new FilterRegistrationBean<>(webStatFilter);//默认对所有 URL 请求监控filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//排除 URLfilterRegistrationBean.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*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate JdbcTemplate jdbcTemplate;@Testpublic void t1() {//查看目前数据源System.out.println(jdbcTemplate.getDataSource().getClass());}
}

image-20240317153854191

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*/
@Data
public 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指定要实现的接口
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapperPUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""https://mybatis.org/dtd/mybatis-3-mapper.dtd">
<!--指定要实现的接口-->
<mapper namespace="com.sun.springboot.mybatis.mapper.MonsterMapper"><select id="getMonsterById" resultType="com.sun.springboot.mybatis.bean.Monster" parameterType="Integer">select * from monster where id = #{id}</select>
</mapper>

image-20240317160222655

4.application.yml 扫描mapper.xml配置文件的位置
  • 扫描类路径下mapper文件夹下的所有文件
mybatis:#指定要扫描的mapper.xmlmapper-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*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate JdbcTemplate jdbcTemplate;//注意这里注入的是MonsterMapper的代理对象@Resourceprivate MonsterMapper monsterMapper;@Testpublic void t1() {//查看目前数据源System.out.println(jdbcTemplate.getDataSource().getClass());}@Testpublic void t2() {//测试mybatisMonster monsterById = monsterMapper.getMonsterById(1);System.out.println(monsterById);}
}

image-20240317162322200

5.MyBatis高级配置
1.方式一:在application.yml中配置mybatis.config-location指定mybatis-config.xml配置文件的位置
2.方式二:直接在application.yml中配置
mybatis:#指定要扫描的mapper.xmlmapper-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*/
@Service
public class MonsterServiceImpl implements MonsterService {@Resourceprivate MonsterMapper monsterMapper; //返回代理对象@Overridepublic 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*/
@SpringBootTest
public class ApplicationTest {//依赖注入@Resourceprivate MonsterService monsterService;@Testpublic void getMonsterById() {Monster monsterById = monsterService.getMonsterById(1);System.out.println(monsterById);}
}

image-20240317171924248

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*/
@Controller
public class MonsterController {@Resourceprivate MonsterService monsterService;@GetMapping("/getMonster/{id}") //路径参数的请求@ResponseBody //响应一个jsonpublic Monster getMonsterById(@PathVariable("id") Integer id) {Monster monsterById = monsterService.getMonsterById(id);return monsterById;}
}
5.测试

image-20240317172341555

6.解决时间问题

image-20240317172733899

7.完整文件目录

image-20240317175408170

2.整合MyBatis-Plus

1.MyBatis-Plus基本介绍

image-20240317173128759

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项目

image-20240317173858334

2.pom.xml 导入依赖
  <!--导入springboot父工程--><parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.boot</groupId><version>2.5.3</version></parent><!--引入相关依赖--><dependencies><!--常规依赖--><!--web场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!--lombok--><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><!--引入测试场景启动器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><!--配置处理器--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-configuration-processor</artifactId><optional>true</optional></dependency><!--数据库配置--><!--mysql依赖使用版本仲裁--><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><scope>runtime</scope></dependency><!-- 引入 druid 依赖 --><dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId><version>1.1.17</version></dependency><!--引入MyBatis-Plus场景启动器,会自动引入jdbc和MyBatis--><dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><version>3.4.3</version></dependency></dependencies>
3.application.yml 配置数据源
  • 数据库名称
  • 用户名
  • 密码
server:port: 8080
spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/springboot_mybatisplus?useSSL=false&useUnicode=true&characterEncoding=UTF-8username: rootpassword: 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*/
@Configuration
public class DruidDataSourceConfig {//注入一个德鲁伊数据源@ConfigurationProperties("spring.datasource") //读取yaml配置文件的参数,获取数据源配置@Beanpublic DataSource dataSource() throws SQLException {DruidDataSource druidDataSource = new DruidDataSource();druidDataSource.setFilters("stat, wall"); //开启sql监控return druidDataSource;}//配置德鲁伊监控sql功能@Beanpublic ServletRegistrationBean statViewServlet() {StatViewServlet statViewServlet = new StatViewServlet();ServletRegistrationBean<StatViewServlet> registrationBean =new ServletRegistrationBean<>(statViewServlet, "/druid/*");//配置登录监控页面用户名和密码registrationBean.addInitParameter("loginUsername", "root");registrationBean.addInitParameter("loginPassword", "root");return registrationBean;}//配置webStatFilter@Beanpublic FilterRegistrationBean webStatFilter() {WebStatFilter webStatFilter = new WebStatFilter();FilterRegistrationBean<WebStatFilter> filterRegistrationBean =new FilterRegistrationBean<>(webStatFilter);//默认对所有 URL 请求监控filterRegistrationBean.setUrlPatterns(Arrays.asList("/*"));//排除 URLfilterRegistrationBean.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*/
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);}
}

image-20240317175826043

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*/
@Data
public 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<Monster> {//如果提供的方法不够用再自定义方法
}
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*/
@SpringBootTest
public class MonsterMapperTest {//注入针对Mapper接口的代理对象@Resourceprivate MonsterMapper monsterMapper;@Testpublic void t1() {Monster monster = monsterMapper.selectById(1);System.out.println(monster);}
}

image-20240317181409483

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*/
@Service
public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> 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*/
@Service
public class MonsterServiceImpl extends ServiceImpl<MonsterMapper, Monster> 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*/
@SpringBootTest
public class MonsterServiceTest {@Resourceprivate MonsterService monsterService;@Testpublic void t1() {Monster byId = monsterService.getById(2);System.out.println(byId);}
}

image-20240317193644393

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

image-20240317193513003

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*/
@Controller
public class MonsterController {@Resource//注入的是MonsterServiceImpl的bean对象,可以直接调用IService接口的方法private MonsterService monsterService;@GetMapping("/getMonster/{id}")@ResponseBodypublic Monster getMonsterById(@PathVariable("id") Integer id) {Monster byId = monsterService.getById(id);return byId;}
}

image-20240317194934543

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

image-20240317200417488

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

image-20240317201044828

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

image-20240317201658927

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

image-20240317203048085

2.直接alt + Enter

image-20240317203124474

3.生成sql语句

image-20240317203146538

4.查看生成的方法

image-20240317203209726

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

image-20240317203629654

image-20240317203639228

9.完整文件目录

image-20240317203723886

10.MyBatis-Plus小结

image-20240317203958723

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

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

相关文章

AI日报:戴尔首席执行官:我们可能在10年内需要100倍以上的数据中心

文章目录 数据中心的需要认知超能力的成本&#xff1a;接近零 数据中心的需要 戴尔创始人兼首席执行官迈克尔戴尔表示&#xff0c;随着对人工智能服务需求的增加&#xff0c;数据中心的容量可能必须在10年内从目前的水平增加100倍。 戴尔在SXSW 2024的炉边谈话中表示&#xff…

数据库表结构导出工具【人生的第一个开源工具】

数据库表结构导出工具 如今我努力奔跑&#xff0c;不过是为了追上那个曾经被寄予厚望的自己 —— 约翰。利文斯顿 本工具是一个用于将数据库表结构导出到 Word 文档的实用工具。它能够连接到指定的数据库&#xff0c;提取数据库中所有表的结构信息&#xff0c;并将这些信息以专…

2024 年(第 12 届)“泰迪杯”数据挖掘挑战赛——B 题:基于多模态特征融合的图像文本检索完整思路与源代码分享

一、问题背景 随着近年来智能终端设备和多媒体社交网络平台的飞速发展&#xff0c;多媒体数据呈现海量增长 的趋势&#xff0c;使当今主流的社交网络平台充斥着海量的文本、图像等多模态媒体数据&#xff0c;也使得人 们对不同模态数据之间互相检索的需求不断增加。有效的信…

01_线性回归

线性回归 1 一元线性回归重要公式2 一元线性回归code实现3 sklearn实现一元线性回归4 多元线性回归公式5 sklearn实现多元线性回归6 模型评价指标7 多项式回归7.1将多项式回归作为线性回归处理7.2 sklaearn多项式特征维度扩展 1 一元线性回归重要公式 一元线性回归的均方误差&…

谁将主导未来AI市场?Claude3、Gemini、Sora与GPT-4的技术比拼

【最新增加Claude3、Gemini、Sora、GPTs讲解及AI领域中的集中大模型的最新技术】 2023年随着OpenAI开发者大会的召开&#xff0c;最重磅更新当属GPTs&#xff0c;多模态API&#xff0c;未来自定义专属的GPT。微软创始人比尔盖茨称ChatGPT的出现有着重大历史意义&#xff0c;不亚…

微信开发者工具如何使用?使用注意事项

&#xff08;1&#xff09;单位如何进行换算&#xff1f; 1 px 750/屏幕宽度 rpx 1 rpx 屏幕宽度/750 px &#xff08;2&#xff09;如何新建文件&#xff1f; 1> 点开app.json 2> 在“pages/index/index”后面接“&#xff0c;pages/自定义文件夹名/自定义文件名”…

怎么在空闲时间用网络赚钱且收入不低于50?

何其有幸&#xff0c;我们生活在一个网络时代&#xff0c;买东西&#xff0c;生活缴费都可以通过网络来完成&#xff0c;给大家省下了大量的时间和精力&#xff0c;让生活更加便利。不仅如此&#xff0c;还可以通过网络来娱乐、交流&#xff0c;更可以通过它来赚钱。很多朋友上…

网络编程--高并发服务器

这里写目录标题 引入场景 多进程并发服务器二级目录二级目录二级目录 多线程并发服务器二级目录二级目录二级目录 多路IO转接服务器设计思路对比引入 select函数简介参数介绍第一个参数第234参数返回值对于第234参数的应用对于最后一个参数总结 epoll进阶二级目录二级目录二级目…

跳绳计数,YOLOV8POSE

跳绳计数&#xff0c;YOLOV8POSE 通过计算腰部跟最初位置的上下波动&#xff0c;计算跳绳的次数

栈和队列(Java实现)

栈和队列&#xff08;Java实现&#xff09; 栈 栈(Stack)&#xff1a;栈是先进后出&#xff08;FILO, First In Last Out&#xff09;的数据结构。Java中实现栈有以下两种方式&#xff1a; stack类LinkedList实现&#xff08;继承了Deque接口&#xff09; &#xff08;1&am…

【C语言入门】浮点型数据在内存中的存储

✨✨欢迎大家来到Celia的博客✨✨ &#x1f389;&#x1f389;创作不易&#xff0c;请点赞关注&#xff0c;多多支持哦&#x1f389;&#x1f389; 所属专栏&#xff1a;C语言 个人主页&#xff1a;Celias blog~ 目录 ​编辑 引言 引例 一、浮点型在内存中的存储方式 1.1 …

Linux 时间系统调用

UNIX及LinuxQ的时间系统是由「新纪元时间」Epoch开始计算起。Epoch是指定为1970年1月1日凌晨零点零分零秒&#xff0c;格林威治时间。目前大部份的UNX系统都是用32位来记录时间&#xff0c;正值表示为1970以后&#xff0c;负值则表示1970年以前。 对于当前时间到Epoch 我们用两…

2024蓝桥杯每日一题(DFS)

备战2024年蓝桥杯 -- 每日一题 Python大学A组 试题一&#xff1a;奶牛选美 试题二&#xff1a;树的重心 试题三&#xff1a;大臣的差旅费 试题四&#xff1a;扫雷 试题一&#xff1a;奶牛选美 【题目描述】 听说最近两斑点的奶牛最受欢迎&#xff0c;…

后端系统开发之——创建SpringBoot工程

原文地址&#xff1a;后端框架系统开发之——创建SpringBoot工程 - Pleasure的博客 下面是正文内容&#xff1a; 前言 现在的市场环境&#xff0c;如果你单单只是作为前端工程师或者是后端工程师&#xff0c;在开发Web应用的时候都需要去读取企业提供的接口文档。而当你前后端…

没想到打脸这么快,AI程序员已经出发了!

大家好啊&#xff0c;我是豆小匠。 先介绍一下本期的主角&#xff1a;Devin&#xff0c;世界上第一位AI程序员&#xff0c;由2023年11月成立的10人初创公司Cognition AI开发。 1. AI程序员已经能做到什么程度 3月13日&#xff0c;Cognition AI公司在X平台&#xff08;原推特&…

关于volatile与指令重排序的探讨

写在开头 在之前的学习我们了解到&#xff0c;为了充分利用缓存&#xff0c;提高程序的执行速度&#xff0c;编译器在底层执行的时候&#xff0c;会进行指令重排序的优化操作&#xff0c;但这种优化&#xff0c;在有些时候会带来 有序性 的问题。 那何为有序性呢&#xff1f;…

LeetCode Python - 57. 插入区间

目录 题目描述解法方法一&#xff1a;排序 区间合并方法二&#xff1a;一次遍历 运行结果方法一&#xff1a;排序 区间合并方法二&#xff1a;一次遍历 题目描述 给你一个 无重叠的 &#xff0c;按照区间起始端点排序的区间列表。 在列表中插入一个新的区间&#xff0c;你需…

MySQL语法分类 DQL(1)基础查询

//语法 select 字段列表 from 表名列表 where条件列表 group by分组字段 having 分组后的条件 order by排序 limit 分页限定为了更好的学习这里给出基本表数据用于查询操作 create table student (id int, name varchar(20), age int, sex varchar(5),address varchar(100),ma…

数据的响应式:实现动态数据驱动的技巧

&#x1f90d; 前端开发工程师、技术日更博主、已过CET6 &#x1f368; 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 &#x1f560; 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 &#x1f35a; 蓝桥云课签约作者、上架课程《Vue.js 和 E…

rt-thread之通讯协议modbus软件包的使用记录(lwip+modbus组合)

前言 使用freemodbus软件包使用网口通讯(sallwip)ip地址使用dhcp动态获取 软件包 相关宏定义 /*-----------------------------------------NET 宏定义-------------------------------------------*/#define RT_USING_SAL #define SAL_INTERNET_CHECK /* Docking with prot…