搭建 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 中加载解析的配置文件格式
搭建 spring boot + mybatis plus 项目框架并进行调试的更多相关文章
- myEclipse 搭建 Spring boot+myBatis+maven 项目流程
1.新建一个工程 new-->maven project-->next-->next-->在filter中搜索webapp-->group id.Artifact id- ...
- spring boot+mybatis+quartz项目的搭建完整版
1. 利用spring boot提供的工具(http://start.spring.io/)自动生成一个标准的spring boot项目架构 2. 因为这里我们是搭建spring boot+mybat ...
- Maven 搭建spring boot多模块项目(附源码),亲测可以,感谢原创
原创地址:https://segmentfault.com/a/1190000005020589 我的DEMO码云地址,持续添加新功能: https://gitee.com/itbase/Spring ...
- Maven 搭建spring boot多模块项目
Maven 搭建spring boot多模块项目 备注:所有项目都在idea中创建 1.idea创建maven项目 1-1: 删除src,target目录,只保留pom.xml 1-2: 根目录pom ...
- spring Boot + MyBatis + Maven 项目,日志开启打印 sql
在 spring Boot + MyBatis + Maven 项目中,日志开启打印 sql 的最简单方法,就是在文件 application.properties 中新增: logging.leve ...
- idea搭建Spring Boot+Mybatis及使用教程
环境准备 idea 15 jDK tomcat maven 搭建方式 官网下载源码包解压缩 使用idea中的Spring initializr创建 这两种方法创建的项目完全相同,只是操作方式不一样 这 ...
- Maven搭建Spring+SpringMVC+Mybatis+Shiro项目详解
一. 环境搭建: 1. 开发工具:myeclipse 2014 / IDEA: 2. maven管理版本:apache-maven-3.0+: 3. jdk 1.7.0+4. Tomcat8.0 二: ...
- idea搭建Spring Boot+MyBatis
需要准备的环境: idea 2017.2 jdk1.8.0_144 Maven 3.5.0 请提前将idea与Maven.jdk配置好,本次项目用的都是比较新的. 步骤: 一.首先使用idea新建一个 ...
- spring boot + mybatis + layui + shiro后台权限管理系统
后台管理系统 版本更新 后续版本更新内容 链接入口: springboot + shiro之登录人数限制.登录判断重定向.session时间设置:https://blog.51cto.com/wyai ...
- Spring boot+Mybatis+MySQL插入中文乱码
转载:https://www.jianshu.com/p/bd0311a33c16 现象: 搭建spring boot+mybatis+mysql时出现插入mysql的中文出现乱码???. mys ...
随机推荐
- Spring整合Quartz简单入门
创建一个Web项目 导入相关jar包 <?xml version="1.0" encoding="UTF-8"?> <project xmln ...
- Taurus .Net Core 微服务开源框架:Admin 插件【4-8】 - 配置管理-Mvc【Plugin-Limit 接口访问限制、IP限制、Ack限制】
前言: 继上篇:Taurus .Net Core 微服务开源框架:Admin 插件[4-7] - 配置管理-Mvc[Plugin-Metric 接口调用次数统计] 本篇继续介绍下一个内容: 1.系统配 ...
- 简单几行实现sliver上线提醒
准备魔改sliver去掉一些特征什么的,这里记录一下最简单实现上线消息通过企业微信机器人提醒的方式,这很简单也有很多不足还需要接着改的 protobuf中对消息Beacon和Session的定义如下, ...
- 38. 干货系列从零用Rust编写负载均衡及代理,负载均衡中ip通行与禁止
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 静态文件服务器,四层TCP/UDP转发,七层负载均衡,内网穿透,后续将实现websocket代 ...
- OpenFeign:Spring Cloud声明式服务调用组件
OpenFeign:Spring Cloud声明式服务调用组件 问题总结 OpenFeign? Feign VS OpenFeign? OpenFeign实现远程服务调用? OpenFeign超时控制 ...
- MYSQL事务篇(高级篇)
1.事务介绍: 一般是指要做的或所做的事情. 在计算机 术语 中是指访问并可能更新数据库中各种 数据项 的一个程序 执行单元 (unit) 2.数据库事务具有ACID四大特性. ACID是以下4个词的 ...
- 面试官:请列举 Spring 的事务会失效的场景
在日常工作中,如果对 Spring 的事务管理功能使用不当,则会造成 Spring 事务不生效的问题.而针对 Spring 事务不生效的问题,也是在跳槽面试中被问的比较频繁的一个问题. 今天,我们就一 ...
- 微短剧市场暴涨267.65%,用微短剧场景AUI Kit精巧入局
微短剧,不仅上头,更要上心. 微短剧,深度"拿捏"了这个碎片化时代,也是刚过去的2023年绕不开的热词. 与传统影视剧制作精益求精.耗时长相反,门槛与耗时"双低" ...
- java中根据公网IP获取地址
package com.dashan.utils.iputils; import com.fasterxml.jackson.databind.ObjectMapper; import okhttp3 ...
- row_number函数的不稳定性
本文分享自华为云社区<row_number函数的不稳定性>,作者: nullptr_ . row_number为窗口函数,用来为各组内数据生成连续排号 基础用法 postgres=# se ...