日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
值不值|三分鐘搞定Jpa?值不值!

本文轉(zhuǎn)載自微信公眾號(hào)「小明菜市場(chǎng)」,作者+小明菜市場(chǎng)。轉(zhuǎn)載本文請(qǐng)聯(lián)系小明菜市場(chǎng)公眾號(hào)。

創(chuàng)新互聯(lián)建站主營(yíng)井岡山網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營(yíng)網(wǎng)站建設(shè)方案,App定制開發(fā),井岡山h5小程序定制開發(fā)搭建,井岡山網(wǎng)站營(yíng)銷推廣歡迎井岡山等地區(qū)企業(yè)咨詢

數(shù)據(jù)準(zhǔn)備

數(shù)據(jù)庫(kù)使用的數(shù)據(jù)表設(shè)計(jì)如下

建表語(yǔ)句如下

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

新建 Spring Boot 工程

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

引入 Pom配置

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

編寫配置文件 application.yml

 
 
 
 
  1. server:
  2.   port: 8086
  3. spring:
  4.   #通用的數(shù)據(jù)源配置
  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.     #這個(gè)參數(shù)是在建表的時(shí)候,將默認(rèn)的存儲(chǔ)引擎切換為 InnoDB 用的
  12.     database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
  13.     #配置在日志中打印出執(zhí)行的 SQL 語(yǔ)句信息。
  14.     show-sql: true
  15.     hibernate:
  16.       #配置指明在程序啟動(dòng)的時(shí)候要?jiǎng)h除并且創(chuàng)建實(shí)體類對(duì)應(yīng)的表
  17.       ddl-auto: create

編寫示例代碼

新建實(shí)體對(duì)象 UserDao.java

實(shí)體類,需要使用 @Entity 注解標(biāo)注 需要對(duì)實(shí)體類的屬性進(jìn)行標(biāo)注,使用 @Id 標(biāo)注組件 使用 @Column 標(biāo)注非主鍵

 
 
 
 
  1. /**
  2.  * 用戶實(shí)體類
  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.     public Integer getId() {
  18.         return id;
  19.     }
  20.     public void setId(Integer id) {
  21.         this.id = id;
  22.     }
  23.     public String getUserName() {
  24.         return userName;
  25.     }
  26.     public void setUserName(String userName) {
  27.         this.userName = userName;
  28.     }
  29.     public String getPassword() {
  30.         return password;
  31.     }
  32.     public void setPassword(String password) {
  33.         this.password = password;
  34.     }
  35.     public Integer getSex() {
  36.         return sex;
  37.     }
  38.     public void setSex(Integer sex) {
  39.         this.sex = sex;
  40.     }
  41.     public Date getLastLoginTime() {
  42.         return lastLoginTime;
  43.     }
  44.     public void setLastLoginTime(Date lastLoginTime) {
  45.         this.lastLoginTime = lastLoginTime;
  46.     }
  47. }

新建倉(cāng)庫(kù)接口類 UserRepository

倉(cāng)庫(kù)接口類,UserRepository 是我們常用的 Dao 接口,需要注意

  1. 使用 @Repository 注解
  2. 繼承 JPARepository
  3. UserRepository 不需要編寫任何代碼,即可實(shí)現(xiàn)增刪查改
 
 
 
 
  1. @Repository
  2. public interface UserRepository extends JPARepository {
  3. }

編寫測(cè)試用例

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

下,新增加

 
 
 
 
  1. UserRepositoryTest.java

使用

 
 
 
 
  1. @RunWith(SpringRunner.class)

 
 
 
 
  1. @SpringBootTest

注解標(biāo)注類。

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

新增加用戶數(shù)據(jù)

 
 
 
 
  1. /**
  2.      * 初始化一個(gè)對(duì)象 UserDO 測(cè)試Insert過(guò)程
  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.     }

查詢單個(gè)用戶數(shù)據(jù)

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

查詢多個(gè)數(shù)據(jù)

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

更新數(shù)據(jù)

 
 
 
 
  1. @Test
  2.     public void testUpdate(){
  3.         Optional 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.     }

刪除數(shù)據(jù)

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

聯(lián)合主鍵

例如定義表中userId,roleId 都是主鍵,此時(shí)這樣設(shè)置

1.定義一個(gè)主鍵類

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

2.定義實(shí)體類

 
 
 
 
  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.     public Integer getUserId() {
  10.         return userId;
  11.     }
  12.     public void setUserId(Integer userId) {
  13.         this.userId = userId;
  14.     }
  15.     public Integer getRoleId() {
  16.         return roleId;
  17.     }
  18.     public void setRoleId(Integer roleId) {
  19.         this.roleId = roleId;
  20.     }
  21. }

分享標(biāo)題:值不值|三分鐘搞定Jpa?值不值!
文章源于:http://www.dlmjj.cn/article/cccdjdj.html