一、引入依赖
复制代码
<!-- pom.xml -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
# application.yml
spring:
datasource:
url: jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
global-config:
db-config:
logic-delete-field: deleted
logic-delete-value: 1
logic-not-delete-value: 0
回到顶部
二、实体类
复制代码
@Data
@TableName("user")
public class User {
@TableId(type = IdType.AUTO)
private Long id;
@TableField("username")
private String username;
private String email;
private Integer age;
@TableLogic // 逻辑删除
private Integer deleted;
@TableField(fill = FieldFill.INSERT)
private LocalDateTime createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private LocalDateTime updateTime;
}
回到顶部
三、Mapper 接口
复制代码
@Mapper
public interface UserMapper extends BaseMapper<User> {
// 继承 BaseMapper 后,自动拥有以下方法:
// - insert(entity)
// - deleteById(id)
// - updateById(entity)
// - selectById(id)
// - selectList(wrapper)
// - selectPage(page, wrapper)
// 无需编写 XML!
}
回到顶部
四、条件构造器
复制代码
// 查询年龄大于18且邮箱不为空的用户
List<User> users = userMapper.selectList(
new LambdaQueryWrapper<User>()
.gt(User::getAge, 18)
.isNotNull(User::getEmail)
.orderByDesc(User::getCreateTime)
);
// 模糊查询
List<User> users = userMapper.selectList(
new LambdaQueryWrapper<User>()
.likeRight(User::getUsername, "张")
.between(User::getAge, 20, 30)
);
// 更新:年龄大于30的用户状态改为1
userMapper.update(null,
new LambdaUpdateWrapper<User>()
.set(User::getStatus, 1)
.gt(User::getAge, 30)
);
回到顶部
五、分页查询
复制代码
// 分页配置类
@Configuration
public class MyBatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
// 分页查询
Page<User> page = new Page<>(1, 10); // 第1页,每页10条
userMapper.selectPage(page,
new LambdaQueryWrapper<User>()
.gt(User::getAge, 18)
);
List<User> records = page.getRecords(); // 当前页数据
long total = page.getTotal(); // 总记录数
long pages = page.getPages(); // 总页数
回到顶部
六、代码生成器
复制代码
// AutoGenerator 一键生成 Entity、Mapper、Service、Controller
AutoGenerator generator = new AutoGenerator();
// 全局配置
GlobalConfig globalConfig = new GlobalConfig();
globalConfig.setOutputDir(System.getProperty("user.dir") + "/src/main/java");
globalConfig.setAuthor("myname");
globalConfig.setOpen(false);
generator.setGlobalConfig(globalConfig);
// 数据源配置
DataSourceConfig dataSourceConfig = new DataSourceConfig.Builder(
"jdbc:mysql://localhost:3306/mydb",
"root", "123456"
).build();
generator.setDataSource(dataSourceConfig);
// 策略配置
StrategyConfig strategyConfig = new StrategyConfig.Builder()
.addInclude("user", "order") // 表名
.entityBuilder().enableLombok()
.controllerBuilder().enableRestStyle()
.build();
generator.setStrategy(strategyConfig);
generator.execute();