对于目前快速开发的大环境所致,如何使开发员专注于核心功能设计,减少其它的配置等时间的占用,mybatis_plus凭借它的mapper文件的自动映射功能,而大大减少了程序员去配置编写mapper配置文件的时间,进而大大提高了开发的效率;mybatis_plus也因此成为我们广大程序员所必须接触并且学习的框架之一。本篇文章将会围绕mybatis-plus的基本功能并结合案例去进行详细的介绍。
首先先完成一个基本的案例;
创建一个名为student 表;
创建完成之后。大家可以随意添加一行数据,方便后边进行测试。然后新建一个springboot项目,加入所需要的依赖,mybatis-plus的依赖如下:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
其它依赖,加上 我们连接数据库所需要的基础依赖就可以;
添加完依赖之后,创建我们实体类 Student; 博主在这里推荐大家使用lombook神器,使用之后不需要我们去写set get 方法了;lombook的依赖如下所示:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
实体类代码块如下所示:
因为mybatis-plus是默认开启驼峰自动映射的,因此,实体类studentName会自动去查找我们的student_name;想看详细代码,官网都有源码;
package com.example.demo.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
public class Student {
private Long id;
private String studentName;
private int studentAge;
}
这里大家可以看到使用了lombook之后的代码简介程度,增加了代码的可读性;
写完实体类之后,我们就可以编写我们的mapper层,创建一个StudentMapper的接口,让它去继承mybatis-plus封装好的数据库动态映射类 BaseMapper 代码块如下所示;
package com.example.demo.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.Store;
public interface StoreMapper extends BaseMapper<Store> {
}
这里大家只需要再BaseMapper的后边加上我们实体类的泛型就可以直接映射到我们的实体类Student;
不需要再我们的mapper.XML文件上边再进行mapper映射了,功能很强大;当然mybatis-plus默认是直接映射数据库表格,是跟实体类的名字相同的表,如果我们的表名跟我们的实体类表名不相同;我们就需要进行手动映射数据库了;我们只需要再实体类的上边加上注解TableName,
@TableName("表名")
然后我们需要再我们的启动类上边添加mapperscan注解,让我们的启动类能够找到我们的mapper文件的位置;
package com.example.demo;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.example.demo.mapper")
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
之后我们就可以写我们的测试类,跟方法了;
package com.example.demo;
import com.example.demo.entity.Student;
import com.example.demo.mapper.StudentMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class DemoApplicationTests {
@Autowired
private StudentMapper studentMapper;
@Test
public void testSelect2() {
System.out.println(("----- selectAll method test ------"));
List<Student> userList = studentMapper.selectList(null);
userList.forEach(System.out::println);}
}
这个方法是查询我们的数据,queryWrapper是条件构造器,我们填写参数为null,就表示没有查询的附加条件,也就是查询所有的数据;
然后,我们就可以启动我们的测试方法了;运行结果如下;