MyBatis-Plus
2023-12-21 07:52:01
MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
官网:MyBatis-Plus
引入maven坐标
<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(); }
条件构造器
?
文章来源:https://blog.csdn.net/qq_57667629/article/details/135119498
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!