• pom.xml

     <dependencies>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
    </dependency>
    <dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
    </dependency>
    <dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
    </dependency>
    <dependency>
    <groupId>com.h2database</groupId>
    <artifactId>h2</artifactId>
    <scope>runtime</scope>
    </dependency>
    <dependency>
    <groupId>p6spy</groupId>
    <artifactId>p6spy</artifactId>
    </dependency>
    </dependencies>

    <build>
    <plugins>
    <plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    </plugin>
    </plugins>
    </build>
  • application.yml

    # DataSource Config
    spring:
    datasource:
    driver-class-name: org.h2.Driver
    url: jdbc:h2:tcp://192.168.180.115:19200/~/mem/test
    username: root
    password: test

    # Logger Config
    logging:
    level:
    com.mp.crud: debug
  • dao层

    public interface UserMapper extends BaseMapper<User> {

    }
  • 实体类

     @Data
    @Accessors(chain = true)
    @TableName("user")
    public class User {

    private Long id;
    private String name;
    private Integer age;
    private String email;

    @TableField(exist = false)
    private Integer count;
    }
  • 配置类

     @Configuration
    @MapperScan("com.mp.crud.mapper")
    public class MybatisPlusConfig {

    }
  • 测试类

     @SpringBootTest
    @RunWith(SpringRunner.class)
    class CrudApplicationTests {

    @Resource
    private UserMapper mapper;

    @Test
    public void aInsert() {
    User user = new User();
    user.setName("小羊");
    user.setAge(3);
    user.setEmail("abc@mp.com");
    assertThat(mapper.insert(user)).isGreaterThan(0);
    // 成功直接拿会写的 ID
    assertThat(user.getId()).isNotNull();
    }


    @Test
    public void bDelete() {
    assertThat(mapper.deleteById(3L)).isGreaterThan(0);
    assertThat(mapper.delete(new QueryWrapper<User>()
    .lambda().eq(User::getName, "Sandy"))).isGreaterThan(0);
    }


    @Test
    public void cUpdate() {
    //UPDATE user SET email=? WHERE id=?
    assertThat(mapper.updateById(new User().setId(1L).setEmail("ab@c.c"))).isGreaterThan(0);
    //UPDATE user SET name=?, age=? WHERE (id = ?)
    assertThat(
    mapper.update(
    new User().setName("mp"),
    Wrappers.<User>lambdaUpdate()
    .set(User::getAge, 3)
    .eq(User::getId, 2)
    )
    ).isGreaterThan(0);
    User user = mapper.selectById(2);
    assertThat(user.getAge()).isEqualTo(3);
    assertThat(user.getName()).isEqualTo("mp");

    mapper.update(
    null,
    Wrappers.<User>lambdaUpdate().set(User::getEmail, null).eq(User::getId, 2)
    );
    assertThat(mapper.selectById(1).getEmail()).isEqualTo("ab@c.c");
    user = mapper.selectById(2);
    assertThat(user.getEmail()).isNull();
    assertThat(user.getName()).isEqualTo("mp");

    mapper.update(
    new User().setEmail("miemie@baomidou.com"),
    new QueryWrapper<User>()
    .lambda().eq(User::getId, 2)
    );
    user = mapper.selectById(2);
    assertThat(user.getEmail()).isEqualTo("miemie@baomidou.com");

    mapper.update(
    new User().setEmail("miemie2@baomidou.com"),
    Wrappers.<User>lambdaUpdate()
    .set(User::getAge, null)
    .eq(User::getId, 2)
    );
    user = mapper.selectById(2);
    assertThat(user.getEmail()).isEqualTo("miemie2@baomidou.com");
    assertThat(user.getAge()).isNull();
    }


    @Test
    public void dSelect() {
    mapper.insert(
    new User().setId(10086L)
    .setName("miemie")
    .setEmail("miemie@baomidou.com")
    .setAge(3));
    assertThat(mapper.selectById(10086L).getEmail()).isEqualTo("miemie@baomidou.com");
    User user = mapper.selectOne(new QueryWrapper<User>().lambda().eq(User::getId, 10086));
    assertThat(user.getName()).isEqualTo("miemie");
    assertThat(user.getAge()).isEqualTo(3);

    List<User> users = mapper.selectList(Wrappers.<User>lambdaQuery().select(User::getId));
    System.out.println(users);

    mapper.selectList(Wrappers.<User>lambdaQuery().select(User::getId))
    .forEach(x -> {
    assertThat(x.getId()).isNotNull();
    assertThat(x.getEmail()).isNull();
    assertThat(x.getName()).isNull();
    assertThat(x.getAge()).isNull();
    });
    mapper.selectList(new QueryWrapper<User>().select("id", "name"))
    .forEach(x -> {
    assertThat(x.getId()).isNotNull();
    assertThat(x.getEmail()).isNull();
    assertThat(x.getName()).isNotNull();
    assertThat(x.getAge()).isNull();
    });
    }

    @Test
    public void orderBy() {
    List<User> users = mapper.selectList(Wrappers.<User>query().orderByAsc("age"));
    System.out.println(users);
    //assertThat(users).isNotEmpty();
    }

    @Test
    public void selectMaps() {
    List<Map<String, Object>> mapList = mapper.selectMaps(Wrappers.<User>query().orderByAsc("age"));
    assertThat(mapList).isNotEmpty();
    assertThat(mapList.get(0)).isNotEmpty();
    //{ID=1189005852158324737, EMAIL=abc@mp.com, NAME=小羊, AGE=3}
    System.out.println(mapList.get(0));
    }

    @Test
    public void selectMapsPage() {
    IPage<Map<String, Object>> page = mapper.selectMapsPage(new Page<>(1, 5), Wrappers.<User>query().orderByAsc("age"));
    assertThat(page).isNotNull();
    assertThat(page.getRecords()).isNotEmpty();
    assertThat(page.getRecords().get(0)).isNotEmpty();
    }

    @Test
    public void orderByLambda() {
    //SELECT id,name,email,age FROM user ORDER BY age ASC
    List<User> users = mapper.selectList(Wrappers.<User>lambdaQuery().orderByAsc(User::getAge));
    List<User> users1 = mapper.selectList(Wrappers.<User>query().orderByAsc("age"));
    System.out.println(users1);
    //assertThat(users).isNotEmpty();
    }

    @Test
    public void testSelectMaxId() {
    // SELECT max(id) as id FROM user
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("max(id) as id");
    //User(id=1189005852158324737, name=null, age=null, email=null, count=null)
    User user = mapper.selectOne(wrapper);
    System.out.println(user);
    System.out.println("maxId=" + user.getId());
    List<User> users = mapper.selectList(Wrappers.<User>lambdaQuery().orderByDesc(User::getId));
    Assert.assertEquals(user.getId().longValue(), users.get(0).getId().longValue());
    }

    @Test
    public void testGroup() {
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("age, count(*)")
    .groupBy("age");
    List<Map<String, Object>> maplist = mapper.selectMaps(wrapper);
    for (Map<String, Object> mp : maplist) {
    System.out.println(mp);
    }
    /**
    * lambdaQueryWrapper groupBy orderBy
    */
    LambdaQueryWrapper<User> lambdaQueryWrapper = new QueryWrapper<User>().lambda()
    .select(User::getAge)
    .groupBy(User::getAge)
    .orderByAsc(User::getAge);
    for (User user : mapper.selectList(lambdaQueryWrapper)) {
    System.out.println(user);
    }
    }

    @Test
    public void testTableFieldExistFalse(){
    QueryWrapper<User> wrapper = new QueryWrapper<>();
    wrapper.select("age, count(age) as count")
    .groupBy("age");
    List<User> list = mapper.selectList(wrapper);
    list.forEach(System.out::println);
    list.forEach(x->{
    Assert.assertNull(x.getId());
    Assert.assertNotNull(x.getAge());
    Assert.assertNotNull(x.getCount());
    });
    mapper.insert(
    new User().setId(10088L)
    .setName("miemie")
    .setEmail("miemie@baomidou.com")
    .setAge(3));
    User miemie = mapper.selectById(10088L);
    Assert.assertNotNull(miemie);

    }

    }
  • 测试结果(我处只运行了部分的测试方法)

SpringBoot整合Mybatisplus3.x之CRUD(一)的更多相关文章

  1. SpringBoot 整合 MyBatis,实现 CRUD 示例

    目录 前言 创建项目/模块 SpringBoot Console Application CommandLineRunner SpringBoot 集成 MyBatis 创建数据库/表 配置数据源/连 ...

  2. SpringBoot整合MyBatis-Plus3.1详细教程

    作者:Sans_ juejin.im/post/5cfa6e465188254ee433bc69 一.说明 Mybatis-Plus是一个Mybatis框架的增强插件,根据官方描述,MP只做增强不做改 ...

  3. SpringBoot整合MybatisPlus3.X之SQL执行分析插件(十四)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  4. SpringBoot整合MybatisPlus3.X之乐观锁(十三)

    主要适用场景 意图: 当要更新一条记录的时候,希望这条记录没有被别人更新 乐观锁实现方式: 取出记录时,获取当前version 更新时,带上这个version 执行更新时, set version = ...

  5. SpringBoot整合MybatisPlus3.X之自定义Mapper(十)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  6. SpringBoot整合MybatisPlus3.X之SQL注入器(九)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  7. SpringBoot整合MybatisPlus3.X之Wrapper(五)

    官方文档说明: 以下出现的第一个入参boolean condition表示该条件是否加入最后生成的sql中 以下代码块内的多个方法均为从上往下补全个别boolean类型的入参,默认为true 以下出现 ...

  8. SpringBoot整合MybatisPlus3.X之分页插件(四)

    注:详细请看2.X博客中,3.X直接上代码. 建议装一个MybatisX插件,可以在Mapper和Xml来回切换 pom.xml <dependencies> <dependency ...

  9. SpringBoot整合MybatisPlus3.X之逻辑删除(三)

    pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

随机推荐

  1. pycharm远程代码调试

    1.pycharm连接linux服务器并上传功能 # Tools-->Deployment-->Configuration # 点击+号,选择SFTP类型,name填项目名字-->填 ...

  2. Webstorm轻松部署项目至服务器

    wo大前端在开发环境下,需要将项目部署到测试环境,webstorm进行基础配置操作就可实现. 一.在Deployment选项下配置远程服务器地址 点击加号,选择type类型,Name自己填,帮你找到这 ...

  3. IDEA 学习笔记之 1.5已经过时问题

    1.5已经过时问题: apache-maven-3.5.0\conf\settings.xml添加: <profile> <id>jdk-1.8</id> < ...

  4. 网络下载器 Internet Download Manager v6.35.5 绿色便携版

    Internet Download Manager,简称 IDM,是国外的一款优秀网络下载工具.目前凭借着下载计算的速度优势在外媒网站中均受好评,现在已被多数国人熟知.Internet Downloa ...

  5. Lab_0操作系统实验准备(全)

    一.实验介绍 实验目的: 知识储备: 二.相关下载 1.下载镜像文件 这个镜像文件是vdi类型的,只能用visualbox下载 链接:https://pan.baidu.com/s/1L7WX6ju4 ...

  6. Windows 10 删除C盘的用户,恢复技巧

    起因 入域不成功,然后强制删除了C盘 Users里面 账户 然后再进行入域的时候就入域不成功了,如果再进行登录就会提示 无法登录到你的账户 通常可以通过从你的账户注销,然后重新登录解决此问题 如果不立 ...

  7. KafkaStream低级别API

    开发者可以通过Processor接口来实现自己的自定义处理逻辑.接口提供了Process和Punctuate方法. 其中:Process方法用于处理接受到的消息 Punctuate方法指定时间间隔周期 ...

  8. Java容器总结

    容器总结 Java容器工具包框架图 List,Set,Map三者的区别 List(对付顺序的好帮手): List接口存储一组不唯一(可以有多个元素引用相同的对象),有序的对象 Set(注重独一无二的性 ...

  9. Stock Charts

    Description You're in the middle of writing your newspaper's end-of-year economics summary, and you' ...

  10. Cobalt Strike之CHM、LNK、HTA钓鱼

    CHM钓鱼 CHM介绍 CHM(Compiled Help Manual)即“已编译的帮助文件”.它是微软新一代的帮助文件格式,利用HTML作源文,把帮助内容以类似数据库的形式编译储存.利用CHM钓鱼 ...