准备工作
这里我们准备了两个与数据库表对应的实体类,stu为学生表,cls为班级表
类属性上的注解如 @TableId等 为Mybatis-Plus的注解,使用mybatis会无视掉这些注解
在Stu 类的最后一个属性我们定义了Cls实体类的对象,对于单表查询,这个对象不会进行映射,所以结果会为Null。
这两个表只是结构实例,后面会用到其他表
Mybatis
Mybatis-Plus就是对Mybatis的单表查询功能的增强,所以这里我们先说Mybatis
Mybatis单表
Xml
这里可以开启字段的自动映射
但是需要主要,要求对象的属性名需要与数据库字段名对应
同样开启自动映射也可以在 配置文件中 去开启,呢样就不需要这里去开启了
注解
Mybatis多表
Xml
注解
注解这里我们采用了另外的表进行示例,逻辑代码都是一样的
多对多
这里会有多对多的情况,在上图中我们使用的为 one=@One()
多表时使用 many=@Many() 其他都是一样的
但是要注意对于 many=@Many(select="这个方法返回的呢个对象要是一个 List类型或者其他集合类型不能为单对象了")
Mybatis-Plus
Mybatis-Plus就是对Mybatis的单表查询功能的增强,通常我们使用Mybatis-Plus都是配合Spring-boot项目一起使用,因此项目中多数都是采用注解的形式。
Mybatis-Plus的单表查询我们只需要让我们的mapper去基础Plus的BaseMapper即可
我们在Service层装配完mapper的Bean后就可以直接调用那些封装好的方法
同样的ServiceImpl也进行了继承
因此我们在 Controller层也可以直接调用大量封装好的方法
当然Plus也有很强大的条件查询功能
条件构造器 | MyBatis-Plus (baomidou.com)(Plus的中文官方文档)
在多表查询方面,Plus需要Mybatis的Xml对字段进行映射,比较麻烦,一般不会使用,注解方式比较方便。
分页
Mybatis-Plus有封装好的分页方法
但是使用之前我们需要进行配置
import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.autoconfigure.ConfigurationCustomizer;
import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
@Bean
public ConfigurationCustomizer configurationCustomizer() {
return configuration -> configuration.setUseGeneratedKeys(false);
}
}
当然我们也可以使用PageHelper
<dependency>
<groupId>com.github.pagehelper</groupId>
<artifactId>pagehelper-spring-boot-starter</artifactId>
<version>1.4.6</version>
</dependency>