一、什么是Mybatis Plus
Mybatis Plus是Mybatis的增强版,可以简化对数据库的增删改查工作,加速应用的开发。Mybatis Plus对Mybatis无侵入,也就是对已有的Mybatis代码没有影响,Mybatis代码仍可以继续使用。
二、快速入门Mybatis Plus
首先引入MyBatis Plus的依赖,引入了此依赖,Mybatis的依赖可以删除
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
接着将自定义的Mapper接口继承MybatisPlus提供的接口BaseMapper,下面是简单的例子:
假设自定义了一个UserMapper,要指定泛型,也就是要操作的实体类,这里我指定User
public interface UserMapper extends BaseMapper<User> {}
BaseMapper接口定义了非常丰富的增删改查方法,可以实现数据库单表查询,下面是其中一些方法可以直接调用:
int insert(T entity);
int deleteById(Serializable id);
int deleteById(T entity);
int deleteByMap(@Param("cm") Map<String, Object> columnMap);
int delete(@Param("ew") Wrapper<T> queryWrapper);
int deleteBatchIds(@Param("coll") Collection<?> idList);
int updateById(@Param("et") T entity);
int update(@Param("et") T entity, @Param("ew") Wrapper<T> updateWrapper);
T selectById(Serializable id);
List<T> selectBatchIds(@Param("coll") Collection<? extends Serializable> idList);
List<T> selectByMap(@Param("cm") Map<String, Object> columnMap);
三、常见注解
Mybatis Plus是如何知道需要操作哪张数据库表,答案是通过泛型来指定,继承BaserMapper时需要指定泛型,泛型就是要操作数据库表对应的实体类,通过反射可知实体类中的属性,也就可以获取数据库表中的字段了。MybatisPlus会将驼峰命名的字段自动转换成下划线,以此来获取数据库字段名。
但是数据库表对应的实体类类名与数据库表的表名不一致时,或者实体类属性名与数据库字段名不一致时,需要用到注解来标识,以便MybatisPlus生成正确的表名和字段名。
以下介绍常见的注解,假设数据库表名为music_user,而实体类类名为User时,需要用到@TableName注解:
@TableName("music_user")//标识数据库表名
public class User{}
当数据库字段名为username,而实体类属性名为name时,需要用到@TableField注解:
@TableName("music_user")
public class User{
@TableField("username")//标识数据库字段名
private String name;
}
可以用@TableId注解来标识数据库的主键,并且主键在数据库是自增的时候,用IdType.AUTO这个属性来标识
public class User{
@TableId(type = IdType.AUTO )
private Integer id;
}
如果主键是需要程序员自己填写,则使用IdType.INPUT,如果是IdType.ASSIGN_ID则代表使用雪花算法生成id值。更多的类型可以查阅官方网站。