mybatis-plus官网:https://baomidou.com/guide/
1、导入依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.1</version>
</dependency>
2、配置数据源
spring:
datasource:
url: jdbc:mysql://localhost:3306/test?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: root
3、创建实体类
@Data
public class User {
//表明当前字段可以不存在于数据库中
@TableField(exist = false)
private String sex;
//数据库中的字段
private Long id;
private String name;
private Integer age;
private String email;
}
4、编写mapper接口
public interface UserMapper extends BaseMapper<User> {
}
5、创建service接口和service实现类
- UserService.java
public interface UserService extends IService<User> {
}
- UserServiceImpl.java
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User>implements UserService {
}
6、在 Spring Boot 启动类中添加 @MapperScan
注解,扫描 Mapper 文件夹:
@SpringBootApplication
@MapperScan("com.wust.springboot.mapper")
public class SpringbootApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootApplication.class, args);
}
}
7、测试
//查询所有
@Test
void test() {
List<User> users = userService.list();
System.out.println(users);
}
//测试分页查询
@Test
void test1() {
//设置起始页和页面大小
Page<User> userPage = new Page<>(2,2);
//获得当前第2页
Page<User> page = userService.page(userPage);
//获得当前页的总记录数
System.out.println(page.getRecords());
//获得总共有几页
System.out.println(page.getPages());
//获得当前页的页码
System.out.println(page.getCurrent());
}
8、mybatis-plus自动配置原理
- MybatisPlusAutoConfiguration.java
@Configuration
@ConditionalOnClass({SqlSessionFactory.class, SqlSessionFactoryBean.class})
@ConditionalOnSingleCandidate(DataSource.class)
@EnableConfigurationProperties({MybatisPlusProperties.class})
@AutoConfigureAfter({DataSourceAutoConfiguration.class, MybatisPlusLanguageDriverAutoConfiguration.class})
public class MybatisPlusAutoConfiguration implements InitializingBean {
.............................................
}
- MybatisPlusAutoConfiguration.java配置类向容器中注册了以下组件
- SqlSessionFactory:SqlSession的工厂,可以通过openSession()方法获得SqlSession
- SqlSessionTemplate:实现了SqlSession,通过这个组件可以直接进行普通的crud操作
- MapperScannerRegistrarNotFoundConfiguration:对于没有找到MapperScannerRegistrar的相关配置
- MybatisPlusProperties.java
@ConfigurationProperties(
prefix = "mybatis-plus"
)
public class MybatisPlusProperties {
private static final ResourcePatternResolver resourceResolver = new PathMatchingResourcePatternResolver();
private String configLocation;
private String[] mapperLocations = new String[]{"classpath*:/mapper/**/*.xml"};
private String typeAliasesPackage;
private Class<?> typeAliasesSuperType;
private String typeHandlersPackage;
private boolean checkConfigLocation = false;
private ExecutorType executorType;
private Class<? extends LanguageDriver> defaultScriptingLanguageDriver;
private Properties configurationProperties;
@NestedConfigurationProperty
private MybatisConfiguration configuration;
private String typeEnumsPackage;
.........................................................
}
通过源码里的字段可知,默认的mapper xm映射文件的位置在类路径下的mapper文件中