浅谈MyBatis-plus入门使用
MyBatis-plus(以下简称MP)是一个为MyBatis框架提供增强功能的第三方库,旨在简化MyBatis的开发。本文将深入浅出地探讨MP的入门使用。
安装
将以下依赖添加到Maven或Gradle项目中:
<!-- MyBatis-plus -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>{latest version}</version>
</dependency>
其中最新版本可以从官网获得。
配置
在application.properties中或application.yml中添加如下配置:
mybatis-plus:
mapper-locations: classpath*:mapper/**/*Mapper.xml # Mapper.xml文件所在目录
type-aliases-package: com.example.entity # 实体类所在包名
常用功能
代码生成器
MP提供了一个代码生成器,可以快速生成Mapper、Service、Controller等代码。使用方法如下:
- 引入依赖
<!-- MyBatis-plus代码生成器 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>{latest version}</version>
</dependency>
- 配置generator.properties文件
# 数据库连接信息
data.jdbc.url=
data.jdbc.username=
data.jdbc.password=
data.jdbc.driver=
# 作者信息
author=
# 生成文件所在包名
package.name=com.example
# Mapper、Entity、Mapper.xml文件生成目录
path.mapper=M:\example\src\main\java
path.entity=M:\example\src\main\java
path.mapper.xml=M:\example\src\main\resources\mapper
- 运行代码
public class CodeGenerator {
public static void main(String[] args) {
// 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig()
.setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai")
.setUsername("root")
.setPassword("root")
.setDriverName("com.mysql.jdbc.Driver");
// 全局配置
GlobalConfig globalConfig = new GlobalConfig()
.setOutputDir("M:\\example\\src\\main\\java")
.setAuthor("作者姓名")
.setOpen(false)
.setFileOverride(true);
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig()
.setNaming(NamingStrategy.underline_to_camel) // 下划线转驼峰命名
.setColumnNaming(NamingStrategy.underline_to_camel)
.setEntityLombokModel(true) // 实体类自动添加Lombok注解
.setRestControllerStyle(true); // Controller为RestController风格
// 包名策略配置
PackageConfig packageConfig = new PackageConfig()
.setParent("com.example")
.setController("controller")
.setService("service")
.setServiceImpl("service.impl")
.setMapper("mapper")
.setEntity("entity");
// 代码生成器配置
AutoGenerator autoGenerator = new AutoGenerator()
.setDataSource(dataSourceConfig)
.setGlobalConfig(globalConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig);
// 执行生成器
autoGenerator.execute();
}
}
分页查询
MP提供了一个分页查询插件,在Mapper接口中使用方法如下:
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectUserPage(Page<User> page, @Param("name") String name);
}
其中IPage
表示分页查询结果,Page
表示分页信息,@Param
表示用于传递查询条件。
在Service中调用:
public IPage<User> getUserByPage(int pageNum, int pageSize, String name) {
Page<User> page = new Page<>(pageNum, pageSize);
return userMapper.selectUserPage(page, name);
}
其中pageNum
表示页码,pageSize
表示每页的记录数。
示例
示例1:使用MP的代码生成器生成代码
- 参照上文的配置,配置generator.properties文件和代码生成器运行类
- 运行代码生成器,查看生成的代码目录下是否生成了Mapper、Entity、Mapper.xml等文件
public class CodeGeneratorExample {
public static void main(String[] args) {
DataSourceConfig dataSourceConfig = new DataSourceConfig()
.setUrl("jdbc:mysql://localhost:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai")
.setUsername("root")
.setPassword("root")
.setDriverName("com.mysql.jdbc.Driver");
GlobalConfig globalConfig = new GlobalConfig()
.setOutputDir("M:\\example\\src\\main\\java")
.setAuthor("Mybatis-plus")
.setOpen(false)
.setFileOverride(true);
StrategyConfig strategyConfig = new StrategyConfig()
.setNaming(NamingStrategy.underline_to_camel) // 下划线转驼峰命名
.setColumnNaming(NamingStrategy.underline_to_camel)
.setEntityLombokModel(true) // 实体类自动添加Lombok注解
.setRestControllerStyle(true); // Controller为RestController风格
PackageConfig packageConfig = new PackageConfig()
.setParent("com.example")
.setController("controller")
.setService("service")
.setServiceImpl("service.impl")
.setMapper("mapper")
.setEntity("entity");
AutoGenerator autoGenerator = new AutoGenerator()
.setDataSource(dataSourceConfig)
.setGlobalConfig(globalConfig)
.setStrategy(strategyConfig)
.setPackageInfo(packageConfig);
autoGenerator.execute();
}
}
示例2:使用MP进行分页查询
- 编写Mapper接口方法:
public interface UserMapper extends BaseMapper<User> {
IPage<User> selectUserPage(Page<User> page, @Param("name") String name);
}
- 编写Service方法:
public IPage<User> getUserByPage(int pageNum, int pageSize, String name) {
Page<User> page = new Page<>(pageNum, pageSize);
return userMapper.selectUserPage(page, name);
}
其中userMapper
是自定义的Mapper接口,User
是自定义的实体类,name
是查询条件。
总结
本文详细介绍了MP的入门使用,包括安装、配置、常用功能和示例。希望对初学者有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:浅谈MyBatis-plus入门使用 - Python技术站