目 录CONTENT

文章目录

商城-Springboot与Mybatis plus

zhouzz
2024-10-02 / 0 评论 / 0 点赞 / 3 阅读 / 25881 字
温馨提示:
本文最后更新于 2024-10-06,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

下面是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 ,若能够获取数据则说明搭建成功。

6.小结

0

评论区