在后端 Web
工程中, MyBatis
可谓占据了半壁江山,而 MyBatis Plus 正是在此基础上进行二次开发,提供了更便捷的操作。
往往在一个大型项目中,每一个实体对象所对应的单对象增删改在结构上都是相似的,但每次都认为的手动配置显然过于繁琐。而 MyBatis Plus
则刚好解决了这个难题,其为表对象实体提供了最基本的增删改方法,省去大量重复的工作。
下面就详细介绍如何在 Spring Boot 工程中集成 MyBatis Plus
1. 依赖引入
万年不变的老规矩,先在工程中引入 MyBatis Plus
相关 Maven
依赖。
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.0</version>
</dependency>
2. 实体类
工程实体类中的属性名称需要和数据库表中名称一致,若表中字段包含下划线则用驼峰代替。
需要注意实体属性必须和表中完全一致,若实体中的某个字段不存在于表中必须通过 @TableField
注解标注,否则项目将无法正常启动。
public class UserInfo extends Model<UserInfo> {
private Integer id;
private String name;
/**
* 标识表中不存在该字段
*/
@TableField(exist = false)
private String gender;
private String password;
}
3. DAO层
在 Dao层
通过继承 BaseMapper
泛型类即可继承表对象的基础增删改操作。
public interface UserInfoDao extends BaseMapper<UserInfo> {
}
完成之后你会发现即使 UserInfoDao
接口类中我们并未添加任务接口方法,但仍能使用表对象相关的增删改查方法,这便是 MyBatis Plus
为我们所提供的。
4. Service
(1) Service
在 Service
接口类通过继承 IService
泛型类即可继承表对象的基础增删改操作。
当然如果你有复杂的业务逻辑处理也可在 UserInfoService
自行添加,操作流程与 MyBatis
一致。
public interface UserInfoService extends IService<UserInfo> {
}
(2) ServiceImpl
同理这里需要继承 ServiceImpl
泛型类。
@Service("userInfoService")
public class UserInfoServiceImpl
extends ServiceImpl<UserInfoDao, UserInfo>
implements UserInfoService {
}
5. Wapper
通过上面的示例你应该对 MyBatis Plus
有了一个初步的了解。
但你可以发现但我们需要自定义查询或更新等条件时,光上面的配置就不够用了。为此 MyBatis Plus
引入了 Wapper
构造器用于构造多条件等业务场景。
其中 eq()
等价于查询语句中的 where <cloumn> = <value>
,注意方法第一个参数是表字段名而非属性字段名。
public void demo() {
List<UserInfo> list1 = userInfoService.list(new QueryWrapper<UserInfo>()
.eq("id", "123"));
UserInfo userInfo = new UserInfo("123", "Beth", "123456")
userInfoService.update(userInfo, new UpdateWrapper<UserInfo>()
.eq("id", "123"));
}
除 eq()
外其对 SQL
查询条件中的 in or
等关键字等提供了对应的方法,这里不作详细介绍。