MyBatis-Plus使用介绍


在后端 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 等关键字等提供了对应的方法,这里不作详细介绍。


文章作者: 烽火戏诸诸诸侯
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 烽火戏诸诸诸侯 !
  目录