mybatis的增强mybatis-plus的基本操作,wrapper复杂查询,分页查询,逻辑删
除
⼆、特性
⽆侵⼊:只做增强不做改变,引⼊它不会对现有⼯程产⽣影响,如丝般顺滑
损耗⼩:启动即会⾃动注⼊基本 CURD,性能基本⽆损耗,直接⾯向对象操作
强⼤的 CRUD 操作:内置通⽤ Mapper、通⽤ Service,仅仅通过少量配置即可实现单表⼤部分 CRUD 操作,更有强⼤的条件构造器,满⾜各类使⽤需求
⽀持 Lambda 形式调⽤:通过 Lambda 表达式,⽅便的编写各类查询条件,⽆需再担⼼字段写错
⽀持多种数据库:⽀持 MySQL、MariaDB、Oracle、DB2、H2、HSQL、SQLite、Postgre、SQLServer2005、SQLServer 等多种数据库
⽀持主键⾃动⽣成:⽀持多达 4 种主键策略(内含分布式唯⼀ ID ⽣成器 - Sequence),可⾃由配置,完美解决主键问题
⽀持 XML 热加载:Mapper 对应的 XML ⽀持热加载,对于简单的 CRUD 操作,甚⾄可以⽆ XML 启动
⽀持 ActiveRecord 模式:⽀持 ActiveRecord 形式调⽤,实体类只需继承 Model 类即可进⾏强⼤的 CRUD 操作
⽀持⾃定义全局通⽤操作:⽀持全局通⽤⽅法注⼊( Write once, use anywhere )
⽀持关键词⾃动转义:⽀持数据库关键词(order、key…)⾃动转义,还可⾃定义关键词
内置代码⽣成器:采⽤代码或者 Maven 插件可快速⽣成 Mapper 、 Model 、 Service 、 Controller 层代码,⽀持模板引擎,更有超多⾃定义配置等您来使⽤
内置分页插件:基于 MyBatis 物理分页,开发者⽆需关⼼具体操作,配置好插件之后,写分页等同于普通 List 查询
内置性能分析插件:可输出 Sql 语句以及其执⾏时间,建议开发测试时启⽤该功能,能快速揪出慢查询
内置全局拦截插件:提供全表 delete 、 update 操作智能分析阻断,也可⾃定义拦截规则,预防误操作
内置 Sql 注⼊剥离器:⽀持 Sql 注⼊剥离,有效预防 Sql 注⼊攻击
mybatis-plus⼊门
⾸先创建数据库
库名mybatis-plus
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)
);
其对应的数据库 Data 脚本如下:
DELETE FROM user;
INSERT INTO user (id, name, age, email) VALUES
(1, 'Jone', 18, 'test1@baomidou'),
(2, 'Jack', 20, 'test2@baomidou'),
(3, 'Tom', 28, 'test3@baomidou'),
(4, 'Sandy', 21, 'test4@baomidou'),
分页查询插件(5, 'Billie', 24, 'test5@baomidou');
接下来新建⼀个springboot项⽬
添加依赖
1、引⼊依赖
spring-boot-starter、spring-boot-starter-test
添加:mybatis-plus-boot-starter、MySQL、lombok、
在项⽬中使⽤Lombok可以减少很多重复代码的书写。⽐如说getter/setter/toString等⽅法的编写
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.0.5</version>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--lombok⽤来简化实体类-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
注意:引⼊ MyBatis-Plus 之后请不要再次引⼊ MyBatis 以及 MyBatis-Spring,以避免因版本差异导致的问题。idea中安装lombok插件
在 application.properties 配置⽂件中添加 MySQL 数据库的相关配置:
#mysql数据库连接
spring.datasource.sql.cj.jdbc.Driver
#添加?serverTimezone=GMT%2B8是由于我们时区问题
spring.datasource.url=jdbc:mysql://localhost:3306/mybatis_plus?serverTimezone=GMT%2B8
spring.datasource.username=root
spring.datasource.password=123
新建主类
@SpringBootApplication
public class MpdemoApplication {
public static void main(String[] args){
SpringApplication.run(MqdemoApplication.class, args);
}
}
创建包 entity 编写实体类 User.java(此处使⽤了 Lombok 简化代码)@Data//这个是使⽤lombok简化代码的注释
public class User {
private Long id;
private String name;
private Integer age;
private String email;
}
可以在idea的左下⾓查看
创建包 mapper 编写Mapper 接⼝: UserMapper.java public interface UserMapper extends BaseMapper<User>{
}
创建包config 编写Config配置类:MyConfig
@Configuration
@MapperScan("⾥⾯书写你防⽌mapper的位置例如 apper") public class MyConfig {
}
开始使⽤
添加测试类,进⾏功能测试:
@Autowired//如果这⾥显⽰错误的话,可以在UserMapper上添加⼀个注解@Repository,但是不添加也没啥影响照样能运⾏private UserMapper userMapper;
@Test
void contextLoads(){
System.out.println(("----- selectAll method test ------"));
//UserMapper 中的 selectList() ⽅法的参数为 MP 内置的条件封装器 Wrapper
//所以不填写就是⽆任何条件
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
控制台输出成功
如果你想查看mybatis-plus的⽇志,也可以在application.properties添加
#mybatis⽇志
接下来我们进⾏简单的CRUD
insert
@Test
public void saveUser(){
User user =new User();
user.setAge(18);
user.setEmail("12306@qq");
user.setName("Helen");
userMapper.insert(user);
List<User> users = userMapper.selectList(null);
users.forEach(System.out::println);
}
这⾥的id我们使⽤的是mybatis-plus的雪花算法得出的唯⼀的19位id
这个时候我们就得讲讲
主键策略
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论