我们在父项目统一管理引入的jar包的版本。我们采用父项目中以depencyMangement方式引入spring-boot,子项目依赖parent父配置即可。
4.0.0
org.example
myshop
1.0-SNAPSHOT
pom
myshop-common
myshop-user
myshop-stock
myshop-order
myshop-goods
myshop-pay
8
8
UTF-8
org.springframework.boot
spring-boot-dependencies
2.7.8
pom
import
我们在myshop-user模块下添加项目需要的依赖。
4.0.0
org.example
myshop
1.0-SNAPSHOT
myshop-user
8
8
UTF-8
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
8.0.31
org.springframework.boot
spring-boot-starter-data-jpa
添加好依赖,使用Maven命令重新加载一下。
我们在模块下面的resource目录下添加配置文件application.yml,相关配置如下:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/myshop?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8&useSSL=false&rewriteBatchedStatements=true
username: root
password: 123456
jpa:
hibernate:
ddl-auto: update
show-sql: true
package com.example.myshop;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author qx
* @date 2023/06/21
* @desc 启动类
*/
@SpringBootApplication
public class MyShopUserApplication {
public static void main(String[] args) {
SpringApplication.run(MyShopUserApplication.class, args);
}
}
我们可以在user模块引入common公共模块。
4.0.0
org.example
myshop
1.0-SNAPSHOT
myshop-user
8
8
UTF-8
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
8.0.31
org.springframework.boot
spring-boot-starter-data-jpa
org.example
myshop-common
1.0-SNAPSHOT
common模块开发如下:
我们在common模块中创建一个统一结果返回的实体类CommonResult:
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
/**
* @author qx
* @date 2023/06/21
* @desc 统一结果返回
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult implements Serializable {
private Integer code;
private String message;
private T data;
public static CommonResult success() {
return CommonResult.builder().code(200).message("请求成功").build();
}
public static CommonResult success(Object data) {
return CommonResult.builder().code(200).message("请求成功").data(data).build();
}
public static CommonResult fail(String message) {
return CommonResult.builder().code(500).message(message).build();
}
}
4.0.0
org.example
myshop
1.0-SNAPSHOT
myshop-user
8
8
UTF-8
org.springframework.boot
spring-boot-starter-web
mysql
mysql-connector-java
8.0.31
org.springframework.boot
spring-boot-starter-data-jpa
org.hibernate.validator
hibernate-validator
org.example
myshop-common
1.0-SNAPSHOT
2.使用JPA注解创建用户实体
import lombok.Data;
import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
import org.hibernate.annotations.UpdateTimestamp;
import javax.persistence.*;
import javax.validation.constraints.NotBlank;
import java.util.Date;
/**
* @author qx
* @date 2023/06/21
* @desc 用户实体
*/
@Entity
@Table(name = "t_user")
@Data
@DynamicInsert
@DynamicUpdate
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
/**
* 用户名
*/
@NotBlank(message = "用户名不能为空")
private String userName;
/**
* 用户性别:0:女 1:男 2:未知
*/
private Integer sex;
/**
* 手机号
*/
@NotBlank(message = "手机号不能为空")
private String phone;
/**
* 邮箱
*/
private String email;
/**
* 地址
*/
private String address;
/**
* 积分
*/
@Column(columnDefinition = "int default 0 comment '积分'")
private Integer integral;
/**
* 等级
*/
@Column(columnDefinition = "int default 1 comment '等级'")
private Integer level;
/**
* 创建时间
*/
@CreationTimestamp
private Date createTime;
/**
* 修改时间
*/
@UpdateTimestamp
private Date updateTime;
/**
* 状态 1:正常 2:禁用
*/
@Column(columnDefinition = "int default 1 comment '状态'")
private Integer status;
}
package com.example.myshop.repository;
import com.example.myshop.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
public interface UserRepository extends JpaRepository {
}
package com.example.myshop.service;
import com.example.myshop.entity.User;
import com.example.myshop.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
/**
* @author qx
* @date 2023/06/21
* @desc 用户服务层
*/
@Service
public class UserService {
@Autowired
private UserRepository userRepository;
public void saveUser(User user) {
userRepository.save(user);
}
public User getUserById(Long id) {
return userRepository.findById(id).orElse(null);
}
}
package com.example.myshop.controller;
import com.example.myshop.CommonResult;
import com.example.myshop.entity.User;
import com.example.myshop.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* @author qx
* @date 2023/06/21
* @desc 用户控制层
*/
@RestController
@RequestMapping("/user")
public class UserController {
@Autowired
private UserService userService;
/**
* 添加用户
*/
@PostMapping("/add")
public CommonResult addUser(@RequestBody User user) {
userService.saveUser(user);
return CommonResult.success();
}
/**
* 根据id获取用户信息
*
* @param id 用户ID
* @return 用户信息
*/
@GetMapping("/{id}")
public CommonResult getUserById(@PathVariable Long id) {
return CommonResult.success(userService.getUserById(id));
}
}
运行启动类,启动项目。
我们在数据库中发现了JPA自动创建的数据表
我们使用Postman进行测试
我们刷新下数据表发现了我们新增的数据
我们再调用用户查询的接口,也返回了我们的数据。
到这里我们基本完成了用户子模块的开发,其他功能可以自己去实现。