MyBatisPlus学习笔记__01:简介+入门+CRUD扩展
无侵入性:仅进行增强,不改变现有代码,完美兼容。 性能优越:启动即自动注入基础CRUD功能,性能损耗极低。 强大功能:支持主键自动生成、Lambda表达式、分页插件、性能分析等多种增强功能。 ** ActiveRecord模式**:支持实体类继承Model类,实现简洁的CRUD操作。 扩展性强:支持自定义全局操作和代码生成器,满足个性化需求。
发布日期:2021-04-30 21:06:23
浏览次数:121
分类:精选文章
本文共 3280 字,大约阅读时间需要 10 分钟。
MyBatis Plus入门到进阶全解析
一、MyBatis Plus简介
MyBatis Plus(简称MP)是一款基于MyBatis框架的增强工具,专注于简化开发流程、提高开发效率。它通过自动化CRUD操作,帮助开发者减少重复性代码,降低配置门槛,是一款极具实用价值的工具。
特点:
二、快速入门
1. 简单使用步骤
- 导入依赖:添加MyBatis-Plus、Lombok、MySQL等相关依赖。
- 配置数据库:创建数据库并初始化表结构。
- 编写实体类:定义POJO类,继承BaseMapper接口即可完成CRUD操作。
- 启动项目:使用Spring Boot初始化项目,扫描Mapper接口。
2. 配置示例
数据库配置:
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plusspring.datasource.username=rootspring.datasource.password=123456spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
实体类示例:
@Data@AllArgsConstructor@NoArgsConstructorpublic class User { private Long id; private String name; private Integer age; private String email;}Mapper接口:
public interface UserMapper extends BaseMapper
{}
3. 测试验证
插入数据:
@Testpublic void testInsert() { User user = new User(); user.setName("张三"); user.setAge(30); user.setEmail("zhangsan@baomidou.com"); int result = userMapper.insert(user); System.out.println(result);}查询数据:
@Testpublic void testSelect() { Listusers = userMapper.selectList(null); users.forEach(System.out::println);}
三、CRUD操作扩展
1. 插入数据
通过MyBatis Plus,插入操作变得简单:
@Testpublic void testInsert() { User user = new User(); user.setName("张三"); user.setAge(30); user.setEmail("zhangsan@baomidou.com"); int result = userMapper.insert(user); System.out.println(result);} 2. 主键生成策略
MyBatis Plus支持多种主键生成方式,包括雪花算法、自增、UUID等。默认使用雪花算法,适用于分布式系统。
3. 更新数据
动态SQL支持灵活的更新操作:
@Testpublic void testUpdate() { User user = new User(); user.setId(2L); user.setName("李四"); int result = userMapper.updateById(user); System.out.println(result);} 4. 自动填充
通过配置MetaObjectHandler,自动填充创建时间和更新时间:
@Component@Slf4jpublic class MyMetaObjectHandler extends MetaObjectHandler { @Override public void insertFill(MetaObject metaObject) { log.info("自动插入时间字段"); setFieldValByName("createTime", new Date(), metaObject); setFieldValByName("updateTime", new Date(), metaObject); } @Override public void updateFill(MetaObject metaObject) { log.info("自动更新时间字段"); setFieldValByName("updateTime", new Date(), metaObject); }} 5. 乐观锁实现
通过注册OptimisticLockerInterceptor,实现乐观锁:
@Configuration@EnableTransactionManagement@MapperScan("com.lut.mapper")public class MyBatisPlusConfig { @Bean public OptimisticLockerInterceptor optimisticLockerInterceptor() { return new OptimisticLockerInterceptor(); }} 6. 分页查询
内置分页插件支持快速分页:
@Testpublic void testPage() { Page page = new Page<>(1, 5); List users = userMapper.selectPage(page, null); users.forEach(System.out::println); System.out.println(page.getTotal()); System.out.println(page.hasNext()); System.out.println(page.hasPrevious());} 7. 删除操作
支持批量删除和逻辑删除:
@Testpublic void testDelete() { userMapper.deleteById(6L);}@Testpublic void testDeleteBatchId() { userMapper.deleteBatchIds(Arrays.asList(1287326823914405893L, 1287326823914405894L));} 四、总结
通过以上内容,可以看出MyBatis Plus为开发者提供了一个高效、灵活的CRUD操作解决方案。它通过自动化和增强功能,大大提升了开发效率,同时减少了代码冗余和配置复杂度。无论是初次接触还是深入使用,MyBatis Plus都能成为每个开发者的理想选择。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2026年06月18日 14时32分28秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
php获取json里面内容
2023-03-01
R2的版本由来
2023-03-01
PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
2023-03-01
PHP获取当前文件的绝对路径
2023-03-01
PHP获取当前时间、时间戳的各种格式写法汇总
2023-03-01
PHP获取当前页面的完整URL
2023-03-01
php获取数据库中数据生成json,中文乱码问题的解决方案
2023-03-01
php获取文件夹中文件的两种方法
2023-03-01
PHP获取日期的一些方法总结
2023-03-01
R2学习记录
2023-03-01
PHP获取本周的每一天的时间
2023-03-01
php获取用户真实IP和防刷机制
2023-03-01
php获取网页内容的三种方法
2023-03-01
R-CNN算法优化策略
2023-03-01
PHP规范PSR0和PSR4的理解
2023-03-01
php解析ipa包,获取logo
2023-03-01
R&Rstudio安装各种包
2023-03-02
php设置cookie,在js中如何获取
2023-03-02
php设置socket超时时间
2023-03-02
php设计模式 萨莱 pdf,PHP设计模式 建造者模式
2023-03-02