01.快速开始
快速开始
数据库表
现有一张 User 表,其对应的数据库 Schema 脚本如下:
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 脚本如下:
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');
依赖配置
<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>com.baomidou</groupId>
        <artifactId>mybatis-plus-boot-starter</artifactId>
        <version>Latest Version</version>
    </dependency>
    <dependency>
        <groupId>com.h2database</groupId>
        <artifactId>h2</artifactId>
        <scope>runtime</scope>
    </dependency>
</dependencies>
在 application.yml 配置文件中添加 H2 数据库的相关配置:
# DataSource Config
spring:
  datasource:
    driver-class-name: org.h2.Driver
    schema: classpath:db/schema-h2.sql
    data: classpath:db/data-h2.sql
    url: jdbc:h2:mem:test
    username: root
    password: test
在 Spring Boot 启动类中添加 @MapperScan 注解,扫描 Mapper 文件夹:
@SpringBootApplication
@MapperScan("com.baomidou.mybatisplus.samples.quickstart.mapper")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(QuickStartApplication.class, args);
    }
}
编码
编写实体类 User.java:
@Data
public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
}
编写 Mapper 类 UserMapper.java:
public interface UserMapper extends BaseMapper<User> {
}
添加测试类,进行功能测试:
@RunWith(SpringRunner.class)
@SpringBootTest
public class SampleTest {
    @Autowired
    private UserMapper userMapper;
    @Test
    public void testSelect() {
        System.out.println(("----- selectAll method test ------"));
        List<User> userList = userMapper.selectList(null);
        Assert.assertEquals(5, userList.size());
        userList.forEach(System.out::println);
    }
}
UserMapper 中的 selectList() 方法的参数为 MP 内置的条件封装器 Wrapper,所以不填写就是无任何条件。
Service 案例
mp 框架同样提供了 service 层的封装支持,让我们能够简化 service 层的开发;service 接口继承 IService,service 实现类继承 ServiceImpl,IService 提供了所有通用常用的方法,包括批处理添加更新支持,以及 lambda 支持;DepartmentService 继承 IService:
public interface DepartmentService extends IService<Department> {
}
@Service("departmentService")
public class DepartmentServiceImpl extends ServiceImpl<DepartmentMapper,Department> implements DepartmentService {
}
@RunWith(SpringRunner.class)
@SpringBootTest
public class DepartmentServiceTest {
    @Autowired
    private DepartmentService departmentService;
    /**
     * 添加测试
     */
    @Test
    public void save(){
        Department department=new Department();
        department.setName("牛逼");
        department.setRemark("xxx");
        boolean save = departmentService.save(department);
        System.out.println(save);
    }
    /**
     * 修改测试
     */
    @Test
    public void updateById(){
        Department department=new Department();
        department.setId(9);
        department.setName("牛逼2");
        department.setRemark("xxx2");
        boolean save = departmentService.updateById(department);
        System.out.println(save);
    }
    /**
     * 删除
     */
    @Test
    public void removeById(){
        boolean b = departmentService.removeById(9);
        System.out.println(b);
    }
    /**
     * 查询
     */
    @Test
    public void list(){
        List<Department> list = departmentService.list();
        System.out.println(list);
    }
    /**
     * 批量添加
     */
    @Test
    public void saveBatch(){
        Department department1=new Department();
        department1.setName("牛逼1");
        department1.setRemark("xxx1");
        Department department2=new Department();
        department2.setName("牛逼2");
        department2.setRemark("xxx2");
        Department department3=new Department();
        department3.setName("牛逼3");
        department3.setRemark("xxx3");
        boolean b = departmentService.saveBatch(Arrays.asList(department1, department2, department3));
        System.out.println(b);
    }
    /**
     * 批量添加或者更新
     */
    @Test
    public void saveOrUpdateBatch(){
        Department department1=new Department();
        department1.setName("牛逼4");
        department1.setRemark("xxx4");
        Department department2=new Department();
        department2.setId(11);
        department2.setName("牛逼2x");
        department2.setRemark("xxx2x");
        boolean b = departmentService.saveOrUpdateBatch(Arrays.asList(department1, department2));
        System.out.println(b);
    }
}
