MyBatisPlus入门实战(SpringBoot)

MyBatisPlus入门实战(SpringBoot)

一、概述

Mybatis是一个很火的轻量级的持久层框架。通常需要写xml文件,编写SQL就可方便的去操作数据库。对于操作数据库的工具来说很是灵活,这里不过多赘述了。

Mybatis-Plus(简称MP)是Mybatis的增强工具,对Mybatis只做增强不做修改。有更高的效率。

内部有封装常用的CURD操作,可达到调用方法操作数据库,而无需写SQL语句。

下面就是实战去体验Plus的对于单表CRUD的高效。

二、实战使用

1、环境

  • SpringBoot
  • Mysql
  • MybatisPlus

2、数据&代码说明

创建一个名为user的数据库:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user`  (
  `id` int(11) NOT NULL,
  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `age` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `own_email` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES (1, 'JoJo', '23', '[email protected]');
INSERT INTO `user` VALUES (2, 'kit', '22', '[email protected]');
INSERT INTO `user` VALUES (23, 'bii', '22', '[email protected]');

SET FOREIGN_KEY_CHECKS = 1;

3、实战运行

1-导入依赖


    com.baomidou
    mybatis-plus-boot-starter
    3.1.0



    org.springframework.boot
    spring-boot-starter-test
    test


    mysql
    mysql-connector-java
    runtime


    org.springframework.boot
    spring-boot-starter-jdbc

2-配置数据库

# 配置数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    name: root
    password: 12345
    url: jdbc:mysql:///test

3-编写对应数据库的实体类User

@Data
@TableName("user") // 表名的映射
public class UserPO {
    // 指定id,id的类型
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    // 指定字段名的映射
    @TableField("name")
    private String name;

     // 指定字段名的映射
    @TableField("age")
    private String age;

     // 指定字段名的映射
    @TableField("own_email")
    private String Email;
}

实体类使用了lombok简化书写

4-编写Mapper

/**
 * @author Hacah
 * @date 2021/5/19 10:00
 */
public interface UserMapper extends BaseMapper {
}

继承Mybatis-Plus的BaseMapper

5-编写测试代码

@Autowired
private UserMapper userMapper;

@Test
void contextLoads() {

    List userPOS = userMapper.selectList(null);
    System.out.println(userPOS);

}

结果:

[UserPO(id=1, name=JoJo, age=23, [email protected]), UserPO(id=2, name=kit, age=22, [email protected])]

4、CRUD的操作方法介绍

1-查询

查询一条:
1.slelectByOne

通过id查询一条数据。

// 1.查询一个
UserPO userPO = userMapper.selectById(1);
System.out.println(userPO);

结果:

UserPO(id=1, name=JoJo, age=23, [email protected])
2.selectOne

通过条件查询一条数据,若查询条数多于1条会报错。

// 2.使用条件查询一个
QueryWrapper userPOQueryWrapper = new QueryWrapper<>();
userPOQueryWrapper.eq("age", "22"); // SQL上增加age = 22条件
System.out.println(userMapper.selectOne(userPOQueryWrapper));
// SELECT id,name,age,own_email AS Email FROM user WHERE age = 22; 

QueryWrapper类能够构造查询的条件

QueryWrapper

这是拼接条件的类,传入该类可以构造sql的操作的条件

比如or、and、= 、between... in..等等

查询多条
1.selectByMap

通过Map查询多条数据。

// 3.使用map查询多条数据
HashMap stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("age", 22);
System.out.println(userMapper.selectByMap(stringObjectHashMap));

结果:

[UserPO(id=2, name=kit, age=22, [email protected]), 
 UserPO(id=3, name=bii, age=22, [email protected])]
2.selectBatchIds

通过id进行批量查询

// 4.使用个id查询更多数据
ArrayList userPOS = new ArrayList<>();
userPOS.add(1);
userPOS.add(2);
System.out.println(userMapper.selectBatchIds(userPOS));

结果:

[UserPO(id=1, name=JoJo, age=23, [email protected]), 
 UserPO(id=2, name=kit, age=22, [email protected])]

2-新增

1.update

传入一个实体类新增一条数据

 // 5. 新增数据
UserPO userPO = new UserPO();
userPO.setAge("12");
userPO.setName("fibs");
userPO.setEmail("[email protected]");
userMapper.insert(userPO);

结果:

3-修改

1.updateById

通过id更新,传入一个实体类

 // 6.修改数据
UserPO userPO = new UserPO();
userPO.setId(1);
userPO.setAge("31");
userMapper.updateById(userPO);

结果:

2.update

传入一个 实体类 和 条件类,更新数据

 // 6.通过条件修改数据
UserPO userPO = new UserPO();
userPO.setAge("31");

QueryWrapper userPOQueryWrapper = new QueryWrapper<>();
userPOQueryWrapper.isNotNull("age"); // 构造条件where age != null

userMapper.update(userPO,userPOQueryWrapper);

结果:

age不为null的全部修改成31

4-删除

删除和select类似,有一下方法:

  • deleteById 通过id删除

  • deleteByMap 使用map删除

  • delete 通过条件删除

  • deleteBatchIds 通过id批量删除


这里只演示delete,使用条件删除数据

删除id小于等于1的数据

userMapper.delete(new QueryWrapper().le("id",1));

结果:

三、总结

本博客是一个入门的描述。先大概了解MybatisPlus的增强之处,并通过实践去体会,去认证它的运行结果。让我们对此生映像,以便后续的使用,解决我们后续遇到的问题就是我们一直学习的目的。

你可能感兴趣的:(MyBatisPlus入门实战(SpringBoot))