博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBatisPlus简单入门(SpringBoot)
阅读量:2134 次
发布时间:2019-04-30

本文共 4867 字,大约阅读时间需要 16 分钟。

目录

一、概述

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-导入依赖

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-编写测试代码

@Autowiredprivate UserMapper userMapper;@Testvoid contextLoads() {
List
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
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=63362@kit.com),  UserPO(id=3, name=bii, age=22, Email=354643@bii.com)]
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=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
userPOQueryWrapper = new QueryWrapper<>();userPOQueryWrapper.isNotNull("age"); // 构造条件where age != nulluserMapper.update(userPO,userPOQueryWrapper);

结果:

image-20210519141124662

age不为null的全部修改成31

4-删除

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

  • deleteById 通过id删除

  • deleteByMap 使用map删除

  • delete 通过条件删除

  • deleteBatchIds 通过id批量删除


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

删除id小于等于1的数据

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

结果:

image-20210519142006498

三、总结

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

通过条件删除

  • deleteBatchIds 通过id批量删除

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

删除id小于等于1的数据

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

结果:

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

三、总结

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

转载地址:http://leugf.baihongyu.com/

你可能感兴趣的文章
【LEETCODE】198-House Robber
查看>>
【LEETCODE】62-Unique Paths
查看>>
【LEETCODE】310-Minimum Height Trees
查看>>
【LEETCODE】207-Course Schedule
查看>>
【LEETCODE】263-Ugly Number
查看>>
【LEETCODE】202-Happy Number
查看>>
和机器学习和计算机视觉相关的数学
查看>>
十个值得一试的开源深度学习框架
查看>>
【LEETCODE】240-Search a 2D Matrix II
查看>>
【LEETCODE】53-Maximum Subarray
查看>>
【LEETCODE】215-Kth Largest Element in an Array
查看>>
【LEETCODE】241-Different Ways to Add Parentheses
查看>>
【LEETCODE】312-Burst Balloons
查看>>
【LEETCODE】232-Implement Queue using Stacks
查看>>
【LEETCODE】225-Implement Stack using Queues
查看>>
【LEETCODE】155-Min Stack
查看>>
【LEETCODE】20-Valid Parentheses
查看>>
【LEETCODE】290-Word Pattern
查看>>
【LEETCODE】36-Valid Sudoku
查看>>
【LEETCODE】205-Isomorphic Strings
查看>>