搭建 spring boot + mybatis plus 項目框架並進行調試


本文為博主原創,未經允許不得轉載:

  1.創建一個spring boot的工程應用:

   File ---- > New ----->Project ----> 然后選中Spring Initializr 繼續創建:

 

 

 2.添加spring boot ,mybatis plus 以及 mysql 相關的依賴:

 <dependencies>
        <!-- spring boot web啟動 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!-- mysql 數據庫連接 -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
        <!-- mybatis plus 代碼生成器 -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
            <version>3.2.0</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.47</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
        <dependency>
            <groupId>javax.persistence</groupId>
            <artifactId>persistence-api</artifactId>
            <version>1.0</version>
        </dependency>
    </dependencies>

 

3. spring boot 的配置文件中配置項目啟動名稱,端口號,數據庫連接等:

   此處需要注意的是:spring boot 項目的配置文件是application.properties ,不是bootstrap.yml,bootstrap.yml是spring cloud 中定義解析配置文件的格式

server.port=8002

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=root

# mybatis plus 調用打印 sql mybatis
-plus.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

 並啟動項目,查看啟動日志,會打印spring 以及 mybatis  plus 的banner 圖案

 

4.創建用戶表,定義表結構如下:

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=utf-8;

 

5. 業務代碼:

  5.1 創建實體類:

package com.example.demo.entity;

import lombok.Data;
import javax.persistence.Table;

@Data
@Table(name = "user")
public class User {

    private Long id;

    private String name;

    private int age;

    private String email;
}

  5.2 創建 mapper,需要繼承BaseMapper

    mapper接口需要在項目啟動時進行加載掃描,可以使用兩種方式進行配置:

      第一種可以使用 @Mapper注解,在每個mapper接口進行注解,第二種可以在啟動類上使用 @MapperScan 注解,其中的值為mapper的包路徑

    其中@Repository 表示持久層

package com.example.demo.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.example.demo.entity.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.stereotype.Repository;

@Repository
//@Mapper
public interface UserMapper extends BaseMapper<User> {
}

  5.3 創建service 接口,需要繼承IService

package com.example.demo.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.demo.entity.User;

import java.util.List;

public interface UserService extends IService<User> {
    /**
     * query all
     * @return
     */
    List<User> queryAllUser();
}

  5.4 實現service接口,需要繼承 ServiceImpl

package com.example.demo.service.impl;

import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;

@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {

    @Autowired
    private UserMapper userMapper;
    @Override
    public List<User> queryAllUser() {
        return userMapper.selectList(null);
    }
}

  5.5 創建controller

package com.example.demo.controller;

import com.example.demo.entity.User;
import com.example.demo.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.List;

@RestController
@RequestMapping("/user")
public class UserInfoController {

    @Autowired
    private UserService userService;

    @RequestMapping("/queryAllUser")
    public List<User> queryAllUser(){
        List<User> userList = userService.queryAllUser();
        return userList;
    }

}

 

 6.測試類

  測試類需要添加spring boot 的test依賴,其中已經依賴過了junit test 的依賴,不需要再進行單獨添加。

package com.example.demo;

import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.example.demo.controller.UserInfoController;
import com.example.demo.entity.User;
import com.example.demo.mapper.UserMapper;
import com.example.demo.service.UserService;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@Slf4j
@SpringBootTest
class DemoApplicationTests {

    @Autowired
    private UserMapper userMapper;

    @Autowired
    private UserService userService;

    @Autowired
    private UserInfoController userInfoController;

    @Test
    void test() {
        QueryWrapper<User> wrapper = new QueryWrapper<>();
        wrapper.eq("name", "2");
        User user = userMapper.selectOne(wrapper);
        log.info("userMapper.selectOne result is {}", JSON.toJSONString(user));

        int count = userService.count();
        System.out.println(count);
        log.info("userService.count() result is {}", count);
        List<User> userList = userInfoController.queryAllUser();
        log.info("userInfoController.queryAllUser() result is {}", JSON.toJSONString(userList));
    }
}

如果使用以上測試時,出現測試類中注入的bean一直為空時,可使用下面的方式:

@RunWith(SpringRunner.class)
@SpringBootTest(classes = GeneratorApp.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class UserTest {
   @Autowired
    private UserService userService;
}

執行以上測試類截圖:

  

 

7. 配置 mybatis  plus 的分頁

package com.example.demo.config;

import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class MybatisPlusConfig {
    // 分頁插件
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        return new PaginationInterceptor();
    }

}

 通過 junit 進行調試

 @Test
    void testPage() {
        Page<User> page = new Page<>(1, 5);
        IPage<User> paVo = userMapper.selectPage(page, null);
        log.info("------------------{}", JSON.toJSONString(paVo));
    }

 mybatis plus 分頁之后的格式如下:

{
    "current": 1,
    "orders": [],
    "pages": 1,
    "records": [{
        "age": 3,
        "email": "4",
        "id": 1,
        "name": "2"
    }, {
        "age": 23,
        "email": "344",
        "id": 1352980081638248450,
        "name": "test"
    }, {
        "age": 23,
        "email": "344",
        "id": 1352980446211342337,
        "name": "test"
    }, {
        "age": 23,
        "email": "344",
        "id": 1352980660057944066,
        "name": "test"
    }],
    "searchCount": true,
    "size": 5,
    "total": 4
}

 

 

搭建框架過程中遇到的坑:

  1. spring boot start啟動的依賴是 spring-boot-starter-web ,不是 spring-boot-starter

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

  2. spring boot 默認解析的配置文件是 application.properties 文件,不是bootstrap.yaml , bootstrap.yaml 是spring cloud 中加載解析的配置文件格式

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM