MyBatisPlus-01-环境初始化及简单应用

发布于:2025-07-08 ⋅ 阅读:(16) ⋅ 点赞:(0)

【README】

本文代码参见: https://github.com/TomJourney/mybatis-plus-test

本文集成了springboot与mybatis-plus,并提供了一个mybatis-plus的简单应用;

【使用MyBatisPlus的关键】springboot集成了mybatis的基础上,使用mybatis-plus就2步:

  • 步骤1)引入mybatis-plus依赖,删除 mybatis-spring-boot-starter 依赖;
  • 步骤2)业务Mapper如UserMapper继承MyBatis-Plus中的BaseMapper;

【pom.xml中spring-mybatis与mybaits-plus依赖配置】

<!-- mybatis conf (新增mybatis-plus-boot-starter依赖,需要把mybatis-spring-boot-starter注释或删除,否则报包冲突)-->
<!--    <dependency>-->
<!--      <groupId>org.mybatis.spring.boot</groupId>-->
<!--      <artifactId>mybatis-spring-boot-starter</artifactId>-->
<!--      <version>3.0.3</version>-->
<!--    </dependency>-->
<dependency>
  <groupId>com.baomidou</groupId>
  <artifactId>mybatis-plus-boot-starter</artifactId>
  <version>3.5.12</version>
</dependency>
<dependency>
  <groupId>org.mybatis</groupId>
  <artifactId>mybatis-spring</artifactId>
  <version>3.0.3</version>
</dependency>


【1】springboot集成mybatis-plus配置

【1.1】目录结构

在这里插入图片描述

【相关说明】

本文项目使用了springboot, lombok,mybatis-plus;采用不规范的三层架构(为了求快),正式的生产环境不要参考本文代码;

补充:规范的代码应该是4层架构,包括adapter,app,domain,infra (有兴趣的同学参考ddd);



【1.2】代码示例

【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 https://maven.apache.org/xsd/maven-4.0.0.xsd">

  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>3.3.5</version>
    <relativePath/> <!-- lookup parent from repository -->
  </parent>

  <groupId>com.tom.studynote</groupId>
  <artifactId>mybatis-plus-test</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <name>mybatis-plus-test</name>
  <description>mybatis-plus-test</description>
  <url/>

  <properties>
    <java.version>17</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
      <version>3.3.5</version>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>8.0.29</version>
    </dependency>
    <!--【数据库】数据库连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.2.11</version>
    </dependency>

    <dependency>
      <groupId>org.projectlombok</groupId>
      <artifactId>lombok</artifactId>
      <scope>provided</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.mapstruct/mapstruct -->
    <dependency>
      <groupId>org.mapstruct</groupId>
      <artifactId>mapstruct</artifactId>
      <version>1.6.2</version>
    </dependency>

    <dependency>
      <groupId>org.mapstruct</groupId>
      <artifactId>mapstruct-processor</artifactId>
      <version>1.6.2</version>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <!-- mybatis conf (新增mybatis-plus-boot-starter依赖,需要把mybatis-spring-boot-starter注释或删除,否则报包冲突)-->
    <!--    <dependency>-->
    <!--      <groupId>org.mybatis.spring.boot</groupId>-->
    <!--      <artifactId>mybatis-spring-boot-starter</artifactId>-->
    <!--      <version>3.0.3</version>-->
    <!--    </dependency>-->
    <dependency>
      <groupId>com.baomidou</groupId>
      <artifactId>mybatis-plus-boot-starter</artifactId>
      <version>3.5.12</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>3.0.3</version>
    </dependency>
  </dependencies>

  <build>
    <resources>
      <resource>
        <directory>src/main/java</directory>
        <includes>
          <include>**/*.xml</include>
        </includes>
      </resource>
      <resource>
        <directory>src/main/resources</directory>
      </resource>
    </resources>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
      </plugin>
    </plugins>
  </build>

</project>

【application.properties】

server.port = 8081

# spring datasource conf
spring.datasource.url=jdbc:mysql://localhost:3306/mywarn?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

# druid
spring.datasource.druid.initial-size=1
spring.datasource.druid.max-active=5
spring.datasource.druid.min-idle=5
spring.datasource.druid.max-wait=60000

# mybatis conf
mybatis.mapper-locations=classpath:com/mybatisplustest/infrastructure/dao/**/*.xml
mybatis.config-location=classpath:mybatis-config.xml
check-config-location=true

# template path
spring.web.resources.static-locations=classpath:/templates

# mybaits-plus
mybatis-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

【TomMybatisPlusNoteApplication】

@SpringBootApplication
@MapperScan(basePackages = {"com.tom.study.mybatisplustest.infrastructure.dao"})
public class TomMybatisPlusNoteApplication {

    public static void main(String[] args) {
        SpringApplication.run(TomMybatisPlusNoteApplication.class, args);
    }
}

【MybatisPlusNoteController】

@RestController
@RequestMapping("/mybatis-plus-note")
public class MybatisPlusNoteController {

    @Autowired
    private UserAppService userAppService;

    @GetMapping("/user/{id}")
    public UserPO findUserById(@PathVariable("id") String id) {
        return userAppService.findUserById(id);
    }

    @PostMapping(path = "/add-user", consumes = "application/json")
    public void addUser(@RequestBody UserPO userPO) {
        userAppService.saveNewUser(userPO);
    }
}

【UserAppService】

@Service
public class UserAppService {

    @Autowired
    UserMapper userMapper;

    public UserPO findUserById(String id) {
        return userMapper.selectById(id);
    }

    public void saveNewUser(UserPO UserPO) {
        userMapper.insert(UserPO);
    }
}

【UserMapper】

【关键】业务Mapper-UserMapper只需要继承BaseMapper即可使用mybatis-plus 提供的api

public interface UserMapper extends BaseMapper<UserPO> {
}

【UserPO】

@Data
@TableName("user_tbl")
public class UserPO {
    private Long id;
    private String name;
    private String mobilePhone;
    private String addr;
}

【建表语句】

-- mywarn.user_tbl definition

CREATE TABLE `user_tbl` (
  `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户名称',
  `mobile_phone` varchar(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '移动电话',
  `addr` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '地址',
  `user_state` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '用户状态/ON-在线/OFF-离线',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `last_modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='用户表';


【2】演示

请求路径:localhost:8081/mybatis-plus-note/add-user

报文:

{
    "id": 10,
    "name": "user10",
    "mobilePhone": "17712340010",
    "addr": "成都天府三街010号"
}

在这里插入图片描述




网站公告

今日签到

点亮在社区的每一天
去签到