本文为博主原创,未经允许不得转载:

  1.创建一个spring boot的工程应用:

   File ---- > New ----->Project ----> 然后选中Spring Initializr 继续创建:

 

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

  1. <dependencies>
  2. <!-- spring boot web启动 -->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <dependency>
  8. <groupId>org.projectlombok</groupId>
  9. <artifactId>lombok</artifactId>
  10. <optional>true</optional>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-test</artifactId>
  15. <scope>test</scope>
  16. </dependency>
  17. <!-- mysql 数据库连接 -->
  18. <dependency>
  19. <groupId>mysql</groupId>
  20. <artifactId>mysql-connector-java</artifactId>
  21. <scope>runtime</scope>
  22. </dependency>
  23. <!-- mybatis plus 代码生成器 -->
  24. <dependency>
  25. <groupId>com.baomidou</groupId>
  26. <artifactId>mybatis-plus-boot-starter</artifactId>
  27. <version>3.2.0</version>
  28. </dependency>
  29. <dependency>
  30. <groupId>com.alibaba</groupId>
  31. <artifactId>fastjson</artifactId>
  32. <version>1.2.47</version>
  33. </dependency>
  34. <!-- https://mvnrepository.com/artifact/javax.persistence/persistence-api -->
  35. <dependency>
  36. <groupId>javax.persistence</groupId>
  37. <artifactId>persistence-api</artifactId>
  38. <version>1.0</version>
  39. </dependency>
  40. </dependencies>

3. spring boot 的配置文件中配置项目启动名称,端口号,数据库连接等:

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

  1. server.port=8002
  2.  
  3. spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
  4. spring.datasource.url=jdbc:mysql://127.0.0.1:3306/test?autoReconnect=true&useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC
  5. spring.datasource.username=root
  6. spring.datasource.password=root

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

并启动项目,查看启动日志,会打印spring 以及 mybatis  plus 的banner 图案

4.创建用户表,定义表结构如下:

  1. CREATE TABLE `user` (
  2. `id` bigint(20) NOT NULL COMMENT '主键ID',
  3. `name` varchar(30) DEFAULT NULL COMMENT '姓名',
  4. `age` int(11) DEFAULT NULL COMMENT '年龄',
  5. `email` varchar(50) DEFAULT NULL COMMENT '邮箱',
  6. PRIMARY KEY (`id`)
  7. ) ENGINE=InnoDB DEFAULT CHARSET=utf-8;

5. 业务代码:

  5.1 创建实体类:

  1. package com.example.demo.entity;
  2.  
  3. import lombok.Data;
  4. import javax.persistence.Table;
  5.  
  6. @Data
  7. @Table(name = "user")
  8. public class User {
  9.  
  10. private Long id;
  11.  
  12. private String name;
  13.  
  14. private int age;
  15.  
  16. private String email;
  17. }

  5.2 创建 mapper,需要继承BaseMapper

    mapper接口需要在项目启动时进行加载扫描,可以使用两种方式进行配置:

      第一种可以使用 @Mapper注解,在每个mapper接口进行注解,第二种可以在启动类上使用 @MapperScan 注解,其中的值为mapper的包路径

    其中@Repository 表示持久层

  1. package com.example.demo.mapper;
  2.  
  3. import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  4. import com.example.demo.entity.User;
  5. import org.apache.ibatis.annotations.Mapper;
  6. import org.springframework.stereotype.Repository;
  7.  
  8. @Repository
  9. //@Mapper
  10. public interface UserMapper extends BaseMapper<User> {
  11. }

  5.3 创建service 接口,需要继承IService

  1. package com.example.demo.service;
  2.  
  3. import com.baomidou.mybatisplus.extension.service.IService;
  4. import com.example.demo.entity.User;
  5.  
  6. import java.util.List;
  7.  
  8. public interface UserService extends IService<User> {
  9. /**
  10. * query all
  11. * @return
  12. */
  13. List<User> queryAllUser();
  14. }

  5.4 实现service接口,需要继承 ServiceImpl

  1. package com.example.demo.service.impl;
  2.  
  3. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  4. import com.example.demo.entity.User;
  5. import com.example.demo.mapper.UserMapper;
  6. import com.example.demo.service.UserService;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.stereotype.Service;
  9. import java.util.List;
  10.  
  11. @Service
  12. public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
  13.  
  14. @Autowired
  15. private UserMapper userMapper;
  16. @Override
  17. public List<User> queryAllUser() {
  18. return userMapper.selectList(null);
  19. }
  20. }

  5.5 创建controller

  1. package com.example.demo.controller;
  2.  
  3. import com.example.demo.entity.User;
  4. import com.example.demo.service.UserService;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.web.bind.annotation.RequestMapping;
  7. import org.springframework.web.bind.annotation.RestController;
  8.  
  9. import java.util.List;
  10.  
  11. @RestController
  12. @RequestMapping("/user")
  13. public class UserInfoController {
  14.  
  15. @Autowired
  16. private UserService userService;
  17.  
  18. @RequestMapping("/queryAllUser")
  19. public List<User> queryAllUser(){
  20. List<User> userList = userService.queryAllUser();
  21. return userList;
  22. }
  23.  
  24. }

6.测试类

  测试类需要添加spring boot 的test依赖,其中已经依赖过了junit test 的依赖,不需要再进行单独添加。

  1. package com.example.demo;
  2.  
  3. import com.alibaba.fastjson.JSON;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import com.example.demo.controller.UserInfoController;
  6. import com.example.demo.entity.User;
  7. import com.example.demo.mapper.UserMapper;
  8. import com.example.demo.service.UserService;
  9. import lombok.extern.slf4j.Slf4j;
  10. import org.junit.jupiter.api.Test;
  11. import org.springframework.beans.factory.annotation.Autowired;
  12. import org.springframework.boot.test.context.SpringBootTest;
  13.  
  14. import java.util.List;
  15.  
  16. @Slf4j
  17. @SpringBootTest
  18. class DemoApplicationTests {
  19.  
  20. @Autowired
  21. private UserMapper userMapper;
  22.  
  23. @Autowired
  24. private UserService userService;
  25.  
  26. @Autowired
  27. private UserInfoController userInfoController;
  28.  
  29. @Test
  30. void test() {
  31. QueryWrapper<User> wrapper = new QueryWrapper<>();
  32. wrapper.eq("name", "2");
  33. User user = userMapper.selectOne(wrapper);
  34. log.info("userMapper.selectOne result is {}", JSON.toJSONString(user));
  35.  
  36. int count = userService.count();
  37. System.out.println(count);
  38. log.info("userService.count() result is {}", count);
  39. List<User> userList = userInfoController.queryAllUser();
  40. log.info("userInfoController.queryAllUser() result is {}", JSON.toJSONString(userList));
  41. }
  42. }

如果使用以上测试时,出现测试类中注入的bean一直为空时,可使用下面的方式:

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

执行以上测试类截图:

  

7. 配置 mybatis  plus 的分页

  1. package com.example.demo.config;
  2.  
  3. import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
  4. import org.springframework.context.annotation.Bean;
  5. import org.springframework.context.annotation.Configuration;
  6.  
  7. @Configuration
  8. public class MybatisPlusConfig {
  9. // 分页插件
  10. @Bean
  11. public PaginationInterceptor paginationInterceptor() {
  12. return new PaginationInterceptor();
  13. }
  14.  
  15. }

通过 junit 进行调试

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

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

  1. {
  2. "current": 1,
  3. "orders": [],
  4. "pages": 1,
  5. "records": [{
  6. "age": 3,
  7. "email": "4",
  8. "id": 1,
  9. "name": "2"
  10. }, {
  11. "age": 23,
  12. "email": "344",
  13. "id": 1352980081638248450,
  14. "name": "test"
  15. }, {
  16. "age": 23,
  17. "email": "344",
  18. "id": 1352980446211342337,
  19. "name": "test"
  20. }, {
  21. "age": 23,
  22. "email": "344",
  23. "id": 1352980660057944066,
  24. "name": "test"
  25. }],
  26. "searchCount": true,
  27. "size": 5,
  28. "total": 4
  29. }

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

  1. spring boot start启动的依赖是 spring-boot-starter-web ,不是 spring-boot-starter

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-web</artifactId>
  4. </dependency>

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

  

搭建 spring boot + mybatis plus 项目框架并进行调试的更多相关文章

  1. myEclipse 搭建 Spring boot+myBatis+maven 项目流程

    1.新建一个工程 new-->maven project-->next-->next-->在filter中搜索webapp-->group id.Artifact id- ...

  2. spring boot+mybatis+quartz项目的搭建完整版

    1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...

  3. Maven 搭建spring boot多模块项目(附源码),亲测可以,感谢原创

    原创地址:https://segmentfault.com/a/1190000005020589 我的DEMO码云地址,持续添加新功能: https://gitee.com/itbase/Spring ...

  4. Maven 搭建spring boot多模块项目

    Maven 搭建spring boot多模块项目 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom ...

  5. spring Boot + MyBatis + Maven 项目,日志开启打印 sql

    在 spring Boot + MyBatis + Maven 项目中,日志开启打印 sql 的最简单方法,就是在文件 application.properties 中新增: logging.leve ...

  6. idea搭建Spring Boot+Mybatis及使用教程

    环境准备 idea 15 jDK tomcat maven 搭建方式 官网下载源码包解压缩 使用idea中的Spring initializr创建 这两种方法创建的项目完全相同,只是操作方式不一样 这 ...

  7. Maven搭建Spring+SpringMVC+Mybatis+Shiro项目详解

    一. 环境搭建: 1. 开发工具:myeclipse 2014 / IDEA: 2. maven管理版本:apache-maven-3.0+: 3. jdk 1.7.0+4. Tomcat8.0 二: ...

  8. idea搭建Spring Boot+MyBatis

    需要准备的环境: idea 2017.2 jdk1.8.0_144 Maven 3.5.0 请提前将idea与Maven.jdk配置好,本次项目用的都是比较新的. 步骤: 一.首先使用idea新建一个 ...

  9. spring boot + mybatis + layui + shiro后台权限管理系统

    后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ...

  10. Spring boot+Mybatis+MySQL插入中文乱码

    转载:https://www.jianshu.com/p/bd0311a33c16 现象: 搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???.   mys ...

随机推荐

  1. Spring整合Quartz简单入门

    创建一个Web项目 导入相关jar包 <?xml version="1.0" encoding="UTF-8"?> <project xmln ...

  2. Taurus .Net Core 微服务开源框架:Admin 插件【4-8】 - 配置管理-Mvc【Plugin-Limit 接口访问限制、IP限制、Ack限制】

    前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[4-7] - 配置管理-Mvc[Plugin-Metric 接口调用次数统计] 本篇继续介绍下一个内容: 1.系统配 ...

  3. 简单几行实现sliver上线提醒

    准备魔改sliver去掉一些特征什么的,这里记录一下最简单实现上线消息通过企业微信机器人提醒的方式,这很简单也有很多不足还需要接着改的 protobuf中对消息Beacon和Session的定义如下, ...

  4. 38. 干货系列从零用Rust编写负载均衡及代理,负载均衡中ip通行与禁止

    wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...

  5. OpenFeign:Spring Cloud声明式服务调用组件

    OpenFeign:Spring Cloud声明式服务调用组件 问题总结 OpenFeign? Feign VS OpenFeign? OpenFeign实现远程服务调用? OpenFeign超时控制 ...

  6. MYSQL事务篇(高级篇)

    1.事务介绍: 一般是指要做的或所做的事情. 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性. ACID是以下4个词的 ...

  7. 面试官:请列举 Spring 的事务会失效的场景

    在日常工作中,如果对 Spring 的事务管理功能使用不当,则会造成 Spring 事务不生效的问题.而针对 Spring 事务不生效的问题,也是在跳槽面试中被问的比较频繁的一个问题. 今天,我们就一 ...

  8. 微短剧市场暴涨267.65%,用微短剧场景AUI Kit精巧入局

    微短剧,不仅上头,更要上心. 微短剧,深度"拿捏"了这个碎片化时代,也是刚过去的2023年绕不开的热词. 与传统影视剧制作精益求精.耗时长相反,门槛与耗时"双低" ...

  9. java中根据公网IP获取地址

    package com.dashan.utils.iputils; import com.fasterxml.jackson.databind.ObjectMapper; import okhttp3 ...

  10. row_number函数的不稳定性

    本文分享自华为云社区<row_number函数的不稳定性>,作者: nullptr_ . row_number为窗口函数,用来为各组内数据生成连续排号 基础用法 postgres=# se ...