MybatisPlus
MybatisPlus学习笔记
MybatisPlus简介
MyBatis-Plus
(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。
特征
无侵入
:只做增强不做改变,引入它不会对现有工程产生影响,如丝般顺滑损耗小
:启动即会自动注入基本 CURD,性能基本无损耗,直接面向对象操作强大的 CRUD 操作
:内置通用 Mapper、通用 Service,仅仅通过少量配置即可实现单表大部分 CRUD 操作,更有强大的条件构造器,满足各类使用需求支持 Lambda 形式调用
:通过 Lambda 表达式,方便的编写各类查询条件,无需再担心字段写错支持多种数据库
:支持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库支持主键自动生成
:支持多达 4 种主键策略(内含分布式唯一 ID 生成器 - Sequence),可自由配置,完美解决主键问题内置代码生成器
:采用代码或者 Maven 插件可快速生成 Mapper 、 Model 、 Service 、 Controller 层代码,支持模板引擎,更有超多自定义配置内置分页插件
:基于 MyBatis 物理分页,开发者无需关心具体操作,配置好插件之后,写分页等同于普通 List 查询
就是mybatis的加强版,功能更强大
框架结构
第一个MybatisPlus
工程
-
新建一个
sprongBoot
工程 -
在
pom
文件中添加依赖<dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> <version>3.5.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> </dependencies>
-
application.yml
配置文件spring: datasource: # 设置数据类型 type: com.zaxxer.hikari.HikariDataSource # 驱动 driver-class-name: com.mysql.cj.jdbc.Driver url: jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8&characterEnding=utf-8&useSSL=false&allowPublicKeyRetrieval=true username: root password: 123456 --- mybatis-plus: configuration: # 配置日志输出 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl mapper-locations: classpath*:/mapper/**/*.xml # 别名 type-aliases-package: com.hg.mybatisplus1.pojo # 实体类全局配置 global-config: db-config: # 设置实体类对应表的统一前缀 table-prefix: t_ # 全局主键策略 id-type: assign_id ---
-
数据库
sql
DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); DELETE FROM user; INSERT INTO user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com');
-
实体类(使用
lombok
快捷创建)@SuppressWarnings("all") @Data @AllArgsConstructor @NoArgsConstructor @TableName("user") //设置实体类所对应的表名 public class User { /** * TableId 将属性对应的字段指定为主键 * value : 设置数据库指定主键名 * type(enum) : 设置主键生成策略 */ @TableId private Long id; @TableField("name") //指定属性中对应的字段名 private String name; private Integer age; private String email; @TableLogic //逻辑删除,被删除的数据查询不到,但存在 private Integer isDelete; }
-
创建
Mapper
接口继承BaseMapper
@Repository //Repository 将类或接口标志为持久组件 public interface UserMapper extends BaseMapper<User> { }
-
在springBoot启动类中添加
@MapperScan
扫描注解@MapperScan("com.hg.mybatisplus1.mapper") @SpringBootApplication public class MybatisPlus1Application { public static void main(String[] args) { SpringApplication.run(MybatisPlus1Application.class, args); } }
-
测试
@Slf4j //lombok日志工具 @SpringBootTest public class MybatisPlusTest { @Autowired private UserMapper userMapper; /** * 查询所有用户信息 */ @Test public void selectList(){ List<User> users = userMapper.selectList(null); users.forEach(System.out::println); } }
继承BaseMapper
实现基础的CRUD
操作
-
插入一条数据
@Slf4j @SpringBootTest public class MybatisPlusTest { @Autowired private UserMapper userMapper; /** * 插入用户 */ @Test public void insertUser() { User user = new User(); user.setName("张三"); user.setAge(18); user.setEmail("zs@136.com"); int result = userMapper.insert(user); log.info("result:"+result); //plus中默认使用雪花算法生成id log.info("id:"+user.getId()); } }
-
删除数据
@Slf4j @SpringBootTest public class MybatisPlusTest { @Autowired private UserMapper userMapper; /** * 根据id删除用户 */ @Test public void deleteUserById(){ int result = userMapper.deleteById(1587839739382059009L); } /** * 根据map删除用户 */ @Test public void deleteUserByMap(){ HashMap<String, Object> map = new HashMap<>(); map.put("id",2); map.put("age",15); int result = userMapper.deleteByMap(map); } /** * 多个id批量删除 */ @Test public void deleteUserBatchIds(){ List<Long> list = Arrays.asList(1L, 2L, 3L); int result = userMapper.deleteBatchIds(list); } }
-
修改数据
@Slf4j @SpringBootTest public class MybatisPlusTest { @Autowired private UserMapper userMapper; /** * 根据id修改用户 */ @Test public void updateUser(){ User user = new User(); user.setId(4L); user.setName("李四"); int result = userMapper.updateById(user); log.info("result====>"+result); } }
-
查询数据
@Slf4j @SpringBootTest public class MybatisPlusTest