下面是Springboot 与 Mybatis plus 的整合过程。
这里构建Maven项目可以通过IDEA工具,选择对应的springboot 组件构成,为了详细说明文件特一步步构建。
1. 新建项目
在IDEA 中 File
-> New
-> Project
。
2. 项目依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- 数据库驱动包管理 -->
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
</dependency>
<!-- mybatis plus 管理 -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>com.github.xiaoymin</groupId>
<artifactId>knife4j-openapi2-spring-boot-starter</artifactId>
</dependency>
</dependencies>
3.编写配置文件
application.yaml
server:
port: 8100
spring:
application:
name: user-service
profiles:
active: dev
datasource:
url: jdbc:mysql://192.168.44.100:3306/mall_user?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
# HikariCP连接池配置
type: com.zaxxer.hikari.HikariDataSource
hikari:
# 设置连接池中保持的最小空闲连接数,默认为10
minimum-idle: 10
# 设置连接池中允许的最大连接数,默认为10
maximum-pool-size: 10
# 设置是否自动提交事务,默认为true
auto-commit: true
# 设置连接在连接池中保持空闲的最长时间,默认为600000(10分钟),单位是毫秒
idle-timeout: 60000
# 设置连接池的名称,默认为"HikariPool-1"
pool-name: HikariPool-user
# 设置连接在连接池中允许存在的最长时间,默认为1800000(30分钟),单位是毫秒
max-lifetime: 1800000
# 设置获取数据库连接的超时时间,默认为30000(30秒),单位是毫秒
connection-timeout: 30000
# 设置用于测试连接的SQL查询语句
connection-test-query: SELECT 1
# 设置连接验证的超时时间,默认为5000(5秒),单位是秒
validation-timeout: 5000
# mybatis plus
mybatis-plus:
type-aliases-package: com.mall.cloud.user.domain
mapper-locations: classpath*:/mapper/**.xml
configuration:
default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandler
global-config:
db-config:
update-strategy: not_null
id-type: assign_id
# api doc
knife4j:
enable: true
openapi:
title: 商城接口文档
description: "商城接口文档"
email: 842771506@qq.com
concat: zhouzz
url: https://www.zhouzz.com
version: v2.0
group:
default:
group-name: 用户模块
api-rule: package
api-rule-resources:
- com.mall.cloud.user.controller
logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<!-- 日志文件名 -->
<property name="LOG_FILE" value="user_log"/>
<!-- 日志文件路径 -->
<property name="LOG_PATH" value="logs/service-user"/>
<!-- 控制台日志输出格式 -->
<property name="LOG_PATTERN_CONSOLE" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} --> %msg%n"/>
<!-- 文件日志输出格式 -->
<property name="LOG_PATTERN_FILE" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{50} --> %msg%n"/>
<!--- 设置控制台日志 -->
<appender name="consoleLog" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>${LOG_PATTERN_CONSOLE}</pattern>
</encoder>
</appender>
<!-- 设置日志文件 -->
<appender name="fileLog" class="ch.qos.logback.core.rolling.RollingFileAppender">
<encoder>
<pattern>${LOG_PATTERN_FILE}</pattern>
</encoder>
<!-- 总文件日志 -->
<file>${LOG_PATH}/${LOG_FILE}.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<!-- 每天的文件日志 -->
<fileNamePattern>${LOG_PATH}/${LOG_FILE}-%d{yyyy-MM-dd}.log</fileNamePattern>
<!-- 日志文件保存7天,超过7天的自动删除 -->
<maxHistory>7</maxHistory>
</rollingPolicy>
</appender>
<!-- 设置日志级别,及需要记录日志的类 -->
<root level="debug">
<appender-ref ref="consoleLog"/>
</root>
<root level="INFO">
<appender-ref ref="consoleLog"/>
<appender-ref ref="fileLog"/>
</root>
</configuration>
4.java代码
4.1 启动类
package com.mall.cloud.user;
import lombok.extern.slf4j.Slf4j;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
/**
* 会员业务模块启动类
* @author zhouzz
*/
@Slf4j
@MapperScan("com.mall.cloud.user.mapper")
@SpringBootApplication
public class UserServiceApplication {
public static void main(String[] args) {
ConfigurableApplicationContext applicationContext = SpringApplication.run(UserServiceApplication.class, args);
Environment environment = applicationContext.getBean(Environment.class);
log.info("\n============> 系统启动成功!后台配置环境: {}", environment.getProperty("spring.profiles.active"));
log.info("\n============> 后台地址:http://localhost:{}", environment.getProperty("server.port"));
}
}
4.2 控制器
package com.mall.cloud.user.controller;
import com.mall.cloud.user.domain.User;
import com.mall.cloud.user.service.UserService;
import io.swagger.annotations.Api;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* 用户表 前端控制器
* @author zhouzz
*/
@Api(tags = "用户模块")
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
@PostMapping("/getInfo")
public Object getInfo(Long id) {
User user = userService.getById(id);
return user;
}
}
4.3 实体类
package com.mall.cloud.user.domain;
import com.baomidou.mybatisplus.annotation.IdType;
import java.util.Date;
import com.baomidou.mybatisplus.annotation.TableId;
import java.io.Serializable;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
@Data
@EqualsAndHashCode(callSuper = false)
@ApiModel(value="User对象", description="用户表")
public class User implements Serializable {
private static final long serialVersionUID = 1L;
@ApiModelProperty(value = "会员表的主键")
@TableId(value = "id", type = IdType.ASSIGN_ID)
private Long id;
@ApiModelProperty(value = "用户名")
private String username;
@ApiModelProperty(value = "登录密码")
private String password;
@ApiModelProperty(value = "手机号码")
private String userMobile;
@ApiModelProperty(value = "用户邮箱")
private String userMail;
@ApiModelProperty(value = "用户昵称")
private String nickName;
@ApiModelProperty(value = "真实姓名")
private String realName;
@ApiModelProperty(value = "支付密码")
private String payPassword;
@ApiModelProperty(value = "修改时间")
private Date updateTime;
@ApiModelProperty(value = "注册时间")
private Date createTime;
@ApiModelProperty(value = "注册IP")
private String userRegisterIp;
@ApiModelProperty(value = "最后登录时间")
private Date userLastTime;
@ApiModelProperty(value = "最后登录IP")
private String userLastIp;
@ApiModelProperty(value = "M(男) or F(女)")
private String sex;
@ApiModelProperty(value = "例如:2009-11-27")
private Date birthDate;
@ApiModelProperty(value = "头像图片路径")
private String pic;
@ApiModelProperty(value = "状态 1 正常 0 无效")
private Integer status;
@ApiModelProperty(value = "用户积分")
private Integer score;
}
4.4 Mapper类
package com.mall.cloud.user.mapper;
import com.mall.cloud.user.domain.User;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface UserMapper extends BaseMapper<User> {
}
4.5 service类
UserService.java
package com.mall.cloud.user.service;
import com.mall.cloud.user.domain.User;
import com.baomidou.mybatisplus.extension.service.IService;
public interface UserService extends IService<User> {
}
UserServiceImpl.java
package com.mall.cloud.user.service.impl;
import com.mall.cloud.user.domain.User;
import com.mall.cloud.user.mapper.UserMapper;
import com.mall.cloud.user.service.UserService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService {
}
5.启动和测试
打开IDEA,点击顶部菜单栏的“View”>“Tool Windows”>“Services”。
在services窗口添加 UserServiceApplication
,点击启动。
Connected to the target VM, address: '127.0.0.1:61396', transport: 'socket'
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.7.18)
...
2024-08-06 14:01:00 [main] INFO com.mall.cloud.user.UserServiceApplication --> The following 1 profile is active: "dev"
...
2024-08-06 14:01:01 [main] INFO o.a.c.core.ContainerBase.[Tomcat].[localhost].[/] --> Initializing Spring embedded WebApplicationContext
2024-08-06 14:01:01 [main] INFO o.s.b.w.s.c.ServletWebServerApplicationContext --> Root WebApplicationContext: initialization completed in 922 ms
_ _ |_ _ _|_. ___ _ | _
| | |\/|_)(_| | |_\ |_)||_|_\
/ |
3.5.3.2
2024-08-06 14:01:02 [main] INFO s.d.s.w.WebMvcPropertySourcedRequestMappingHandlerMapping --> Mapped URL path [/v2/api-docs] onto method [springfox.documentation.swagger2.web.Swagger2ControllerWebMvc#getDocumentation(String, HttpServletRequest)]
2024-08-06 14:01:02 [main] INFO org.apache.coyote.http11.Http11NioProtocol --> Starting ProtocolHandler ["http-nio-8100"]
2024-08-06 14:01:02 [main] INFO o.s.boot.web.embedded.tomcat.TomcatWebServer --> Tomcat started on port(s): 8100 (http) with context path ''
...
2024-08-06 14:01:02 [main] INFO com.mall.cloud.user.UserServiceApplication --> Started UserServiceApplication in 2.318 seconds (JVM running for 3.033)
2024-08-06 14:01:02 [main] INFO com.mall.cloud.user.UserServiceApplication -->
============> 系统启动成功!后台配置环境: dev
2024-08-06 14:01:02 [main] INFO com.mall.cloud.user.UserServiceApplication -->
============> 后台地址:http://localhost:8100
上面说明服务已经正常启动。
访问接口 http://localhost:8100/user/getInfo ,若能够获取数据则说明搭建成功。
评论区