当前位置: 首页 > news >正文

一文带你入门MyBatis Plus

一文带你入门MyBatis Plus

  • 1.环境准备
  • 2.加入日志功能
  • 3.通用CRUD操作
  • 4.自定义功能

1.环境准备

创建测试数据库user表:

在这里插入图片描述

创建SpringBoot工程,导入Maven依赖:

<!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <version>1.18.26</version>
    <scope>provided</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/com.mysql/mysql-connector-j -->
<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <version>8.0.32</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.baomidou/mybatis-plus-boot-starter -->
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.3.1</version>
</dependency>

<!-- https://mvnrepository.com/artifact/com.alibaba/druid -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>druid</artifactId>
    <version>1.2.15</version>
</dependency>

之后配置druid数据源:

spring:
  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource

编写Mapper接口类,继承BaseMapper(MyBatis - plus自带的接口集合):

@Mapper
public interface UserMapper extends BaseMapper<User> {
}

现在来测试一下吧:

@Autowired
private UserMapper userMapper;

@Test
void contextLoads() {
    // 查询所有用户
    List<User> users = userMapper.selectList(null);
    users.forEach(System.out::println);
}

查询成功!

在这里插入图片描述


2.加入日志功能

在SpringBoot配置文件加入如下的配置即可开启MybatisPlus日志功能:

mybatis-plus:
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

之后再次查询,就可以看到SQL语句执行的一些日志了:

在这里插入图片描述


3.通用CRUD操作

添加功能演示:

@Autowired
private UserMapper userMapper;

@Test
void contextLoads() {
    User user = new User();
    user.setAge(18);
    user.setName("大河");
    user.setEmail("339@qq.com");
    int insert = userMapper.insert(user);
    System.out.println("insert:" + insert);
}

数据添加成功:

在这里插入图片描述

删除功能演示:

通过id删除数据:

@Test
void contextLoads() {
    int i = userMapper.deleteById(1);
    System.out.println(i);
}

通过map删除数据:

@Test
void contextLoads() {
    // 删除名字为wewe,年龄为12的数据
    HashMap<String, Object> map = new HashMap<>();
    map.put("name", "wewe");
    map.put("age", 12);
    int i = userMapper.deleteByMap(map);
    System.out.println(i);
}
==>  Preparing: DELETE FROM user WHERE name = ? AND age = ?
==> Parameters: wewe(String), 12(Integer)
<==    Updates: 1

批量删除演示:

@Test
void contextLoads() {
    List<Integer> list = Arrays.asList(3, 4);
    int i = userMapper.deleteBatchIds(list);
    System.out.println(i);
}
==>  Preparing: DELETE FROM user WHERE id IN ( ? , ? )
==> Parameters: 3(Integer), 4(Integer)
<==    Updates: 2

修改功能演示:

通过id修改数据:

@Test
void contextLoads() {
    User user = new User();
    user.setId(6L);
    user.setName("lisilisi");
    int i = userMapper.updateById(user);
    System.out.println(i);
}
==>  Preparing: UPDATE user SET name=? WHERE id=?
==> Parameters: lisilisi(String), 6(Long)
<==    Updates: 1

查询功能演示:

通过id查询数据:

@Test
void contextLoads() {
    User user = userMapper.selectById(6);
    System.out.println(user);
}
==>  Preparing: SELECT id,name,age,email FROM user WHERE id=?
==> Parameters: 6(Integer)
<==    Columns: id, name, age, email
<==        Row: 6, lisilisi, 23, 1111@qq.com
<==      Total: 1

通过id查询多条记录:

@Test
void contextLoads() {
    List<Integer> list = Arrays.asList(5, 6);
    List<User> users = userMapper.selectBatchIds(list);
    users.forEach(System.out::println);
}
==> Parameters: 5(Integer), 6(Integer)
<==    Columns: id, name, age, email
<==        Row: 5, dada, 11, 111@qq.com
<==        Row: 6, lisilisi, 23, 1111@qq.com
<==      Total: 2

map条件查询:

@Test
void contextLoads() {
    HashMap<String, Object> map = new HashMap<>();
    map.put("id", 5);
    map.put("name", "dada");
    List<User> users = userMapper.selectByMap(map);
    users.forEach(System.out::println);
}
==>  Preparing: SELECT id,name,age,email FROM user WHERE name = ? AND id = ?
==> Parameters: dada(String), 5(Integer)
<==    Columns: id, name, age, email
<==        Row: 5, dada, 11, 111@qq.com
<==      Total: 1

4.自定义功能

MyBatisPlus只提供了简单的单表查询接口,要想实现复杂的查询甚至优化,我们还是需要使用自定义的Mapper XML文件

来演示一下:

Mapper接口中:

@Mapper
public interface UserMapper extends BaseMapper<User> {
    Map<String, Object> selectMapById(Long id);
}

编写Mapper接口类的XML配置:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.klza.mapper.UserMapper">
    <select id="selectMapById" resultType="map">
        select id,name,age,email from user where id = #{id}
    </select>
</mapper>

来测试一下吧:

@Test
void contextLoads() {
    Map<String, Object> map = userMapper.selectMapById(6L);
    System.out.println(map);
}

相关文章:

  • java split()方法 toLowerCase() 方法
  • Ubuntu - command checklist
  • 小程序-模板与配置-WXSS模板样式
  • 小程序-模板与配置-WXML模板语法
  • 群晖NAS安装frp实现内网穿透(非Docker)
  • Linux性能学习(2.1):内存_查看系统内存以及Buffer Cached说明
  • Connext DDS开发指南(5)基本QoS策略
  • MoCoViT: Mobile Convolutional Vision Transformer
  • Harbor安装
  • leetcode解题思路分析(一百三十六)1158 - 1169 题
  • @EnableWebMvc注解让swagger-ui.html无法打开404报错问题及其解决方案(史上最全最详细)
  • Java接口:概述、多实现、多继承、JDK8后接口新增方法
  • 【Java基础】010 -- Java基础综合练习
  • Cesium 和 webgl 加载各类型模型说明
  • 微服务项目(01)
  • 【git】使用技巧
  • Python爬虫(6)-selenium用requests、wget、urllib3这3种方法搞定图片和PDF文件下载
  • 【python学习笔记】:方便好用的自动化脚本
  • 如何使用Python中处理word文档的模块—docx模块
  • 【Python语言基础】——Python 文件处理
  • 电加热油锅炉工作原理_电加热导油
  • 大型电蒸汽锅炉_工业电阻炉
  • 燃气蒸汽锅炉的分类_大连生物质蒸汽锅炉
  • 天津市维修锅炉_锅炉汽化处理方法
  • 蒸汽汽锅炉厂家_延安锅炉厂家
  • 山西热水锅炉厂家_酒店热水 锅炉
  • 蒸汽锅炉生产厂家_燃油蒸汽发生器
  • 燃煤锅炉烧热水_张家口 淘汰取缔燃煤锅炉
  • 生物质锅炉_炉
  • 锅炉天然气_天燃气热风炉