導航
[封裝01-設計模式] 設計原則 和 工廠模式(簡單抽象方法) 適配器模式 裝飾器模式
[封裝02-設計模式] 命令模式 享元模式 組合模式 代理模式
[React 從零實踐01-后臺] 代碼分割
[React 從零實踐02-后臺] 權限控制
[React 從零實踐03-后臺] 自定義hooks
[React 從零實踐04-后臺] docker-compose 部署react+egg+nginx+mysql
[React 從零實踐05-后臺] Gitlab-CI使用Docker自動化部署
[源碼-webpack01-前置知識] AST抽象語法樹
[源碼-webpack02-前置知識] Tapable
[源碼-webpack03] 手寫webpack - compiler簡單編譯流程
[源碼] Redux React-Redux01
[源碼] axios
[源碼] vuex
[源碼-vue01] data響應式 和 初始化渲染
[源碼-vue02] computed 響應式 - 初始化胚嘲,訪問颂跨,更新過程
[源碼-vue03] watch 偵聽屬性 - 初始化和更新
[源碼-vue04] Vue.set 和 vm.$set
[源碼-vue05] Vue.extend
[源碼-vue06] Vue.nextTick 和 vm.$nextTick
[部署01] Nginx
[部署02] Docker 部署vue項目
[部署03] gitlab-CI
[深入01] 執(zhí)行上下文
[深入02] 原型鏈
[深入03] 繼承
[深入04] 事件循環(huán)
[深入05] 柯里化 偏函數(shù) 函數(shù)記憶
[深入06] 隱式轉(zhuǎn)換 和 運算符
[深入07] 瀏覽器緩存機制(http緩存機制)
[深入08] 前端安全
[深入09] 深淺拷貝
[深入10] Debounce Throttle
[深入11] 前端路由
[深入12] 前端模塊化
[深入13] 觀察者模式 發(fā)布訂閱模式 雙向數(shù)據(jù)綁定
[深入14] canvas
[深入15] webSocket
[深入16] webpack
[深入17] http 和 https
[深入18] CSS-interview
[深入19] 手寫Promise
[深入20] 手寫函數(shù)
[深入21] 數(shù)據(jù)結構和算法 - 二分查找和排序
[深入22] js和v8垃圾回收機制
[深入23] JS設計模式 - 代理败去,策略碑诉,單例
[前端學java01-SpringBoot實戰(zhàn)] 環(huán)境配置和HelloWorld服務
[前端學java02-SpringBoot實戰(zhàn)] mybatis + mysql 實現(xiàn)歌曲增刪改查
[前端學java03-SpringBoot實戰(zhàn)] lombok烦绳,日志态蒂,部署
[前端學java04-SpringBoot實戰(zhàn)] 靜態(tài)資源 + 攔截器 + 前后端文件上傳
[前端學java05-SpringBoot實戰(zhàn)] 常用注解 + redis實現(xiàn)統(tǒng)計功能
[前端學java06-SpringBoot實戰(zhàn)] 注入 + Swagger2 3.0 + 單元測試JUnit5
[前端學java07-SpringBoot實戰(zhàn)] IOC掃描器 + 事務 + Jackson
[前端學java08-SpringBoot實戰(zhàn)總結1-7] 階段性總結
[前端學java09-SpringBoot實戰(zhàn)] 多模塊配置 + Mybatis-plus + 單多模塊打包部署
(一) 前置知識
(1) 一些單詞
batch 批 分批
Stalled 停滯
pratices 實踐骡苞,通常的做法 // best practices 最佳實踐
key map 鍵盤映射
artifact 人工制品
look up 查找 查閱 // lookup parent from repository
property 屬性
annotation 注解 // java中的注解
surefire 萬全 可靠的
verify 驗證 校驗
(2) mac版 idea快捷鍵記錄
1. 全局查找
command + shift + r
2. 調(diào)出actions
command + 3
3. 設置
command + ,
4. 文件間的跳轉(zhuǎn)
command + e
5. 信息提示
command + 1
6. 跳轉(zhuǎn)到別的類
control + 鼠標左鍵
7. 復制文件的引用路徑
鼠標右鍵 - copy path - copy reference
8. 左右移動代碼塊
- 左移動 shift + tab
- 右移動 tab
9. 查找文件
- ctrl + h
1. command + k 查找下一個
2. ctrl + h 查找文件
3. 設置快捷鍵 ( command + , ) => ( keymap ) => ( 搜索find ) => ( 添加查找快捷鍵 ) => ( command + f )
(3) pom.xml配置項
- 項目的打包類型
-
packaging
- pom jar war
- 默認打包類型packaging=jar巷嚣,即默認是打成jar包
-
packaging
- pom模型版本
- modelVersion
- 項目信息
- 項目唯一標識
groupId
喘先,包括幾個字段,比如com.wu7廷粒,com是域窘拯,wu7是域名 - 項目名或者模塊名
artifactId
- 項目版本
version
- 項目名稱 name
- 打包方式(項目的打包類型) packaging pom jar war
- 一般來說,( 包名根目錄 ) = ( groupId ) + ( artifactId )坝茎,不允許重復
packageName = groupId + artifactId
- 項目唯一標識
- 父級項目 parent
- 也包括 groupId涤姊, artifactId,version嗤放,relativePath
-
relativePath
- relativePath用來指定查找該父項目 pom.xml 的相對路徑
- 默認:
../pom.xml
- 優(yōu)先級:
relativePath > 本地倉庫 > 遠程倉庫
- 1.設定一個空值思喊,將始終從倉庫中獲取,而不從本地路徑獲取次酌,
如 <relativePath/>
- 2.沒有relativePath標簽表示從
../pom.xml
來查找
- 屬性信息 properties
- java的版本:java.version
- 編譯字符編碼 project.build.sourceEncoding
- 輸出字符編碼 project.reporting.outputEncoding
-
打包時跳過test
<skipTests>true</skipTests>
- ================================= 依賴關系 dependencies
- 編譯 build
- 插件集 plugins
- 插件 plugin
-
================================= 模塊 modules
- 在父模塊中用來表示包含的 ( 子模塊 )
(4) jackson
jackson fastjson gson
-
安裝
- 一般在web開發(fā)中使用了
spring-boot-starter-web
啟動器的話恨课,已經(jīng)包含了jackson
- 如果沒有使用上邊的starter,則需要自己安裝
spring-boot-starter-json
依賴<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-json</artifactId> </dependency>
- 一般在web開發(fā)中使用了
-
jackson常用注解
- @JsonFormat
- @JsonPropertyOrder
- @JsonProperty
- @JsonInclude
- @JsonIgnore
-
@JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss", timezone = "GMT+8")
- 格式化時間岳服,用于類的屬性 -
@JsonPropertyOrder(value = {"singer", "album"})
- 調(diào)整屬性的順序剂公,用于類 -
@JsonProperty("aaa")
- 修改返回數(shù)據(jù)的屬性名稱,修改為aaa -
@JsonInclude(JsonInclude.Include.NON_NULL)
- 包含則不返回該屬性吊宋,包含null則不返回該屬性 -
@JsonIgnore
- 返回的屬性不包括該字段
-
@JsonFormat - 格式化時間
- ( 全局配置 ) 和 ( bean中單獨配置@JsonFormat() )
- 日期格式化配置優(yōu)先級 ( bean對象中屬性 @JsonFormat 注解 > 全局配置)
@JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss", timezone = "GMT+8")
1. 全局配置
- 在application.yml中全局配置jackson
spring:
jackson:
date-format: YYYY-MM-dd HH:mm:ss # 全局時間格式化
time-zone: GMT+8 # 時區(qū)
2. 局部配置
- 實體中使用 @JsonFormat()
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName("music")
public class MpMusicBean {
Integer id;
String name;
String album;
String singer;
@TableField(value = "startTime") // value是數(shù)據(jù)庫字段名
@JsonFormat(pattern = "YYYY-MM-dd") // jackson格式化時間纲辽,優(yōu)先級 ( bean中設置 > 全局配置 )
Timestamp startTime;
@TableField(value = "endTime") // value是數(shù)據(jù)庫字段名
@JsonFormat(pattern = "YYYY-MM-dd HH:mm:ss") // jackson格式化時間,優(yōu)先級 ( bean中設置 > 全局配置 )
Timestamp endTime;
}
- @JsonPropertyOrder - 調(diào)整屬性順序
@JsonPropertyOrder(value = {"singer", "album"}) // jackson調(diào)整屬性順序璃搜,singer在album前面
public class MpMusicBean {
Integer id;
String name;
String album;
String singer;
}
結果:
未使用前
{
"album": "七里香112233",
"singer": "周杰倫112233",
},
使用后
{
"singer": "周杰倫112233", //----------------- 1
"album": "七里香112233", // ---------------- 2
},
- @JsonProperty
@JsonProperty("start") // jackson修改返回數(shù)據(jù)的屬性名
@TableField(value = "startTime") // value是數(shù)據(jù)庫字段名
@JsonFormat(pattern = "YYYY-MM-dd") // jackson格式化時間拖吼,優(yōu)先級 ( bean中設置 > 全局配置 )
// 這三個注解的最終效果:將數(shù)據(jù)庫中的startTime列的數(shù)據(jù)key對應實體的startTime,然后將返回值修改成star腺劣,并格式化時間
Timestamp startTime;
- @JsonInclude
@JsonInclude(JsonInclude.Include.NON_NULL) // jackson,包含null因块,則不返回該字段
String singer;
- @JsonIgnore
@JsonIgnore // jackson返回值中不包含該屬性橘原,忽略該屬性
String name;
(5) SimpleDateFormat,sring,Timestamp趾断,datetime 幾個的關系
-
Timestamp
- (
java中的Timestamp
) 相當于 (數(shù)據(jù)庫中的datetime
) -
Timestamp.valueOf(String v)
將string轉(zhuǎn)成Timestamp
- (
-
SimpleDateFormat
- 主要用來格式化時間
-
new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")
生成實例拒名,然后再調(diào)用實例上的方法
@Test
void testDate() {
Date date = new Date(); // 獲取時間實例
SimpleDateFormat dateFormat = new SimpleDateFormat("YYYY-MM-dd HH:mm:ss"); // 生成實例
String format = dateFormat.format(date); // 調(diào)用實例實例上的format()方法,返回一個字符串
log.info("SimpleDateFormat: {}", format);
}
(二) 多模塊配置 module
- 我們將一個項目分成以下模塊
-
父模塊
- 7-react-admin-java-pro
-
子模塊
- mapper
- service
- controller
- common
-
父模塊
- 多模塊配置 - 測試項目github倉庫地址
(2.1) 多模塊的優(yōu)點
- 每個模塊具有 ( 高內(nèi)聚 ) 性芋酌,方便校驗增显,調(diào)試,測試
(2.2) 模塊的依賴關系
common 一般不依賴任何模塊脐帝,除非common封裝的方法涉及到其他模塊
mapper => 依賴 common
service => 依賴 common mapper
controller => 依賴 common service mapper
注意點:
1. 需要刪除 ( 父模塊的src ) 文件夾同云,因為父模塊不需要寫代碼
2. controller 模塊是需要建 ( srping-boot ) 項目
3. 除了controller模塊,其他模塊都是建 ( maven ) 項目
(2.3) idea 做相關設置
- 字符編碼設置:
ctrl + ,
=>File Encodings
=>utf-8
- 注解生效激活:
compiler
=>annotation processors
=>Enable annotation processing
(2.4) 多模塊配置具體過程
(1) 父模塊
1.1 首先新建父模塊 ----------------------------------- 【 創(chuàng)建的類型為springboot項目 】
1.2 修改父模塊的 pom.xml堵腹,將 ( packaging ) 類型從jar改為pom炸站,即打包類型為pom
1.3 dependences 交給父模塊來打理
1.4 注意區(qū)分 ( dependencies ) 和 ( dependencyManagenment )
- dependencyManagenment => dependencies => dependency
- dependencyManagenment 只是聲明依賴,并不實際導入package疚顷,子模塊需要顯示的引入
1.5 創(chuàng)建好子模塊后旱易,父項目的pom.xml中會自動生成 ( modules ) 標簽,并顯示所有子模塊
(2) 子模塊
2.1 創(chuàng)建module - mapper service controller ---------- 【 創(chuàng)建類型事maven項目 】
(3) 模塊的依賴關系
common 一般不依賴任何模塊腿堤,除非common封裝的方法涉及到其他模塊
mapper => 依賴 common
service => 依賴 common mapper
controller => 依賴 common service mapper
(4) 具體配置
4.1在子模塊中的pom.xml中配置好模塊的依賴關系即可
4.2 所有模塊的 groupId 都是一樣的
4.3 controller
<dependencies>
<!-- controller 依賴 service -->
<dependency>
<groupId>com.woow.wu7</groupId>
<artifactId>service</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
</dependency>
</dependencies>
(三) Mybatis-plus
(1) Mybatis-plus ( Mapper
) 的基本使用
(1.1) 安裝idea插件 - MyBatisX
-
command + ,
選擇plugins
阀坏,搜索MyBatisX
安裝 - 好處就是點擊圖標能直接跳轉(zhuǎn)mapper和xml配置文件
(1.2) 添加 maven 依賴
- 注意:
Mybatis-plus 包中已經(jīng)包含了 mybatis 和 jdbc 的start包了,所以不需要再安裝這兩個包
- 包含 mybatis-spring-boot-starter
- 包含 spring-boot-starter-data-jdbc
- 在
application.yml
文件中通過mybatis-plus: xxx
對其進行定制配置-
mapperLocations: 自動配置好了
- 默認值是:
classpath*:/mapper/**/*.xml
笆檀,表示在resources/mapper
中 - 所以sql映射文件忌堂,建議放在
resrouces/mapper
文件中
- 默認值是:
- SqlSessionFactory:自動在容器中配置好了,底層是容器中的默認數(shù)據(jù)源
- SqlSessionTemplate:自動在容器中配置好了
-
@Mapper 標注也會被自動掃描
- 建議使用@MapperScan進行指定掃描的包误债,進行批量掃描浸船,就不用一個個@Mapper了
-
mapperLocations: 自動配置好了
<!-- mybatis plus包含了 ( mybatis-spring-boot-starter ) 和 ( spring-boot-starter-data-jdbc ) -->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.2</version>
</dependency>
(1.3) 配置 @MapperScan
- 指定掃描的mapper包,就不用在一個個@Mapper了
- @MapperScan注解的 ( 參數(shù) ) 是 ( mappe文件夾路徑引用 )
@SpringBootApplication
@MapperScan("com.example.demo.mapper") // 指定mapper的目錄寝蹈,將自動掃描李命,則不用在每個類上都加@Mapper
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
(1.4) 準備一個bean對象即user類 - MybatisPlusUserBean
- 注意注意注意:(
實體類名
) 必須和 (數(shù)據(jù)庫表名
) 保持一致,否則需要指定數(shù)據(jù)庫名稱 - 這里實體名叫
MybatisPlusUserBean
箫老,那么數(shù)據(jù)庫名就要叫mybatis_plus_user_bean
- @TableName 指定數(shù)據(jù)庫表名封字,默認情況下mp會將實體名首字母小寫,用_連接耍鬓,作為表名
@Data
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@Component
@TableName("mybatis_plus_user_bean")
// @TableName
// 指定數(shù)據(jù)庫表名阔籽,默認情況下mp會將實體名首字母小寫,用_連接牲蜀,作為表名
// @TableName 是mybatis-plus中的注解
public class MybatisPlusUserBean {
private Long id;
private String name;
private Integer age;
private String email;
@TableField(exist = false) // mybatis-plus的注解笆制,表示該屬性在數(shù)據(jù)庫中不存在
private String other;
}
(1.5) 編寫一個mapper - 繼承BaseMapper
- 繼承
extends BaseMapper<bean對象>
就具有crud的能力,不用在手寫crud了 - bean對象的命名需要和數(shù)據(jù)庫的表一致
- 比如實體名叫
MybatisPlusUserBean
涣达,那么數(shù)據(jù)庫名就要叫mybatis_plus_user_bean
- 可以不用再寫 @Mapper在辆,因為配置了 @MapperScan
@Mapper
public interface MybatisPlusUserMapper extends BaseMapper<MybatisPlusUserBean> {
}
(1.6) 準備好數(shù)據(jù)庫和user表
- 1.注意注意注意:(
實體類名
) 必須和 (數(shù)據(jù)庫表名
) 保持一致 - 2.也可以通過 @TableName 指定數(shù)據(jù)庫表名证薇,默認情況下mp會將實體名首字母小寫,用_連接匆篓,作為表名
(1.7) 測試是否已經(jīng)配置成功
@SpringBootTest
@Slf4j
public class MybatisPlusUserTest {
@Autowired
MybatisPlusUserMapper mybatisPlusUserMapper;
// mapper相關測試
// 查詢
@Test
void getUser() {
MybatisPlusUserBean user = mybatisPlusUserMapper.selectById(1);
log.info("用戶信息{}", user);
}
// mapper相關測試
// 添加
@Test
void addUser() {
MybatisPlusUserBean user = new MybatisPlusUserBean();
long a = 11;
MybatisPlusUserBean user2 = user.builder()
.name("周杰倫2")
.age(200)
.email("woow.wu7@gmail.com")
.id(a)
.build();
int status = mybatisPlusUserMapper.insert(user2);
log.info("Mybatis-plus插入insert()方法的返回值{}", status);
}
// mapper相關測試
// 刪除
@Test
void deleteUser() {
int id = 11;
int status = mybatisPlusUserMapper.deleteById(id);
}
// mapper相關測試
// 更新
@Test
void editUser() {
MybatisPlusUserBean user = new MybatisPlusUserBean();
long userId = 11;
MybatisPlusUserBean user2 = user.builder()
.name("周杰倫13000")
.age(3000)
.email("woow.wu3000@gmail.com")
.id(userId)
.build();
int status = mybatisPlusUserMapper.updateById(user2);
}
}
-
mybatis-plus 的 mapper 查詢 selectById
-
mybatis-plus 的 mapper 插入 insert
-
mybatisx插件如下
(2) Mybatis-plus ( Service
) 的基本使用
(2.1) 以上 1 步浑度,測試了extends BaseMapper
,繼續(xù)測試 extends IService
- (
mapper
) 是除了繼承mybatis-plus的 (BaseMaper
) -
Interface接口 - (
interface
) 也可以繼承mybatis-plus的 (IService
) -
Implements實現(xiàn)類 - (
implements service
) 繼承 (ServiceImpl<mapper bean>
)
(2.2) 編寫一個 Interface Service
MpIService - 是一個interface
-------
public interface MpIService extends IService<MybatisPlusUserBean> {
}
(2.3) 編寫一個實現(xiàn)類
MpIServiceImpl - 是一個實現(xiàn)類
------
@Service
public class MpIServiceImpl extends ServiceImpl<MybatisPlusUserMapper, MybatisPlusUserBean> implements MpIService {
}
-------
// extends ServiceImpl<MybatisPlusUserMapper, MybatisPlusUserBean>
// - MybatisPlusUserMapper 是上面繼承了 BaseMapper 的 mapper
// MpIServiceImpl 除了繼承 ServiceImpl 外鸦概,還需要實現(xiàn)我們自己定義的 MpIService
// - MpIService 需要繼承 IS而ver
(2.4) 測試
@SpringBootTest
@Slf4j
public class MpIServiceTest {
@Autowired
MpIService mpIService;
@Test
void mpIServiceTest() {
List<MybatisPlusUserBean> data = mpIService.list();
log.info("{}", data);
}
}
(3) Mybatis-plus 開啟日志
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 開啟mybatis-plus日志
(四) springboot 單模塊項目打包和部署
(4.1) package 和 install 的區(qū)別
-
package
是簡單的打包 -
install
除了打包箩张,還會把這個打包好的包安裝到maven倉庫中 -
注意:如果 (
其他項目依賴a項目
),則應該使用 (install
) 來進行打包a項目
打包
(4.2.1) 單模塊打包過程
- 如果springboot項目中有jsp頁面窗市,就只能打成war包先慷,沒有則可以達成jar包
- 步驟 ( idea方式 )
- 1.添加 srping boot 的打包插件
spring-boot-maven-plugin
<!-- maven插件 --> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins>
- 2.在idea中關閉項目,清楚緩存谨设,然后選擇
Lifecycle
=>clean compile package
熟掂,package打包說明沒有依賴關系,不會打包后不會放在maven倉庫中 - 3.打完包扎拣,會生成
target
文件夾赴肚,里面就會有.jar
包
- 1.添加 srping boot 的打包插件
- 步驟( 使用命令的方式打包,不用idea來操作 )
1. mvn -Dmaven.test.skip -U clean package
-D 是指定參數(shù)的意思
-D maven.test.skip 表示跳過test檢查
-U 表示強制去遠程更新插件或依賴
clean package 表示清楚target然后再打包
這個命令能執(zhí)行的前提是需要插件:Spring-boot-maven-plugin
(4.2.2) 多模塊打包過程
(1) 將父模塊的pom.xml文件中的build標簽的所有內(nèi)容復制到controller模塊二蓝,因為controller其實已經(jīng)變成了主模塊
(2) 想build標簽中添加 configuration => mainClass => application主類的引用路徑
(3) 最終的controller模塊中的build標簽內(nèi)容如下
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<mainClass>com.woow.wu7.Application</mainClass>
</configuration>
</plugin>
</plugins>
</build>
(4) 然后在利用idea或者mvn命令來打包即可
(4.3) 如果打包過程報錯:提示test沒通過誉券,則可以設置忽略測試
- 有兩種方式跳過test進行打包
- 1.在
pom.xml
中做如下配置
<properties> <skipTests>true</skipTests> </properties>
- 2.添加plugin
maven-surefire-plugin
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-surefire-plugin</artifactId> <!-- 打包時跳過檢查 --> <!-- surefire 是萬全,可靠的意思 --> <configuration> <skip>true</skip> </configuration> </plugin>
- 1.在
部署jar包
(4.4) 使用命令運行 jar 包
結尾是否有 &
---
(1) java -jar 7-react-admin-java-0.0.1-SNAPSHOT.jar
// ssh通過 ( ctrl+c ) 則可以終止java服務
// 缺點:當退出命令行工具后刊愚,java服務將不在運行
(2) java -jar 7-react-admin-java-0.0.1-SNAPSHOT.jar &
// 1. 在尾部加上 ( & ) 表示該命令在后臺執(zhí)行踊跟,ssh通過 ( ctrl+c ) 則無法終止java服務
// 2. 只有 ( 關閉命令窗口 ) 才會終止java程序
指定環(huán)境
---
(3) java -jar -Dspring.profiles.active=production target/7-react-admin-java-0.0.1-SNAPSHOT.jar
// -Dspring.profiles.active=production 指定環(huán)境變量是生產(chǎn)環(huán)境
// 則需要在 src/main/resources/application-production.properties 文件來配置生產(chǎn)環(huán)境中的配置
// -D 表示指定參數(shù)
(4.5) 持久化
- nohup 和 & 的區(qū)別
-
不加&
當ctrl+c后就會終止java程序執(zhí)行 -
&
后臺運行,但是 ( 關閉了終端或者ssh窗口 ) 就還是會終止java程序執(zhí)行 -
nohup + &
( 關閉終端或窗口 ) 仍然運行鸥诽,即持久化操作
-
nohup java -jar -Dspring.profiles.active=production target/7-react-admin-java-0.0.1-SNAPSHOT.jar >temp.txt &
(4.6) 查看已部署的java項目的后臺運行進程
-
ps -ef | grep java > a.txt
- 檢查java程序是否存在商玫,可以看到 PID PPID CMD等信息,即可以根據(jù)PID關閉相關進程牡借,比如java
-
ps 將某個進程顯示出來
- -e 顯示所有進程
- -f 全格式
- grep 表示查找
-
ps -ef | grep java > a.txt
表示將查到的java后臺進程結果寫進 a.txt 文件中
(4.7) 殺掉java進程拳昌,終止java程序在后臺運行
kill 進程號
- 進程號可以通過
ps -ef | grep java
來查看 - kill 76619
部署war包
1. 如果是多模塊,并且想用war包的方式進行部署钠龙,那么
2. 首先需要將controller模塊中的pom.xml中的 ( packaging ) 改成 ( war )
3. 然后需要在 ( src/main ) 中新建 ( webapp/WEB-INF/web.xml ) 文件
4. 然后輸入命令打包即可
資料
- mapper相關
- mybatis-plus常用操作 https://www.cnblogs.com/l-y-h/p/12859477.html
- mybatis-plus插入 https://blog.csdn.net/pipizhen_/article/details/111654273
- service相關
- 為什么提供了mapper還要提供service https://blog.csdn.net/pingfandehaozai/article/details/103537250
- 打包