自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

值不值 | 三分鐘搞定Jpa?值不值!

開發(fā) 前端
實體類,需要使用 @Entity 注解標注 需要對實體類的屬性進行標注,使用 @Id 標注組件 使用 @Column 標注非主鍵。

[[353188]]

本文轉載自微信公眾號「小明菜市場」,作者+小明菜市場。轉載本文請聯系小明菜市場公眾號。

數據準備

數據庫使用的數據表設計如下

建表語句如下

  1. SET NAMES utf8mb4; 
  2. SET FOREIGN_KEY_CHECKS = 0; 
  3.  
  4. -- ---------------------------- 
  5. -- Table structure for t_user 
  6. -- ---------------------------- 
  7. DROP TABLE IF EXISTS `t_user`; 
  8. CREATE TABLE `t_user` ( 
  9.   `id` int(11) NOT NULL AUTO_INCREMENT, 
  10.   `user_name` varchar(255) DEFAULT NULL
  11.   `passwordvarchar(255) DEFAULT NULL
  12.   `last_login_time` datetime DEFAULT NULL
  13.   `sex` tinyint(4) DEFAULT NULL
  14.   PRIMARY KEY (`id`) 
  15. ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8; 
  16.  
  17. -- ---------------------------- 
  18. -- Records of t_user 
  19. -- ---------------------------- 
  20. BEGIN
  21. INSERT INTO `t_user` VALUES (1, 'json''123''2019-07-27 16:01:21', 1); 
  22. INSERT INTO `t_user` VALUES (2, 'jack jo''123''2019-07-24 16:01:37', 1); 
  23. INSERT INTO `t_user` VALUES (3, 'manistal''123''2019-07-24 16:01:37', 1); 
  24. INSERT INTO `t_user` VALUES (4, 'landengdeng''123''2019-07-24 16:01:37', 1); 
  25. INSERT INTO `t_user` VALUES (5, 'max''123''2019-07-24 16:01:37', 1); 
  26. COMMIT
  27.  
  28. SET FOREIGN_KEY_CHECKS = 1; 

新建 Spring Boot 工程

選擇 File -> New -> Project 選擇 Spring Initializr,選擇 next 填寫包名,項目名,選擇下一步。選擇依賴,Spring web starter 前面打鉤,sql 選項為 Spring Data Jpa,MySql 項目名任意

引入 Pom配置

  1. <dependencies> 
  2.         <dependency> 
  3.             <groupId>org.springframework.boot</groupId> 
  4.             <artifactId>spring-boot-starter-data-jpa</artifactId> 
  5.         </dependency> 
  6.         <dependency> 
  7.             <groupId>org.springframework.boot</groupId> 
  8.             <artifactId>spring-boot-starter-webflux</artifactId> 
  9.         </dependency> 
  10.  
  11.         <dependency> 
  12.             <groupId>mysql</groupId> 
  13.             <artifactId>mysql-connector-java</artifactId> 
  14.             <scope>runtime</scope> 
  15.         </dependency> 
  16.         <dependency> 
  17.             <groupId>org.springframework.boot</groupId> 
  18.             <artifactId>spring-boot-starter-test</artifactId> 
  19.             <scope>test</scope> 
  20.         </dependency> 
  21.         <dependency> 
  22.             <groupId>io.projectreactor</groupId> 
  23.             <artifactId>reactor-test</artifactId> 
  24.             <scope>test</scope> 
  25.         </dependency> 
  26.     </dependencies> 

編寫配置文件 application.yml

  1. server: 
  2.   port: 8086 
  3. spring: 
  4.   #通用的數據源配置 
  5.   datasource: 
  6.     driverClassName: com.mysql.jdbc.Driver 
  7.     url: jdbc:mysql://localhost:3306/demo_test?useSSL=false&useUnicode=true&characterEncoding=utf8 
  8.     username: root 
  9.     password: 123 
  10.   jpa: 
  11.     #這個參數是在建表的時候,將默認的存儲引擎切換為 InnoDB 用的 
  12.     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect 
  13.     #配置在日志中打印出執(zhí)行的 SQL 語句信息。 
  14.     show-sql: true 
  15.     hibernate: 
  16.       #配置指明在程序啟動的時候要刪除并且創(chuàng)建實體類對應的表 
  17.       ddl-auto: create 

編寫示例代碼

新建實體對象 UserDao.java

實體類,需要使用 @Entity 注解標注 需要對實體類的屬性進行標注,使用 @Id 標注組件 使用 @Column 標注非主鍵

  1. /** 
  2.  * 用戶實體類 
  3.  * */ 
  4. @Entity 
  5. @Table(name="t_user"
  6. public class UserDO { 
  7.     @Id 
  8.     private Integer id; 
  9.     @Column(name="user_name",length = 200) 
  10.     private String userName; 
  11.     @Column(name="password",length = 200) 
  12.     private String password
  13.     @Column(name="sex"
  14.     private Integer sex; 
  15.     @Column(name="last_login_time"
  16.     private Date lastLoginTime; 
  17.  
  18.     public Integer getId() { 
  19.         return id; 
  20.     } 
  21.  
  22.     public void setId(Integer id) { 
  23.         this.id = id; 
  24.     } 
  25.  
  26.     public String getUserName() { 
  27.         return userName; 
  28.     } 
  29.  
  30.     public void setUserName(String userName) { 
  31.         this.userName = userName; 
  32.     } 
  33.  
  34.     public String getPassword() { 
  35.         return password
  36.     } 
  37.  
  38.     public void setPassword(String password) { 
  39.         this.password = password
  40.     } 
  41.  
  42.     public Integer getSex() { 
  43.         return sex; 
  44.     } 
  45.  
  46.     public void setSex(Integer sex) { 
  47.         this.sex = sex; 
  48.     } 
  49.  
  50.     public Date getLastLoginTime() { 
  51.         return lastLoginTime; 
  52.     } 
  53.  
  54.     public void setLastLoginTime(Date lastLoginTime) { 
  55.         this.lastLoginTime = lastLoginTime; 
  56.     } 

新建倉庫接口類 UserRepository

倉庫接口類,UserRepository 是我們常用的 Dao 接口,需要注意

  1. 使用 @Repository 注解
  2. 繼承 JPARepository
  3. UserRepository 不需要編寫任何代碼,即可實現增刪查改
  1. @Repository 
  2. public interface UserRepository extends JPARepository<UserDO,Integer> { 
  3.  

編寫測試用例

  1. src/test/java/com/fishpro/jpa/ 

下,新增加

  1. UserRepositoryTest.java 

使用

  1. @RunWith(SpringRunner.class) 

  1. @SpringBootTest 

注解標注類。

  1. @RunWith(SpringRunner.class) 
  2. @SpringBootTest 
  3. public class UserRepositoryTest{ 
  4.  

新增加用戶數據

  1. /** 
  2.      * 初始化一個對象 UserDO 測試Insert過程 
  3.      * */ 
  4.     @Before 
  5.     public void before(){ 
  6.         UserDO userDO=new UserDO(); 
  7.         userDO.setId(1); 
  8.         userDO.setUserName("fishpro"); 
  9.         userDO.setSex(1); 
  10.         userDO.setLastLoginTime(new Date()); 
  11.         userDO.setPassword("passWord"); 
  12.         userRepository.save(userDO); 
  13.     } 

查詢單個用戶數據

  1. @Test 
  2.     public void testFind(){ 
  3.         Optional<UserDO> optionalUserDO=userRepository.findById(1); 
  4.         if(optionalUserDO.isPresent()){ 
  5.             UserDO userDO=optionalUserDO.get(); 
  6.             System.out.println("testFind user"+userDO.getUserName()); 
  7.         } 
  8.  
  9.     } 

查詢多個數據

  1. @Test 
  2.     public void testFindAll(){ 
  3.         List<UserDO> list=userRepository.findAll(); 
  4.         for (UserDO user:list 
  5.              ) { 
  6.             System.out.println("user_name:"+user.getUserName()); 
  7.         } 
  8.     } 

更新數據

  1. @Test 
  2.     public void testUpdate(){ 
  3.         Optional<UserDO> optionalUserDO=userRepository.findById(1); 
  4.         if(optionalUserDO.isPresent()){ 
  5.             UserDO userDO=optionalUserDO.get(); 
  6.             userDO.setUserName("fishpro001"); 
  7.             userRepository.save(userDO); 
  8.             System.out.println("testFind user"+userDO.getUserName()); 
  9.         } 
  10.  
  11.     } 

刪除數據

  1. @After 
  2.     public void after(){ 
  3.         userRepository.deleteById(1); 
  4.         userRepository.deleteById(2); 
  5.         userRepository.deleteById(3); 
  6.     } 

聯合主鍵

例如定義表中userId,roleId 都是主鍵,此時這樣設置

1.定義一個主鍵類

  1. public class UserRoleKey implements Serializable { 
  2.     private Integer userId; 
  3.     private Integer roleId; 

2.定義實體類

  1. @Entity 
  2. @Table(name="t_user_role"
  3. @IdClass(UserRoleKey.class) //注意這里是引入了 定義的符合主鍵類 
  4. public class UserRoleDO { 
  5.     @Id 
  6.     private Integer userId; 
  7.     @Id 
  8.     private Integer roleId; 
  9.  
  10.     public Integer getUserId() { 
  11.         return userId; 
  12.     } 
  13.  
  14.     public void setUserId(Integer userId) { 
  15.         this.userId = userId; 
  16.     } 
  17.  
  18.     public Integer getRoleId() { 
  19.         return roleId; 
  20.     } 
  21.  
  22.     public void setRoleId(Integer roleId) { 
  23.         this.roleId = roleId; 
  24.     } 

 

責任編輯:武曉燕 來源: 小明菜市場
相關推薦

2012-07-26 16:33:30

蘋果山獅OS X 10.8

2021-06-09 07:14:32

數據分析互聯網運營大數據

2009-11-05 16:04:19

Oracle用戶表

2015-08-14 13:12:20

4G

2022-01-05 18:18:01

Flink 數倉連接器

2023-02-13 13:50:48

研究offer

2024-05-16 11:13:16

Helm工具release

2022-02-16 19:42:25

Spring配置開發(fā)

2009-11-09 12:55:43

WCF事務

2024-12-18 10:24:59

代理技術JDK動態(tài)代理

2013-09-09 13:57:12

互聯網周刊

2011-08-16 09:25:36

2020-11-02 16:36:03

機器學習人工智能計算機

2024-10-05 00:00:20

Element開源項目

2022-02-17 09:24:11

TypeScript編程語言javaScrip

2021-04-20 13:59:37

云計算

2023-12-27 08:15:47

Java虛擬線程

2024-01-16 07:46:14

FutureTask接口用法

2024-08-30 08:50:00

2009-11-12 09:16:15

ADO.NET數據庫連
點贊
收藏

51CTO技術棧公眾號