- 添加依赖
pom.xml
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.24</version>
<scope>provided</scope>
</dependency>
- 添加数据库连接配置
src/main/resources/application.yml
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/{数据库名}?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8
username: {账号}
password: {密码}
hikari:
connection-init-sql: set names utf8mb4 # 使用utf8mb4字符集
mvc:
pathmatch:
matching-strategy: ant_path_matcher # 配置这个来防止swagger报错
因为要使用utf8mb4编码,因此配置了connection-init-sql,在characterEncoding直接配置成utf8mb4会报错
- 创建实体类,用于存储查询出来的数据
src/main/java/com/lazysleep/base/entity/User.java
package com.lazysleep.base.entity;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
@Data
@TableName("u_user")
public class User {
@TableId(value = "id", type = IdType.AUTO)
private Integer id;
private String name;
private Integer age;
private String email;
}
涉及到三个注解
- @Data:对类成员变量增加 get set 方法
- @TableName:对应数据库表名
- @TableId:标记主键
mybatis-plus更多内容见 简介 | MyBatis-Plus (baomidou.com)
- 创建Mapper
src/main/java/com/lazysleep/base/mapper/UserMapper.java
package com.lazysleep.base.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.lazysleep.base.entity.User;
import org.springframework.stereotype.Repository;
@Repository
public interface UserMapper extends BaseMapper<User> {
}
- 在入口文件添加MapperScan注解
package com.lazysleep.base;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@MapperScan("com.lazysleep.base")
public class BaseApplication {
public static void main(String[] args) {
SpringApplication.run(BaseApplication.class, args);
}
}
此注解需要传入一个包名,作为扫描起点,如过不添加,后续mapper无法注入
- 改造原来的
FooController
package com.lazysleep.base.controller;
import com.lazysleep.base.entity.User;
import com.lazysleep.base.mapper.UserMapper;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@Api(tags = "Foo控制器")
@RestController
@RequestMapping("/foo")
public class FooController {
@Autowired
private UserMapper userMapper;
@GetMapping("foo")
@ApiOperation(value = "Foo接口")
public User foo() {
return userMapper.selectById(1);
}
}
使用@Autowired注入UserMapper实例,并在方法中调用selectById方法查询数据库用户表id=1的用户数据并返回。