MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网:MyBatis-Plus
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
@TableName
类型:类注解
位置:模型类上
作用:设置当前类对应与数据库表关系
范例:
@TableName("t_user") //当前实体类对应的表为t_user public class User { private Long id; }
如果类名使用驼峰命名法命名,表名使用对应的下划线分隔命名,MP可以自动进行映射
?
@TableField
类型:属性注解
位置:模型类属性上
作用:设置当前属性对应的数据库表中的字段关系
相关属性:
value:设置数据库表字段名称
exist:设置属性在数据库表字段中是否存在,默认为true
范例:
public class User { @TableField(value="pwd") //当前属性对应的字段为pwd private String password; @TableField(exist = false) //当前属性在表中没有对应的字段 private String online; }
如果属性名和字段名一致,MP可以自动进行映射,此时 @TableField 注解可以省略
如果属性名使用驼峰命名法命名,字段名使用对应的下划线分隔命名,MP可以自动进行映射,此时 @TableField 注解可以省略。
?
@TableId
类型:属性注解
位置:模型类中用于表示主键的属性上
作用:映射类中属性和表中主键对应关系,设置主键的生成策略
相关属性:
value:设置数据库主键字段名称,如果属性名和字段名一致,可以省略此属性
type:设置主键属性的生成策略,值参照IdType枚举值
范例:
public class User { @TableId(type = IdType.AUTO) //当前id属性和表的主键字段id对应,并且设置主键生成策略为AUTO private Long id; }
主键生成策略:
AUTO(0):使用数据库id自增策略控制id生成
NONE(1):不设置id生成策略
INPUT(2):用户手工输入id
ASSIGN_ID(3):雪花算法生成id(可兼容数值型与字符串型)
ASSIGN_UUID(4):以UUID生成算法作为id生成策略
为了简化开发,可以在application.yml中配置全局的主键生成策略
mybatis-plus: global-config: db-config: id-type: assign_id #全局设置主键生成策略
User user = new User();
user.setName("张四");
user.setAge(34);
user.setPassword("111111111");
user.setTel("1333344556");
log.info("user:{}",user);
userMapper.insert(user);
/**
* 测试Mapper接口的delete方法,可以删除数据
*/
@Test
void testDelete(){
//根据id删除数据
int i = userMapper.deleteById(1624945956237721601L);
System.out.println(i);
//根据id批量删除数据
int batchIds = userMapper.deleteBatchIds(Arrays.asList(1625061142848167937L, 1625061824372146177L));
System.out.println(batchIds);
}
// 根据id删除
userMapper.deleteById(1);
// 根据id批量删除
int i = userMapper.deleteBatchIds(Arrays.asList(2, 3, 4, 5));
/**
* 测试Mapper接口的update方法,根据id修改数据
*/
@Test
void testUpdate(){
User user = new User();
user.setId(12L);
user.setName("张三");
int i = userMapper.updateById(user);
System.out.println(i);
}
@Configuration
public class MPConfiguration {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor(){
MybatisPlusInterceptor mybatisPlusInterceptor = new MybatisPlusInterceptor();
//添加分页拦截器,实现分页查询功能
mybatisPlusInterceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return mybatisPlusInterceptor;
}
}
/**
* 测试Mapper接口的select方法,可以查询数据
*/
@Test
void testSelect(){
//根据id查询数据
User user = userMapper.selectById(1625307405933957121L);
System.out.println(user);
//根据id批量查询数据
List<User> users = userMapper.selectBatchIds(Arrays.asList(1625307405933957121L, 1625310776384380930L));
System.out.println(users);
//分页查询条件对象
Page<User> page = new Page<>(1,5);
//分页查询
userMapper.selectPage(page,null);
System.out.println(page);
//总记录数
long total = page.getTotal();
//分页结果数据
List<User> records = page.getRecords();
}
?