创建测试用的数据库
CREATE DATABASE `mybatis_plus` /*!40100 DEFAULT CHARACTER SET utf8mb4 */; use `mybatis_plus`;
CREATE TABLE `user` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`name` varchar(30) DEFAULT NULL COMMENT '姓名 ',
`age` int(11) DEFAULT NULL COMMENT '年龄 ',
`email` varchar(50) DEFAULT NULL COMMENT '邮箱 ',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
向数据库插入数据
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');
pom文件中引入依赖
<dependencies>
<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>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
</dependencies>
idea中安装lombok插件
配置application.yml
具体的数据库名,用户名,密码更换为自己的
spring:
# 配置数据源信息
datasource:
# 配置数据源类型
type: com.zaxxer.hikari.HikariDataSource
# 配置连接数据库信息
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/mybatis_plus?characterEncoding=utf- 8&useSSL=false
username: root
password: 123456
设置在启动类设置mapper扫描的包
@MapperScan("zoo.mapper")
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class SpringDemo2Application {public static void main(String[] args) {SpringApplication.run(SpringDemo2Application.class, args);}
}
添加实体类
- 这里实体类的主键也就是id必须为Long类型的。
@Data //lombok注解
public class User {private Long id;
private String name;
private Integer age;
private String email;}
- @Data注解的作用是自动生成getter、setter、equals、hashCode和toString等方法,无需我们再手动添加。
下面是加上@Data注解,经过编译后的User.class文件,可见它已经生成了getter、setter、equals、hashCode和toString等方法
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//package zoo.pojo;import zoo.enmu.SexEnum;public class User {private Long id;private String name;private Integer age;private String email;private SexEnum sex;public User() {}public Long getId() {return this.id;}public String getName() {return this.name;}public Integer getAge() {return this.age;}public String getEmail() {return this.email;}public SexEnum getSex() {return this.sex;}public void setId(final Long id) {this.id = id;}public void setName(final String name) {this.name = name;}public void setAge(final Integer age) {this.age = age;}public void setEmail(final String email) {this.email = email;}public void setSex(final SexEnum sex) {this.sex = sex;}public boolean equals(final Object o) {if (o == this) {return true;} else if (!(o instanceof User)) {return false;} else {User other = (User)o;if (!other.canEqual(this)) {return false;} else {label71: {Object this$id = this.getId();Object other$id = other.getId();if (this$id == null) {if (other$id == null) {break label71;}} else if (this$id.equals(other$id)) {break label71;}return false;}Object this$age = this.getAge();Object other$age = other.getAge();if (this$age == null) {if (other$age != null) {return false;}} else if (!this$age.equals(other$age)) {return false;}label57: {Object this$name = this.getName();Object other$name = other.getName();if (this$name == null) {if (other$name == null) {break label57;}} else if (this$name.equals(other$name)) {break label57;}return false;}Object this$email = this.getEmail();Object other$email = other.getEmail();if (this$email == null) {if (other$email != null) {return false;}} else if (!this$email.equals(other$email)) {return false;}Object this$sex = this.getSex();Object other$sex = other.getSex();if (this$sex == null) {if (other$sex == null) {return true;}} else if (this$sex.equals(other$sex)) {return true;}return false;}}}protected boolean canEqual(final Object other) {return other instanceof User;}public int hashCode() {int PRIME = true;int result = 1;Object $id = this.getId();int result = result * 59 + ($id == null ? 43 : $id.hashCode());Object $age = this.getAge();result = result * 59 + ($age == null ? 43 : $age.hashCode());Object $name = this.getName();result = result * 59 + ($name == null ? 43 : $name.hashCode());Object $email = this.getEmail();result = result * 59 + ($email == null ? 43 : $email.hashCode());Object $sex = this.getSex();result = result * 59 + ($sex == null ? 43 : $sex.hashCode());return result;}public String toString() {return "User(id=" + this.getId() + ", name=" + this.getName() + ", age=" + this.getAge() + ", email=" + this.getEmail() + ", sex=" + this.getSex() + ")";}
}
添加mapper
让UserMapper继承BaseMapper,这样无需我们手动添加就有了单表增删改查的很多函数。
public interface UserMapper extends BaseMapper<User> {
}
查询测试
@SpringBootTest
public class MybatisPlusTest {
@Autowired
private UserMapper userMapper;
@Test
public void testSelectList(){
//selectList()根据MP内置的条件构造器查询一个list集合,null表示没有条件,即查询所有
userMapper.selectList(null).forEach(System.out::println);
}
}
测试结果
在application.yml中配置日志输出
# 配置MyBatis日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl