一、简介
Mybatis-Plus(简称MP)是一个 Mybatis 的增强工具,只做增强不做改变
,引入它不会对现有工程产生影响,如丝般顺滑。
二、注意事项
2.1 导入maven依赖
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
2.2 MyBatis-Plus整合Spring Boot的默认配置
- 不用像整合mybatis那样在 application.properties配置文件中配置
mapperLocations:classpath:/mapper/**/*.xml
- 可以自动
将带下划线的字段转换成Java Bean驼峰属性
如果你的表中一个字段为 user_name ,实体类的属性为 userName,他们也能对应上。 - 编写实体类(注解)
@TableName
:表名和实体不一致时使用,用来将指定的数据库表和 JavaBean 进行映射
如果不配置,mybatis-plus会默认去找跟类名相同的小写开头的表名@TableId(value="",type="")
“value”:设置数据库字段值
“type”:设置主键类型、如果数据库主键设置了自增建议使用“AUTO”
type有六种类型,最下面三个只有插入主键为空时,才会自动填充
类型 | 解释 |
---|---|
AUTO | 数据库自增ID |
NONE | 数据库未设置主键类型(将会跟随全局) |
INPUT | 用户输入ID(该类型可以通过自己注册自动填充插件进行填充) |
ID_WORKER | 全局唯一ID (idWorker) |
UUID | 全局唯一ID(UUID) |
ID_WORKER_STR | 字符串全局唯一ID(idWorker 的字符串表示) |
- 编写Mapper接口
接口需要继承BaseMapper
继承BaseMapper时,必须传入实体类泛型
- 编写Service接口(一般都是自己写自己的业务方法,不重写Iservice里的方法)
可以选择继承 IService 接口
继承 IService 时,必须传入实体类泛型
- Sql操作方式
- 会自动
生成简单的单表SQL
操作:selectById、insert、updateById、selectByIds - 查询
结果为集合
时需要使用QueryWrapper
,设置好查询的条件。
QueryWrapper详细使用点这里 - 也可以自己编写SQL语句
三、编码
3.1 新建不选择任何东西的maven项目,编写pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.cyl.boot</groupId>
<artifactId>boot-03-mybatis-plus</artifactId>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.7</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3.1</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.2 application.properties 配置
server.port=8000
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql:///mydb?serverTimeZone=UTC
spring.datasource.username=root
spring.datasource.password=
3.3 实体类 User
src/main/java/com/cyl/entity/User.java
package com.cyl.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
//用来将指定的数据库表和 JavaBean 进行映射
//如果不配置,mybatis-plus会默认去找跟类名相同的小写开头的表名
@TableName("t_user")
public class User {
//有添加sql语句的时候需要写
//设置主键类型、如果数据库主键设置了自增建议使用“AUTO”
@TableId(type = IdType.AUTO)
private Integer id;
private String userName;
private String password;
private String email;
private String hobbies;
private String createTime;
}
3.4 mapper 接口
src/main/java/com/cyl/mapper/UserMapper.java
package com.cyl.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cyl.entity.User;
public interface UserMapper extends BaseMapper<User> {
}
3.5 mapper.xml 文件(没有写,都是使用MyBatis-Plus写好的)
src/main/resources/mapper/UserMapper.xml
<?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.cyl.mapper.UserMapper">
</mapper>
3.6 控制层
src/main/java/com/cyl/controller/UserController.java
package com.cyl.controller;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.cyl.entity.User;
import com.cyl.mapper.UserMapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
UserMapper userMapper;
//根据id查询用户
@GetMapping("/{id}")
public User getUser(@PathVariable int id){
return userMapper.selectById(id);
}
//添加一名用户
/*
User user 前不加 @RequestBody 则前台需要传表单数据过来
*/
@PostMapping
public String addUser(@RequestBody User user){
return userMapper.insert(user)>0?"添加成功":"添加失败";
}
//删除一名用户
@DeleteMapping("/{id}")
public String delUser(@PathVariable int id){
return userMapper.deleteById(id)>0?"删除成功":"删除失败";
}
//修改一名用户
@PutMapping("/{id}")
public String updateUser(@PathVariable int id,@RequestBody User user){
user.setId(id);
return userMapper.updateById(user)>0?"修改成功":"修改失败";
}
//条件查询多个
@GetMapping("/list")
public List<User> getUserList(String name){
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.select("id","name","email");
if (StringUtils.hasLength(name)){
queryWrapper.like("name",name);
}
return userMapper.selectList(queryWrapper);
}
}
3.7 启动类
src/main/java/com/cyl/BootApp.java
package com.cyl;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan(basePackages = "com.cyl.mapper")
public class BootApp {
public static void main(String[] args) {
SpringApplication.run(BootApp.class,args);
}
}