0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

MyBatis Plus如何简化开发

科技绿洲 来源:Java技术指北 作者:Java技术指北 2023-10-09 15:08 次阅读

本篇文章,我们通过 MyBatis Plus 来对一张表进行 CRUD 操作,来看看是如何简化我们开发的。

1、创建测试表

创建 USER 表:

DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `ID` int(11) NOT NULL,
  `USER_NAME` varchar(32) COLLATE utf8mb4_bin DEFAULT NULL,
  `USER_AGE` int(11) DEFAULT NULL,
  PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

向 USER 表中插入两条数据:

INSERT INTO `user` VALUES ('1', 'IT可乐', '18');
INSERT INTO `user` VALUES ('2', 'YSOcean', '22');

打开表,发现有两条数据了:

图片

2、创建 Spring Boot 工程

通过 IDEA 创建 Spring Boot 工程,如果不连接 https://start.spring.io/ 网址,可以将网址变成 https://start.aliyun.com/ ,如下所示:

图片

3、导入依赖

< dependency >
    < groupId >com.baomidou< /groupId >
    < artifactId >mybatis-plus-boot-starter< /artifactId >
    < version >3.4.3.2< /version >
< /dependency >
< dependency >
    < groupId >mysql< /groupId >
    < artifactId >mysql-connector-java< /artifactId >
    < scope >runtime< /scope >
< /dependency >

首先mybatis-plus 我们导入最新版 3.4.3.2。另外,由于我数据采用的是 MySql,所以这里导入了 Mysql 的连接依赖。

另外,为了简化JavaBean 类的书写,我这里额外导入一个 lombok 插件依赖。

< dependency >
    < groupId >org.projectlombok< /groupId >
    < artifactId >lombok< /artifactId >
    < optional >true< /optional >
< /dependency >

通过这个依赖的相关注解,我们可以不用书写繁琐的 get/set 方法。

4、编写数据库配置文件

在 springboot 项目的 resource 目录下,新建 application.yml 文件,添加如下内容:

server:
  port: 8082
  
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=UTF-8
    username: root
    password: root
    # >= 6.x: com.mysql.cj.jdbc.Driver
    # <= 5.x: com.mysql.jdbc.Driver
    driver-class-name: com.mysql.cj.jdbc.Driver

注意 :url里面填写的 mybatisplus 是我的数据库名称,注意修改,username和password分别填写自己的数据库连接名称和密码。

5、编写代码

①、实体类User.java

@Getter
@Setter
public class User {
    private Long id;
 
    private String userName;
 
    private String userAge;
}

②、创建UserMapper 接口

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ys.mybatisplusstudy.entry.User;
 
public interface UserMapper extends BaseMapper< User > {
}

③、启动类增加@MapperScan注解

@SpringBootApplication
@MapperScan("com.ys.mybatisplusstudy.mapper")
public class MybatisplusstudyApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(MybatisplusstudyApplication.class, args);
    }
 
}

如果不想在启动类加 @MapperScan 注解,也可在每个 Mapper 接口上增加 @Mapper 注解。

所有配置上面都已完成,是不是很简单,接下来我们对这张表进行CRUD 测试。

6、CRUD 测试

我们在编写 UserMapper 接口时,其继承了一个 BaseMapper 接口:

public interface UserMapper extends BaseMapper< User > {
}

我们进入到 BaseMapper 内部,发现其结构如下:

图片

这些方法便是我们常用的增删改查了,下面我们分别演示几个常用的。

①、insert:新增一条记录

@SpringBootTest
class MybatisplusstudyApplicationTests {
 
    @Autowired
    private UserMapper userMapper;
 
 
    /**
     * 新增一条记录
     */
    @Test
    public void testInsert(){
        User user = new User();
        user.setId(3L);
        user.setUserName("test insert");
        user.setUserAge("1");
        int insert = userMapper.insert(user);
        System.out.println("影响记录数:"+insert);
    }
}

执行完毕后,我们查看数据库:

图片

②、delete:删除记录

/**
 * 根据id删除一条记录
 */
@Test
public void testDeleteById(){
    int num = userMapper.deleteById(3L);
    System.out.println("删除的记录数为:"+num);
    QueryWrapper wrapper = new QueryWrapper();
    wrapper.eq("id",3L);
    userMapper.delete(wrapper);
}
 
/**
 * 构造相关条件删除记录
 */
@Test
public void testDelete(){
    QueryWrapper wrapper = new QueryWrapper();
    wrapper.eq("USER_NAME","test insert");
    int num = userMapper.delete(wrapper);
    System.out.println("删除的记录数为:"+num);
}

③、update:修改记录

/**
 * 根据id修改
 */
@Test
public void testudpateById(){
    User user = new User();
    user.setId(3L);
    user.setUserName("test update");
    int num = userMapper.updateById(user);
    System.out.println("修改的记录数为:"+num);
}

④、select:查询记录

/**
 * 查询User表所有记录
 */
@Test
public void testSelectAll(){
    List< User > users = userMapper.selectList(null);
    users.forEach(x- > System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge()));
}
 
/**
 * 查询指定记录
 */
@Test
public void testSelectWrapper(){
    QueryWrapper wrapper = new QueryWrapper();
    wrapper.eq("user_name","IT可乐");
    List< User > users = userMapper.selectList(wrapper);
    users.forEach(x- > System.out.println(x.getId()+"-"+x.getUserName()+"-"+x.getUserAge()));
}

发现没有,做增删改查是如此的丝滑流畅,都不用写SQL语句了。

当然,这都只是单表的简单玩法,后面我们会介绍高阶玩法。

7、打印SQL语句

这里补充一个小知识点,通过如下配置,我们可以查看执行的 SQL 语句日志。

在 applicatio.yml 文件中,进行如下配置:

# 配置slq打印日志
mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

执行效果如下:

图片

当然,这种配置只是把 SQL 日志打印到控制台便于我们调试,后面会介绍更加强大的 SQL 分析工具。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 数据
    +关注

    关注

    8

    文章

    6514

    浏览量

    87610
  • 开发
    +关注

    关注

    0

    文章

    343

    浏览量

    40607
  • 网址
    +关注

    关注

    2

    文章

    11

    浏览量

    6920
  • mybatis
    +关注

    关注

    0

    文章

    57

    浏览量

    6646
收藏 人收藏

    评论

    相关推荐

    mybatis plus的常规用法

    上篇文章我们介绍过通过 Mybatis Plus 进行增删改查,如下这段代码: /** * 根据id修改 * UPDATE user SET user_name=?, user_age
    的头像 发表于 09-25 15:06 437次阅读
    <b class='flag-5'>mybatis</b> <b class='flag-5'>plus</b>的常规用法

    MyBatis的整合

    SpringBoot-15-之整合MyBatis-注解篇+分页
    发表于 10-28 08:09

    LDO简化开关电源的设计

        1. 简化开关电源设计    开关电源多路输出一般通过增加高频变压器反馈端来实现,这使得开关电源在设计过程中增加了设计者的工作量。应用LDO作为开关电源的输出终端,可以极大地简化开
    发表于 10-29 09:25

    如何简化开关电源设计

    如何简化开关电源设计
    发表于 01-14 11:12 9次下载

    一篇让你熟练掌握 MyBatis-Plus

    MyBatis-plus 是一款 Mybatis 增强工具,用于简化开发,提高效率。下文使用缩写 mp来简化表示 MyBatis-plus
    的头像 发表于 06-01 09:30 2368次阅读
    一篇让你熟练掌握 <b class='flag-5'>MyBatis-Plus</b>!

    Mybatis-Plus Mybatis增强工具包

    ./oschina_soft/gitee-mybatis-plus.zip
    发表于 06-13 11:34 1次下载
    <b class='flag-5'>Mybatis-Plus</b> <b class='flag-5'>Mybatis</b>增强工具包

    MyBatis-Plus的使用与测试

    本文主要介绍mybatis-plus这款插件,针对springboot用户。包括引入,配置,使用,以及扩展等常用的方面做一个汇总整理,尽量包含大家常用的场景内容。
    的头像 发表于 08-22 11:56 965次阅读

    SpringBoot中MybatisX插件的简单使用教程

    MybatisX 是一款基于 IDEA 的快速开发插件,方便在使用mybatis以及mybatis-plus开始时简化繁琐的重复操作,提高开发
    的头像 发表于 02-21 09:49 868次阅读

    MyBatis-Plus为什么不支持联表

    MyBatis Plus Join`一款专门解决MyBatis Plus 关联查询问题的扩展框架,他并不一款全新的框架,而是基于`MyBatis
    的头像 发表于 02-28 15:19 1765次阅读
    <b class='flag-5'>MyBatis-Plus</b>为什么不支持联表

    介绍一款基于Mybatis-Plus的代码自助生成器

    在基于Mybatis开发模式中,很多开发者还会选择Mybatis-Plus来辅助功能开发,以此提高开发
    的头像 发表于 05-23 14:16 854次阅读
    介绍一款基于<b class='flag-5'>Mybatis-Plus</b>的代码自助生成器

    如何调优MyBatis 25倍性能

    最近在压测一批接口,发现接口处理速度慢的有点超出预期,感觉很奇怪,后面定位发现是数据库批量保存这块很慢。 这个项目用的是 mybatis-plus,批量保存直接用的是 mybatis-plus 提供的 saveBatch。 我点进去看了下源码,感觉有点不太对劲
    的头像 发表于 05-30 09:56 385次阅读
    如何调优<b class='flag-5'>MyBatis</b> 25倍性能

    你还在手写join联表查询?MyBatis-Plus这样写太香了!

    众所周知,mybatis plus 封装的 mapper 不支持 join,如果需要支持就必须自己去实现。但是对于大部分的业务场景来说,都需要多表 join,要不然就没必要采用关系型数据库了。
    的头像 发表于 07-07 10:19 856次阅读
    你还在手写join联表查询?<b class='flag-5'>MyBatis-Plus</b>这样写太香了!

    CRUD如何简化开发

    本篇文章,我们通过 MyBatis Plus 来对一张表进行 CRUD 操作,来看看是**如何简化我们开发的****。 1、创建测试表 创建 USER 表: DROP TABLE IF
    的头像 发表于 09-25 15:43 231次阅读
    CRUD如何<b class='flag-5'>简化开发</b>

    mybatis和mybatisplus的区别

    是一个轻量级的持久层框架,它提供了一个灵活的SQL映射机制,使得开发者可以编写原生SQL语句来操作数据库。MyBatis的设计目标是将原生SQL和对象关系映射(ORM)相结合,以便开发者可以灵活地操作数据库。 而
    的头像 发表于 12-03 11:53 1333次阅读

    mybatis框架的主要作用

    MyBatis框架的主要作用包括以下几个方面。 数据库操作的简化和标准化: MyBatis框架提供了一种简单的方式来执行数据库操作,包括插入、更新、删除和查询等操作。通过使用MyBatis
    的头像 发表于 12-03 14:49 1104次阅读