Springboot整合MyBatisPlus框架操作MySQL

1、MyBatis-Plus概述

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

【技术储备】
拥有 Java 开发环境以及相应 IDE

熟悉 Spring Boot

熟悉 Maven

【特征】


为简化开发而生

1、只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑。

2、效率至上:只需简单配置,即可快速进行单表 CRUD 操作,从而节省大量时间。

3、丰富功能:代码生成、自动分页、逻辑删除、自动填充等功能一应俱全。

2、数据库支持

任何能使用 MyBatis 进行 CRUD, 并且支持标准 SQL 的数据库,具体支持情况如下,如果不在下列表查看分页部分教程 PR 您的支持。

MySQL,Oracle,DB2,H2,HSQL,SQLite,PostgreSQL,SQLServer,Phoenix,Gauss ,ClickHouse,Sybase,OceanBase,Firebird,Cubrid,Goldilocks,csiidb,informix,TDengine,redshift

达梦数据库,虚谷数据库,人大金仓数据库,南大通用(华库)数据库,南大通用数据库,神通数据库,瀚高数据库,优炫数据库,星瑞格数据库

3、快速上手案例

版本信息:springboot2.7.14+mysql5.1.42+mybatis-plus3.5.3.2

【工程结构】

3.1、创建springboot工程被导入相关依赖

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.2</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.42</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

3.2、配置数据库相关信息

log-impl 控制台打印出mybatis执行时的具体sql、查询条件、返回值等

map-underscore-to-camel-case :mybatisplus 在查询数据库的时候回默认的开启数据库下划线驼峰命名转化,我们需要关闭。

XML 复制代码
spring:
  datasource:
    driver-class-name: com.mysql.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mybatisplus
    username: root
    password: 123456

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    map-underscore-to-camel-case: false
  # 如果是放在src/main/java目录下 classpath:/com/*/*/mapper/*Mapper.xml
  # 如果是放在resource目录 classpath:/mapper/**.xml
  #mapper-locations: classpath:/mapper/**.xml

3.3、创建数据库和表信息

XML 复制代码
CREATE DATABASE mybatisplus;
USE mybatisplus;
CREATE TABLE student(
   stu_id VARCHAR(50),
   stu_name VARCHAR(30),
   stu_sex VARCHAR(2),
   stu_age VARCHAR(4),
   stu_addr VARCHAR(50),
   stu_pwd VARCHAR(50)
)DEFAULT CHARSET=utf8;
INSERT INTO student VALUES('1001','晓春','男','33','安徽合肥','1001');
INSERT INTO student VALUES('1002','陈平安','男','18','安徽合肥','1002');

3.4、创建bean对象

@TableName("student"):定义映射表信息

@TableId("stu_id"):定义数据库主键

java 复制代码
@Data
@AllArgsConstructor
@NoArgsConstructor
@TableName("student")
public class Student {
    @TableId("stu_id")
    private String stu_id;
    private String stu_name;
    private String stu_sex;
    private String stu_age;
    private String stu_addr;
    private String stu_pwd;
}

3.5、创建Mapper接口

java 复制代码
public interface StudentMapper extends BaseMapper<Student> {
}

3.6、在启动类中扫描mapper接口

通过@MapperScan("com.txc.mybatisplus.mapper")注解扫描mapper接口,注意地址不能写错了。

java 复制代码
@SpringBootApplication
@MapperScan("com.txc.mybatisplus.mapper")
public class Mybatisplusdemo1Application {
    public static void main(String[] args) {
        SpringApplication.run(Mybatisplusdemo1Application.class, args);
    }
}

3.7、功能1:查询所有学生信息

通过springweb创建一个测试类,查询student表中的所有学生信息

java 复制代码
@RestController
public class StudentController {
    @Autowired(required = false)
    StudentMapper studentMapper;

    @RequestMapping("/testmybatisplus")
    @ResponseBody
    public void testMybatisPlus() {
        List<Student> list=studentMapper.selectList(null);
        //Assert.isTrue(5 == list.size(), "");
        list.forEach(System.out::println);
    }
}

3.8、功能2:模糊查询学生信息

说明1:queryWrapper.eq("stu_name" ," 陈平安" );// 表示根据stu_name 字段 查询陈平安

效果类似于:select * from student where stu_name='陈平安'

说明2:queryWrapper.like("stu_addr" ," 安徽合肥" );// 表示根据stu_addr 模糊查询安徽合肥
效果类似于
select * from student where stu_addr like '%陈平安%'

两者合起来的效果是:

select * from student where stu_name='陈平安' and stu_addr like '%陈平安%';

java 复制代码
@Controller
public class StudentController {
    @Autowired(required = false)
    StudentMapper studentMapper;
    //根据姓名查询学生信息
    @RequestMapping("/testMybatisPlusByName")
    @ResponseBody
    public void testMybatisPlusByName() {
        //QueryWrapper封装查询信息
        QueryWrapper<Student> queryWrapper=new QueryWrapper<>();
        //表示查询的时候表字段stu_name的值为陈平安
        queryWrapper.eq("stu_name","陈平安");
        //表示根据stu_addr模糊查询安徽合肥
        queryWrapper.like("stu_addr","安徽合肥");
        List<Student> list=studentMapper.selectList(queryWrapper);
        list.forEach(stu->{
            System.out.println(stu.getStu_name());
        });
    }

3.9、功能3:根据id查询学生信息

java 复制代码
//根据id查询学生信息
@RequestMapping("/testMybatisPlusById")
@ResponseBody
public void testMybatisPlusById() {
    //QueryWrapper封装查询信息
    QueryWrapper<Student> queryWrapper=new QueryWrapper<>();
    //表示查询的时候表字段stu_name的值为陈平安
    queryWrapper.eq("stu_id","1001");
    Student stu=studentMapper.selectOne(queryWrapper);
    System.out.println(stu.toString());
}
}

3.10、功能3:添加学生信息

java 复制代码
@Controller
public class StudentController {

    @Autowired(required = false)
    StudentMapper studentMapper;

    //添加学生信息
    @RequestMapping("/testMybatisPlusAdd")
    @ResponseBody
    public void testMybatisPlusAdd() {
        Student stu=new Student("1003","十一郎","男","34","安徽合肥","1003");
        studentMapper.insert(stu);
        System.out.println("=======数据添加成功========");
    }
}

3.11、功能4:修改学生信息

java 复制代码
@Controller
public class StudentController {

    @Autowired(required = false)
    StudentMapper studentMapper;

    //修改学生信息
    @RequestMapping("/testMybatisPlusupdate")
    @ResponseBody
    public void testMybatisPlusupdate() {
        Student stu=new Student("1003","十一郎","男","34","安徽合肥","1003");
        studentMapper.updateById(stu);
        System.out.println("=======数据修改成功========");
    }
}

3.12、功能5:删除学生信息

java 复制代码
@Controller
public class StudentController {

    @Autowired(required = false)
    StudentMapper studentMapper;

    //删除学生信息
    @RequestMapping("/testMybatisPlusDelete")
    @ResponseBody
    public void testMybatisPlusDelete() {
        Student stu=new Student();
        stu.setStu_id("1003");
        studentMapper.deleteById(stu);
        System.out.println("=======删除修改成功========");
    }
}

4、源码下载

源码属于vip资源,如果需要可在评论区留言,我修改成免费。

https://download.csdn.net/download/tangshiyilang/88276862

相关推荐
独断万古他化7 分钟前
【Java 实战项目】多用户网页版聊天室:消息传输模块 —— 基于 WebSocket 实现实时通信
java·spring boot·后端·websocket·ajax·mybatis
舒一笑11 分钟前
🚀 我用一行命令,把 OSS 私有文件变成“可直接下载的公网链接”(很多人不会)
后端
yyt36304584114 分钟前
spring单例bean线程安全问题讨论
java·spring
小兔崽子去哪了24 分钟前
Docker 安装 PostgreSQL
数据库·后端·postgresql
Sweet锦25 分钟前
SpringBoot 3.5 集成 InfluxDB 1.8
spring boot·时序数据库
野犬寒鸦28 分钟前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
我是大猴子34 分钟前
事务失效的几种情况以及是为什么(详解)
java·开发语言
snakeshe10101 小时前
深入理解 Java 注解:从原理到实战
后端
Lucaju1 小时前
吃透 Spring AI Alibaba 多智能体|四大协同模式+完整代码
后端
Nyarlathotep01131 小时前
Redis的对象(5):有序集合对象
redis·后端