前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查

小书MybatisPlus第1篇-整合SpringBoot快速开始增删改查

作者头像
字母哥博客
发布2020-09-23 14:37:36
4140
发布2020-09-23 14:37:36
举报
文章被收录于专栏:写字母的代码哥

Mybatis Plus官方文档已经很完善了,为什么还要写一个这样的文档?

  • 官方文档注重知识结构的整理,没有注重学习者的学习顺序
  • 官方文档中的案例注重API描述,比较适合学会mybatis plus之后,遇到问题再去翻阅。对于第一次使用Mybatis的初学者进行学习不是非常友好。
  • 官方文档考虑的是全面完整的介绍Mybatis Plus, 我考虑的角度是:“最佳实践”。
  • 世界上很多东西都符合2/8原则,本文档的目的是将:最重要最常用的那20%帮你提炼出来、快速上手应用!。另外的那80%都是不常用的,有空自己再去官方文档里面学吧!

官网文档地址:https://mybatis.plus/guide/

我会将此文档写成一个系列的内容,记得关注我!zimug.com 我会将此文档写成一个系列的内容,记得关注我!zimug.com 我会将此文档写成一个系列的内容,记得关注我!zimug.com

一、Spring Boot整合Mybatis Plus

通过maven坐标引入依赖

代码语言:javascript
复制
<!-- mybatis -->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.1.2</version>
</dependency>
<!-- mysql -->
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>
<!-- lombok -->
<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <optional>true</optional>
</dependency>

application配置数据源及日志输出级别

代码语言:javascript
复制
# 配置数据源
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/mp?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai
    username: test
    password: <填上数据库访问密码>

# 配置日志
logging:
  level:
    root: warn
    com.zimug.boot.launch.mapper: trace

第三步:配置Mybatis的Mapper类文件的包扫描路径

代码语言:javascript
复制
@SpringBootApplication
@MapperScan(basePackages = {"com.zimug.boot.launch.mapper"})
public class BootLaunchApplication {
    public static void main(String[] args) {
        SpringApplication.run(BootLaunchApplication.class, args);
    }
}

二、编码构建实体和Mapper

编写实体类User.java,对应的数据库表创建SQL在文末。

代码语言:javascript
复制
@Data   //lombok注解
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}

编写Mapper类UserMapper.java

代码语言:javascript
复制
public interface UserMapper extends BaseMapper<User> {

}

三、CRUD基础使用案例

3.1.增加一条记录

代码语言:javascript
复制
User user = new User();
user.setName("字母哥");
user.setAge(18);

int row = userMapper.insert(user);

System.out.println("影响记录数:"+row);
System.out.println("雪花算法id: "+user.getId());

写了上面的java代码,MP将会自动的根据java代码构造下面的SQL去数据库执行。注意:主键默认采用雪花算法

代码语言:javascript
复制
# 主键自动填充了雪花算法
INSERT INTO user ( id, name, age) 
VALUES ( ?, ?, ? )

3.2.根据主键删除一条记录

代码语言:javascript
复制
int rows = userMapper.deleteById(1170243901535006722L);
System.out.println("影响记录数:" + rows);

1170243901535006722L是数据插入的时候根据雪花算法生成的id

代码语言:javascript
复制
DELETE FROM user 
WHERE id=?

3.3.根据条件删除记录

代码语言:javascript
复制
//构造条件
Map<String,Object> map = new HashMap<>();
map.put("name","字母哥");
map.put("age",18);
//执行删除
int rows = userMapper.deleteByMap(map);
System.out.println("影响记录数:" + rows);
代码语言:javascript
复制
DELETE FROM user 
WHERE name = ? 
AND age = ?

3.4.根据主键查询一条数据

代码语言:javascript
复制
User user = userMapper.selectById(1089911557332887553L);
System.out.println(user);
代码语言:javascript
复制
SELECT id,name,age,email
FROM user 
WHERE id=?

3.5.根据ids批量查找数据

代码语言:javascript
复制
List<Long> ids = Arrays.asList(
    1087982257332887553L,
    1094590409767661570L,
    1094592041087729666L
);
List<User> list = userMapper.selectBatchIds(ids);
list.forEach(System.out::println);
代码语言:javascript
复制
SELECT id,name,age,email
FROM user 
WHERE id IN ( ? , ? , ? )

3.6.根据指定参数查询

代码语言:javascript
复制
Map<String, Object> map = new HashMap<>();
//map的key指代的是mysql表中的列名,并非java实体的属性名
map.put("name", "Jone");

List<User> list = userMapper.selectByMap(map);
list.forEach(System.out::println);
代码语言:javascript
复制
SELECT id,name,age,email
FROM user 
WHERE name = ?

3.7.指定查询结果字段

1.

代码语言:javascript
复制
QueryWrapper<User> query = new QueryWrapper<>();
query.select("name", "age")   //指定查询结果字段
  .in("age", Arrays.asList(30, 31, 34, 35))
  .last("limit 1");
List<User> list = userMapper.selectList(query);
list.forEach(System.out::println);
代码语言:javascript
复制
SELECT name,age 
FROM user 
WHERE age IN (?,?,?,?)
LIMIT 1

2.

代码语言:javascript
复制
QueryWrapper<User> query = new QueryWrapper<>();
query.like("name", "J%")    //like是MP的条件构造器,表示"模糊查询"
  .lt("age", 40)     //lt是MP的条件构造器,表示"小于"关系
  .select("name", "age");
List<Map<String, Object>> maps = userMapper.selectMaps(query);
maps.forEach(System.out::println);
代码语言:javascript
复制
SELECT name,age 
FROM user 
WHERE name LIKE ? 
AND age < ?

3.8.通过主键id修改数据

代码语言:javascript
复制
User user = new User();
user.setId(1088248199570832385L);
user.setAge(18);
user.setEmail("hadoopcn2@163.com");

int rows = userMapper.updateById(user);
System.out.println("影响记录数:" + rows);
代码语言:javascript
复制
UPDATE user 
SET age=?, email=? 
WHERE id=?

3.9.根据UpdateWrapper自定义条件修改数据

代码语言:javascript
复制
UpdateWrapper<User> update = new UpdateWrapper<>();
update.eq("name", "Jack").eq("age", 28);    //eq是MP的条件构造器,表示"等于"关系

User user = new User();
user.setAge(29);
user.setEmail("hadoopcn2@163.com");
int rows = userMapper.update(user, update);
System.out.println("影响记录数:" + rows);
代码语言:javascript
复制
UPDATE user 
SET age=?, email=? 
WHERE name = ? 
AND age = ?

附录---测试SQL:

代码语言:javascript
复制
DROP TABLE IF EXISTS user;

CREATE TABLE user
(
    id BIGINT(20) NOT NULL COMMENT '主键ID',
    name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名',
    age INT(11) NULL DEFAULT NULL COMMENT '年龄',
    email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱',
    PRIMARY KEY (id)
);

其对应的数据库 Data 脚本如下:

代码语言:javascript
复制
DELETE FROM user;

INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou.com'),
(2, 'Jack', 20, 'test2@baomidou.com'),
(3, 'Tom', 28, 'test3@baomidou.com'),
(4, 'Sandy', 21, 'test4@baomidou.com'),
(5, 'Billie', 24, 'test5@baomidou.com');

喜欢 (5)or分享 (0)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Mybatis Plus官方文档已经很完善了,为什么还要写一个这样的文档?
  • 一、Spring Boot整合Mybatis Plus
  • 二、编码构建实体和Mapper
  • 三、CRUD基础使用案例
    • 3.1.增加一条记录
      • 3.2.根据主键删除一条记录
        • 3.3.根据条件删除记录
          • 3.4.根据主键查询一条数据
            • 3.5.根据ids批量查找数据
              • 3.6.根据指定参数查询
                • 3.7.指定查询结果字段
                  • 3.8.通过主键id修改数据
                    • 3.9.根据UpdateWrapper自定义条件修改数据
                    • 附录---测试SQL:
                    相关产品与服务
                    数据库
                    云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档