你应该知道的这些Mybatis-Plus使用技巧(小结)
Mybatis-Plus是一个Mybatis的增强工具,拓展了Mybatis的功能,使得开发者在编写数据库CRUD操作时更加方便和快捷。本文将介绍一些Mybatis-Plus的使用技巧。
1. 自动生成代码
Mybatis-Plus提供了一种快速生成Mapper、实体类、Service、ServiceImpl等代码的方式,可以大大减轻开发者的工作量。具体使用方式如下:
在pom.xml文件中添加依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.3.1</version>
</dependency>
在resources文件夹中添加generator_config.properties文件,配置相关信息,例如:
# 数据源相关配置
jdbc.driver=com.mysql.cj.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/mybatisplus?useUnicode=true&characterEncoding=utf-8&autoReconnect=true&rewriteBatchedStatements=true&useSSL=false&serverTimezone=Asia/Shanghai
jdbc.username=root
jdbc.password=root
# 策略配置
config.packageName=com.example.generator
config.docAddress=D:/doc
# 需要生成的表名,可以是多个用逗号隔开
table.names=user
# 去除表名中的前缀
strategy.removePrefixes=t_
# 类型转换
typeHandlerEnum.typeHandlers=mybatisplus.extension.handlers.OracleTypeHandler,mybatisplus.extension.handlers.PostgreTypeHandler
# 生成代码的文件路径
out.path=D:/generated
运行GeneratorMain类即可生成代码。
2. 插件机制
Mybatis-Plus提供了丰富的插件机制,可以自定义扩展Mybatis-Plus的功能。例如,我们可以使用Mybatis-Plus提供的Optimistic Lock插件来实现乐观锁的功能。
在pom.xml文件中添加依赖:
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
<version>3.3.1</version>
</dependency>
在实体类中添加注解@Version:
@Data
public class User {
private Long id;
private String name;
private Integer age;
private String email;
@Version
private Integer version;
}
在Mapper接口中使用@Version注解:
public interface UserMapper extends BaseMapper<User> {
@Update("update user set age=#{age} where id = #{id} and version=#{version}")
int updateAgeByIdAndVersion(@Param("age") Integer age, @Param("id") Long id, @Param("version") Integer version);
}
使用Optimistic Lock插件实现乐观锁的功能:
User user = userMapper.selectById(id);
user.setAge(age);
int rows = userMapper.updateAgeByIdAndVersion(age, id, user.getVersion());
if (rows == 0) {
// 更新失败,版本号不一致
throw new RuntimeException("更新失败");
}
以上就是两个Mybatis-Plus的使用技巧,希望对你有所帮助。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:你应该知道的这些Mybatis-Plus使用技巧(小结) - Python技术站