Springboot 之 JPA對Mysql資料庫的增刪改查
本文章來自【知識林】
JPA對資料庫的操作又進行了更為完善的封裝,其實現的功能基本能滿足我們90%的需求。本文章只簡單實現使用者管理的功能以展示JPA對資料庫的相關操作,使用單元測試的方式實現,如果對Springboot的單元測試不清楚的可以參考我的文章《Springboot 之 單元測試》,下面就以我個人對JPA的認識做一些總結:
- Maven依賴包及自動建表
- 使用者實體類
@Entity
@Table(name = "t_user")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@Column(name = "user_name")
private String userName;
private String password;
@Column(name = "nick_name")
private String nickName;
private String email;
……省去Get和Set方法……
}
- 使用者業務介面
/**
* Created by 鍾述林 [email protected] on 2016/10/19 11:41.
*/
public interface IUserService extends JpaRepository<User, Integer> {
}
注意:要使介面擁有Jpa的功能,只需要將此介面繼承JpaRepository
介面即可,JpaRespsitory
介面有兩個泛型,第一個:指具體的實體物件User
,第二個:指實體物件的主鍵ID的型別Integer
。
- 新增資料
@SpringBootTest
@RunWith(SpringRunner.class)
@ActiveProfiles("dev")
public class UserTest {
@Autowired
private IUserService userService;
@Test
public void testAdd() {
User user = new User();
user.setEmail("[email protected]");
user.setNickName("知識林");
user.setPassword("123456");
user.setUserName("zslin");
userService.save(user);
}
}
注意: 這裡的save
方法是從JpaRepository
中繼承而來,是屬於Jpa封裝方法之一。
- 獲取資料
@Test
public void testFind() {
User user = userService.findOne(1);
System.out.println("nickName : "+user.getNickName()+", email : "+user.getEmail());
}
注意: 這裡的findOne
方法也是從JpaRepository
中繼承而來。由於在testAdd
方法中添加了一條資料,主鍵Id為1,所以在這裡可以直接在findOne
中傳1
獲取出相應資料,findOne
的引數是物件Id。
執行testFind
方法後將得到:nickName : 知識林, email : [email protected]
。
- 修改資料
@Test
public void testUpdate() {
User user = userService.findOne(1);
user.setNickName("鍾述林");
userService.save(user);
System.out.println("nickName : "+user.getNickName()+", email : "+user.getEmail());
}
注意: 這裡的修改資料也是使用save
方法,也就是說新增和修改都使用save
方法,執行testUpdate
方法後將得到:nickName : 鍾述林, email : [email protected]
表示修改成功。
- 刪除資料
@Test
public void testDelete() {
userService.delete(1);
}
注意:這裡的delete
也是繼承於JpaRepository
。引數可以傳一個Id值,也可以傳一個數據物件。deleteAll()
方法也可以刪除,沒有引數,是屬於清空資料表,一般不會使用。
- 列表資料
為方便測試列表,先批量新增幾條資料到資料表中:
@Test
public void testAddBatch() {
for(Integer i=0; i < 5; i++) {
User user = new User();
user.setNickName("暱稱"+i);
user.setUserName("user"+i);
user.setPassword("pwd"+i);
user.setEmail("email"+i+"@domain.com");
userService.save(user);
}
}
獲取所有資料:
@Test
public void testFindAll() {
List<User> list = userService.findAll();
for(User u : list) {
System.out.println("nickName : "+u.getNickName()+", email : "+u.getEmail());
}
}
執行testFindAll()
方法可以得到:
nickName : 暱稱0, email : email0@domain.com
nickName : 暱稱1, email : email1@domain.com
nickName : 暱稱2, email : email2@domain.com
nickName : 暱稱3, email : email3@domain.com
nickName : 暱稱4, email : email4@domain.com
以上是比較常用且比較簡單的資料庫操作方法,這些方法都是繼承於JpaRepository
介面。
這是屬於基礎篇,下一篇將介紹使用自定義方式對資料庫進行修改、刪除和查詢。
本文章來自【知識林】