• 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. Linux6.x 更换国内比较快的yum源-通用版

    ----------更换国内比较快的yum源----------- ----------163--------- cd /etc/yum.repos.d mv CentOS-Base.repo Cen ...

  2. Spring boot 官网学习笔记 - 开发第一个Spring boot web应用程序(使用mvn执行、使用jar执行)

    Creating the POM <?xml version="1.0" encoding="UTF-8"?> <project xmlns= ...

  3. jenkins+svn+Ant+tomcat+非maven项目构建

    首先,输入项目名称,创建一个自由风格的项目; 然后,配置旧项目的策略参数,目的是防止构建项目太多,占用资源. 下一步,jdk版本选择: 下一步,关联svn项目. 下一步:配置ant 看不清,再来一张. ...

  4. 阿里云服务器CentOS6.9安装SVN

    1.安装SVN yum -y install subversion 出现Complete表明安装成功 2.创建SVN仓库目录 mkdir -p /data/svn/repositories/yyksv ...

  5. 面试题:Python大小写转换

    小文:今天面试又搞砸了? 小 k:怎么了? 小文:又一个大小写转换的题目感觉答错了. 小 k:说来听听. 小文:将"hello world"转换为首字母大写"Hello ...

  6. Thinkphp5.0第三篇

    批量插入数据 //新增一条数据的方法 public function add() { /*$user =new UserModel(); $user->id=1; $user->name= ...

  7. poll(2) 源码分析

    poll(2) poll(2) 系统调用的功能和 select(2) 类似:等待一个文件集合中的文件描述符就绪进行I/O操作. 使用 实现 select(2) 的局限性: 关注的文件描述符集合大小最大 ...

  8. Java 语言特点

    引入<Java核心技术:Ⅰ> 1. 简单性 Java 语法是 C++ 语法的一个“ 纯净” 版本.这里没有头文件. 指针运算(甚至指 针语法).结构. 联合.操作符重载. 虚基类等.如果你 ...

  9. .netCore+Vue 搭建的简捷开发框架--目录

    .netCore+Vue 搭建的简捷开发框架 .netCore+Vue 搭建的简捷开发框架 (2)--仓储层实现和EFCore 的使用 .netCore+Vue 搭建的简捷开发框架 (3)-- Ser ...

  10. C语言-查找一个元素在数组中的位置

    #include<stdio.h> #include <stdlib.h> #include <time.h> int search(int key, int a[ ...