創建基礎模塊
上一篇搭建了父工程和依賴座標的鎖定, 接下來就開始創建基礎模塊
簡述:
maven:3.6.2
數據庫:MySQL 5.1.6
持久層: SpingData Jpa (創建了表名後,啓動項目可以根據實體創建對應的表,某些時候這個還是比較方便的。但國內大部分企業偏愛Mybatis,根據自己的需要選擇即可),在網上看了一個例子感覺挺好,這裏也借鑑一下。
創建基礎模塊
1: 創建shop-common 公共模塊
在父工程上右擊鼠標 New -> Module
shop-common 的 pom依賴座標
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-alibaba</artifactId>
<groupId>com.java</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-common</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.6</version>
</dependency>
</dependencies>
</project>
/**
* 用户實體類
*/
@Entity(name = "shop_user") //實體與表映射
/*
* lombok 的使用
* 1> pom.xml引入lombok的依賴;
* 2> idea中安裝lombok插件;
* 説明: lombok是阿三哥他們家開發的
*/
@Data //源於lombok, 編譯時自動創建getter/setter方法
@NoArgsConstructor //補充一下, 源於lombok, 這個是無參構造方法
@AllArgsConstructor //補充一下,源於lombok,這個是全參構造方法
public class User {
@Id //表示主鍵
@GeneratedValue(strategy = GenerationType.IDENTITY) //逐漸增長策略
private Long uid;//主鍵
private String username;//用户名
private String password;//密碼
private String telephone;//手機號
}
/**
* 商品實體類
*/
@Entity(name = "shop_product")
/*
* lombok 的使用
* 1> pom.xml引入lombok的依賴;
* 2> idea中安裝lombok插件;
* 説明: lombok是阿三哥他們家開發的
*/
@Data //源於lombok, 編譯時自動創建getter/setter方法
@NoArgsConstructor //補充一下, 源於lombok, 這個是無參構造方法
@AllArgsConstructor //補充一下,源於lombok,這個是全參構造方法
public class Product {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer pid;//主鍵
private String pname;//商品名稱
private Double pprice;//商品價格
private Integer stock;//庫存
}
/**
* 訂單實體類
*/
@Entity(name = "shop_order")
/*
* lombok 的使用
* 1> pom.xml引入lombok的依賴;
* 2> idea中安裝lombok插件;
* 説明: lombok是阿三哥他們家開發的
*/
@Data //源於lombok, 編譯時自動創建getter/setter方法
@NoArgsConstructor //補充一下, 源於lombok, 這個是無參構造方法
@AllArgsConstructor //補充一下,源於lombok,這個是全參構造方法
public class Order {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long oid;//訂單id
private Long uid;//用户id
private String username;//用户名
private Long pid;//商品id
private String pname;//商品名稱
private Double pprice;//商品單價
private Integer number;//購買數量
}
2: 創建shop-user 用户微服
1>創建用户微服務,步驟跟創建shop-common模塊一樣, 只是名字不一樣,用户微服務的名稱是shop-user
2>pom.xml文件依賴
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springcloud-alibaba</artifactId>
<groupId>com.java</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>shop-user</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- 引入公共模塊 -->
<dependency>
<groupId>com.java</groupId>
<artifactId>shop-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- 因為是用户微服務,這裏簡單提一下, 所以要引入web依賴 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2>按下面截圖創建包和類
3>主類內容
package com.goblin;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class UserApplication {
public static void main(String[] args) {
SpringApplication.run(UserApplication.class, args);
}
}
4>持久層UserDao接口
package com.goblin.dao;
import com.goblin.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
//JpaRepository是一個泛型接口, 前面的表示用户實體, 後面的是實體主鍵ID屬性
public interface UserDao extends JpaRepository<User, Long> {
}
5>業務接口
package com.goblin.service;
import com.goblin.entity.User;
/**
* 用户業務接口
*/
public interface UserService {
/**
* 通過用户id查詢用户信息
*
* @param id
* @return
*/
User getByUid(Long id);
}
6>業務實現類
package com.goblin.service.impl;
import com.goblin.dao.UserDao;
import com.goblin.entity.User;
import com.goblin.service.UserService;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
/**
* 用户業務實現類
*/
@Service
public class UserServiceImpl implements UserService {
@Resource
private UserDao userDao;
/**
* 通過用户id查詢用户信息
*
* @param id
* @return
*/
@Override
public User getByUid(Long id) {
return userDao.findById(id).get();
}
}
7>前端控制器
package com.goblin.controller;
import com.goblin.entity.User;
import com.goblin.service.UserService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
/**
* 用户控制器
*/
@RestController //它= @Controller + @ResponseBody, 點開它也能看到這兩個註解在它裏面哦
//@RequestMapping("/user") //這裏可以加一層映射, 也可以不加, 具體看實戰需要情況
public class UserController {
@Resource
private UserService userService;
/**
* 通過用户id查詢用户信息
*
* @param uid
* @return
*/
@GetMapping("/user/{uid}")//這種是rest風格調用接口的方式哈,參數在路徑中,通過@PathVariable獲取
public User getByUid(@PathVariable Long uid) {
return userService.getByUid(uid);
}
}
8>配置application.yml
server:
port: 8071
spring:
application:
name: service-user
datasource:
driver-class-name: com.mysql.jdbc.Driver
# 這裏提一句, 下面的 /// 等同於 localhost:3306 or 127.0.0.1:3306, 如果是其他IP和端口號的話,這裏需要寫全
# jdbc:mysql://ip:port/dbName?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
url: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=true
username: root
password: root
jpa:
properties:
hibernate:
hbm2ddl:
auto: update
dialect: org.hibernate.dialect.MySQL5InnoDBDialect
9>數據庫數據初始化用户信息的sql腳本如下:
INSERT INTO `shop_user` (`uid`, `password`, `telephone`, `username`) VALUES (1, '123456', '19276789875', '張三');
INSERT INTO `shop_user` (`uid`, `password`, `telephone`, `username`) VALUES (2, '123456', '19276789875', '李四');
INSERT INTO `shop_user` (`uid`, `password`, `telephone`, `username`) VALUES (3, '123456', '19276789875', '王五');
10> 運行主類UserApplication.java中的main方法,輸入路徑和參數: http://localhost:8071/user/1
3: 創建shop-product產品微服務
按照shop-user的創建shop-product微服務, 注意的是有2個地方, 在application.yml中端口和應用名稱不一樣, 其他都一樣, 而在product產品微服務中, 端口是8081, 應用名稱service-product
數據庫數據初始化產品信息的sql腳本如下:
INSERT INTO shop_product VALUE(NULL,'小米','1000','5000');
INSERT INTO shop_product VALUE(NULL,'華為','2000','5000');
INSERT INTO shop_product VALUE(NULL,'蘋果','3000','5000');
INSERT INTO shop_product VALUE(NULL,'OPPO','4000','5000');
4: 創建shop-order訂單
按照shop-user的創建shop-product微服務, 注意的是有2個地方, 在application.yml中端口和應用名稱不一樣, 其他都一樣, 而在product產品微服務中, 端口是8091, 應用名稱service-order
總結
本文介紹瞭如何創建基礎模塊, 用户模塊, 產品模塊和訂單模塊, 這些基本上全是創建SpringBoot項目相關的東西。