# Java Final project
### 🔗Url shortener
**簡維頡 林宥呈 鄭安程**
---
## 這是一些又臭又長的網址
```txt
https://memeprod.ap-south-1.linodeobjects.com/
user-template/91d2f135374a1477e773987f2b9b8acc.png
```
```txt
https://zh.wikipedia.org/wiki/%E7%B4%AB%E8%97%8D%E9%87%
91%E5%89%9B%E9%B8%9A%E9%B5%A1
```
```txt
https://www.google.com/maps/place/%E5%9C%8B%E7%AB%8B%E6
%88%90%E5%8A%9F%E5%A4%A7%E5%AD%B8%E9%86%AB%E5%AD%B8%E9%
99%A2%E9%99%84%E8%A8%AD%E9%86%AB%E9%99%A2%E9%96%80%E8%A
8%BA%E5%A4%A7%E6%A8%93/@23.0064128,120.2126848,14z/data
=!3m1!5s0x346e76ed976cacb7:0xd22186911e587d2f!4m6!3m5!1
s0x346e76ed9814a7c1:0x433e33c303d2caae!8m2!3d23.0015949
!4d120.2177627!16s%2Fg%2F11bbt9bszj?entry=ttu
```
---

---
https://owen.ccns.io/cFY94ex9
---
## 為啥要自己做??
---
<img
src="https://hackmd.io/_uploads/rJjSzUEHC.png"
alt="The head and torso of a dinosaur skeleton;
it has a large head with long sharp teeth"
width="800"
/>
<small>🔺from https://www.shorturl.at</small>
---

---
### Design Diagram

---
### Class Diagram
<img
src="https://hackmd.io/_uploads/B1LxflUrA.png"
width="800"
/>
---
### 遇到的困難
* 忘記自己跑在container裏面
* ~~沒用過SpringBoot~~
---
### 也來講一點Java好了
---
### 神奇的 Method Name Query Derivation
</br>
```java
@Repository
public interface DatabaseUrlRepository extends JpaRepository<Url, Long> {
Url findByShortUrl(String shortUrl);
Url findByOriginalUrl(String originalUrl);
}
```
##### In 'urlshortener/repository/DatabaseUrlRepository.java'
---
所以也可以出現這種看起來很恐怖的Method Name
```java
findMemberDistinctByNicknameLikeAndCreatorOrderByIdDesc
(String nicknamePattern, String creator);
```
:::spoiler
```sql
SELECT DISTINCT *
FROM Member
WHERE nickname LIKE ?1
AND creator = ?2
ORDER BY id DESC;
```
:::
---
### Live Demo

owen.ccns.io
---
### Our Project Repo
https://github.com/takatsukiaa/java_final_integrated
---
### Thanks!!🧎♀️
{"contributors":"[{\"id\":\"8c3bf2ad-0e99-4d74-99d6-d2a10490757e\",\"add\":2727,\"del\":613}]","title":"Java Final project","description":"https://owen.ccns.io/cFY94ex9"}