准备工作
创建web工程,引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
配置 (yml格式)
server:
port: 8081
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/company?serverTimezone=UTC&rewriteBatchedStatements=true
username: root
password: 123456
type: com.mysql.cj.jdbc.MysqlDataSource
main:
banner-mode: off
logging:
level:
root: error
创建实体类
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
private Integer id;
private String name;
private String nickname;
private Integer age;
private String gender;
private Integer capital;
public User(String name, String nickname, Integer age, String gender, Integer capital) {
this.name = name;
this.nickname = nickname;
this.age = age;
this.gender = gender;
this.capital = capital;
}
}
@Data
@NoArgsConstructor
@AllArgsConstructor
public class address {
private int id;
private int userId;
private String country;
private String province;
private String city;
}
创建dao层
@Repository
public interface UserMapper {
}
创建mapper映射文件
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.glaty.studyspringcloud.mapper">
</mapper>
创建service层,并实现service接口
public interface UserService {
}
@Service
public class UserServiceImpl implements UserService {
}
创建controller层
@Controller
public class UserController {
}
创建数据库(使用的是MySQL)以及相应表格
drop database if exists company;
create database if not exists company;
use company;
drop table if exists user;
create table if not exists user(
id int primary key auto_increment,
name varchar(10) not null ,
nickname varchar(20),
age int,
gender varchar(2),
capital int default 0
)auto_increment = 1;
drop table if exists address;
create table if not exists address(
id int primary key auto_increment,
user_id int not null ,
country varchar(15),
province varchar(15),
city varchar(15),
detail varchar(50),
deleted int default 0 comment '逻辑删除,0为未删除'
);
快速入门
快速开始
引入依赖
引入MyBatisPlus依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
修改mapper
MybatisPlus提供了一个基础的BaseMapper接口,其中已经实现了绝大部分单表的CRUD。自定义的Mapper继承了这个BaseMapper,就可以直接使用BaseMapper接口定义好的方法。并且可以将@Repository注解改为@Mapper注解
@Mapper
public interface UserMapper extends BaseMapper<User> {
}
测试
@SpringBootTest
public class MyBatisPlusTest {
@Autowired
UserMapper userMapper;
@Test
void TestUserMapper() {
User user1 = new User(1,"张三", "Java高手", 20, "男", 5000);
User user2 = new User(2,"李四", "JS高手", 19, "女", 5000);
User user3 = new User(3,"王五", "半个废材", 18, "男", 20000);
userMapper.insert(user1);
userMapper.insert(user2);
userMapper.insert(user3);
System.out.println(userMapper.selectById(1));
user1.setCapital(user1.getCapital() + 500);
userMapper.updateById(user1);
userMapper.deleteById(user1);
ArrayList<User> users = new ArrayList<>();
users.add(user2);
users.add(user3);
userMapper.deleteBatchIds(users);
}
}
常见注解
MybatisPlus会根据向BaseMapper接口传入的泛型来推断出表的信息,从而生成SQL。
默认情况下:
MybatisPlus会把PO实体的类名驼峰转下划线作为表名
MybatisPlus会把PO实体的所有变量名驼峰转下划线作为表的字段名,并根据变量类型推断字段类型
MybatisPlus会把名为id的字段作为主键
但很多情况下,默认的实现与实际场景不符,因此MybatisPlus提供了一些注解便于我们声明表信息。
@TableName
表名注解,标识实体类对应的表,用在实体类的定义上
@TableName("user")
public class User {
}
TableName注解除了指定表名以外,还可以指定很多其它属性:
属性 |
类型 |
必须指定 |
默认值 |
描述 |
value |
String |
否 |
"" |
表名 |
schema |
String |
否 |
"" |
schema |