网站类产品怎么做竞品分析,东莞建设信息网,全景网站开发待遇,会员制网站 建设学习视频#xff1a;【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! 引言
MyBatis-Plus是一个基于MyBatis的增强工具#xff0c;旨在简化开发#xff0c;提高效率。它扩展了MyBatis的功能#xff0c;提供了许多实用的特性#xff0c;… 学习视频【编程不良人】Mybatis-Plus整合SpringBoot实战教程,提高的你开发效率,后端人员必备! 引言
MyBatis-Plus是一个基于MyBatis的增强工具旨在简化开发提高效率。它扩展了MyBatis的功能提供了许多实用的特性包括强大的CRUD操作、条件构造器、分页插件、代码生成器等。MyBatis-Plus的目标是简化开发提供更便捷的操作数据库的方式。
MyBatis-Plus的主要特性包括
CRUD操作的增强功能MyBatis-Plus提供了丰富的CRUD操作方法包括批量插入、批量更新、链式查询等简化了数据操作的流程。条件构造器MyBatis-Plus内置了条件构造器可以通过简单的方法链式调用来构建复杂的查询条件避免手写SQL语句提高了开发效率。分页插件MyBatis-Plus提供了强大的分页插件支持多种数据库的分页查询开发者可以轻松实现分页查询功能。代码生成器MyBatis-Plus内置了代码生成器可以根据数据库表自动生成Entity、Mapper、Service、Controller等代码减少了重复的CRUD代码编写工作。乐观锁插件MyBatis-Plus提供了乐观锁的支持可以通过注解的方式实现乐观锁功能确保数据的一致性。
SpringBoot集成MyBatis-Plus
第一个MyBatisPlus程序
创建项目提前引入支持的依赖热部署、mysql、lombok、Web 引入依赖
!--已包含mybatis依赖--
dependencygroupIdcom.baomidou/groupIdartifactIdmybatis-plus-boot-starter/artifactIdversion3.3.2/version
/dependency
!-- 引入阿里巴巴连接池--
dependencygroupIdcom.alibaba/groupIdartifactIddruid/artifactIdversion1.1.19/version
/dependency配置文件
mapper文件映射和实体别名mybatisplus已经配置了所以不需要再写了。
spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedriver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ems?characterEncodingUTF-8username: rootpassword: root包扫描配置、实体类
Data
public class User {private Long id;private String name;private Integer age;private String email;private Long managerId;private LocalDateTime createTime;
}SpringBootApplication
MapperScan(com.mp.dao)
public class MyBatisPlusLessionApplication {public static void main(String[] args) {SpringApplication.run(MyBatisPlusLessionApplication.class, args);}
}实现mapper接口 使用**mybatisplus** 的增强接口 BaseMapper // BaseMapper的泛型一定要写否则返回不了数据
public interface UserMapper extends BaseMapperUser {}测试
SpringBootTest
class MyBatisPlusLessionApplicationTests {Autowiredprivate UserMapper userMapper;Testpublic void select() {**ListUser list userMapper.selectList(null);// null指的是没有查询条件**list.forEach(System.out::println);}
}返回数据成功 以下是BaseMapper中常用的方法
方法名描述insert插入一条记录insertBatch批量插入记录deleteById根据ID删除记录deleteByMap根据Map条件删除记录delete根据条件删除记录updateById根据ID更新记录update根据条件更新记录selectById根据ID查询记录selectBatchIds根据ID列表批量查询记录selectByMap根据Map条件查询一条记录selectOne查询满足条件的一条记录selectCount查询满足条件的记录数selectList查询满足条件的记录列表selectMaps查询满足条件的记录返回Map列表selectObjs查询满足条件的记录返回Object列表selectPage分页查询记录
基本使用 日志配置 logging:level:root: warn # 根日志com.mp.dao: trace # 指定包级别pattern:console: %p%m%n # 格式Insert
Test
public void insert() {User user new User();user.setName(刘东);user.setAge(21);user.setEmail(xiaoheiqq.com);user.setManagerId(1L);user.setCreateTime(LocalDateTime.now());int rows userMapper.insert(user);System.out.println(影响记录数rows);
}运行结果成功插入数据 注意我们在set中并没有插入id但是运行结果成功插入了一串id值因为这是mybatis-plus基于雪花算法实现的自增id。
常用注解 TableName、TableId、TableFieId
Data
TableName(mp_user)
public class User {TableIdprivate Long userId;TableField(name)private String realName;private Integer age;private String email;private Long managerId;private LocalDateTime createTime;
}**TableName**用于指定实体类对应的数据库表名如果不指定就以类名作为映射关系
TableId 注解来指定主键
TableFieId 用于标识实体类中的字段与数据库表中的列的映射关系。
排除非表字段的三种方式 transient 【不推荐】 private transient String remark;不推荐在MyBatis Plus中使用Java语言中的**transient关键字来排除非表字段的原因是transient关键字主要用于Java对象的序列化过程用于标记不需要序列化的字段。但是对于数据库操作而言transient**关键字并不会影响字段的持久化行为因为它只是在Java对象的序列化和反序列化过程中起作用。 static 【不推荐】 private static String remark;TableField(exist false) 【推荐】 TableField(exist false)
private static String remark;在进行数据库操作时MyBatis-Plus会自动排除带有**TableField(exist false)**注解的非表字段不会将它们包含在生成的SQL语句中。