7, mybatisPlus-内容概述及快速入门案例

概述

MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。

快速开始

在上面一个项目的SpringBootMybatisTest项目地址基础上进行改造, mybatisplustest项目地址

添加依赖

去除mybat-start依赖, 引入mybatisplus-start依赖

<dependency>
	<groupId>com.baomidou</groupId>
	<artifactId>mybatis-plus-boot-starter</artifactId>
	<version>3.3.2</version>
</dependency>

使用注解式mapper

之前我们的都是一个mapper,加上与之对应的mapping.xml的映射文件, 现在我们修改为注解, sql语句直接便在mapper的注解上。

  1. 删除mapping映射文件
  2. 删除application.yml中的mapping配置
mybatis:
  mapper-locations: classpath:mapping/*.xml
  1. 修改mapper文件
@Select("select id, name, age, sex from User where id = #{id}")
	public User selectById(Integer id);

简单运行一下, 访问http://127.0.0.1:8080/user/1


{"id":1,"name":"xiaodoubi","age":27,"sex":1}

使用mybatisplus

我们只要让mapper继承BaseMapper即可使用mybatisplus的强大

public interface UserMapper extends BaseMapper<User> {

}

我们发现可以使用mybatisplus的许多实现方法

int insert(T entity);
int deleteById(Serializable id);
int deleteByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
int delete(@Param(Constants.WRAPPER) Wrapper<T> wrapper);
int deleteBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
int updateById(@Param(Constants.ENTITY) T entity);
int update(@Param(Constants.ENTITY) T entity, @Param(Constants.WRAPPER) Wrapper<T> updateWrapper);
T selectById(Serializable id);
List<T> selectBatchIds(@Param(Constants.COLLECTION) Collection<? extends Serializable> idList);
List<T> selectByMap(@Param(Constants.COLUMN_MAP) Map<String, Object> columnMap);
T selectOne(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
Integer selectCount(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
List<T> selectList(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
List<Map<String, Object>> selectMaps(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
List<Object> selectObjs(@Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
<E extends IPage<T>> E selectPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);
<E extends IPage<Map<String, Object>>> E selectMapsPage(E page, @Param(Constants.WRAPPER) Wrapper<T> queryWrapper);

运行

由于建表的不规范, 我们的数据库的表也是User(大写开头), mybatisplus会去查user表, 会出现Table 'test.user' doesn't exist的错误, 我们只要指定User对应的表即可

@TableName("User")
public class User implements Serializable {
...
}

访问 http://127.0.0.1:8080/user/1

{"id":1,"name":"xiaodoubi","age":27,"sex":1}

mybatisplustest项目地址

mybatis-plus官方教程