概述
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的注解上。
- 删除mapping映射文件
- 删除application.yml中的mapping配置
mybatis:
mapper-locations: classpath:mapping/*.xml
- 修改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}