MyBatisPlus简单入门(SpringBoot)

7 篇文章 0 订阅
6 篇文章 0 订阅

MyBatisPlus入门实战(SpringBoot)

一、概述

Myb

摘要由CSDN通过智能技术生成

一、概述

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

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

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

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

二、实战使用

1、环境

  • SpringBoot
  • Mysql
  • MybatisPlus

2、数据&代码说明

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

image-20210519111041802

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', '1215135@jojo.com');
INSERT INTO `user` VALUES (2, 'kit', '22', '63362@kit.com');
INSERT INTO `user` VALUES (23, 'bii', '22', '354643@bii.com');

SET FOREIGN_KEY_CHECKS = 1;

3、实战运行

1-导入依赖
<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.1.0</version>
</dependency>

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
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<UserPO> {
}

继承Mybatis-Plus的BaseMapper

5-编写测试代码

@Autowired
private UserMapper userMapper;

@Test
void contextLoads() {

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

}

结果:

[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]

4、CRUD的操作方法介绍

1-查询
查询一条:
1.slelectByOne

通过id查询一条数据。

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

结果:

UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com)
2.selectOne

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

// 2.使用条件查询一个
QueryWrapper<UserPO> 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<String, Object> stringObjectHashMap = new HashMap<>();
stringObjectHashMap.put("age", 22);
System.out.println(userMapper.selectByMap(stringObjectHashMap));

结果:

[UserPO(id=2, name=kit, age=22, Email=63362@kit.com), 
 UserPO(id=3, name=bii, age=22, Email=354643@bii.com)]
2.selectBatchIds

通过id进行批量查询

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

结果:

[UserPO(id=1, name=JoJo, age=23, Email=1215135@jojo.com), 
 UserPO(id=2, name=kit, age=22, Email=63362@kit.com)]
2-新增
1.update

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

 // 5. 新增数据
UserPO userPO = new UserPO();
userPO.setAge("12");
userPO.setName("fibs");
userPO.setEmail("5332633@fibs.com");
userMapper.insert(userPO);

结果:

image-20210519114004869

3-修改

1.updateById

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

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

结果:

image-20210519140205045

2.update

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

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

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

userMapper.update(userPO,userPOQueryWrapper);

结果:

image-20210519141124662

age不为null的全部修改成31

4-删除

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

  • deleteById 通过id删除

  • deleteByMap 使用map删除

  • delete 通过条件删除

  • deleteBatchIds 通过id批量删除


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

删除id小于等于1的数据

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

结果:

image-20210519142006498

三、总结

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

  • deleteBatchIds 通过id批量删除

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

删除id小于等于1的数据

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

结果:

[外链图片转存中…(img-TITefKFc-1621405974289)]

三、总结

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值