您好,登錄后才能下訂單哦!
本篇內容主要講解“如何快速搞定Jpa”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“如何快速搞定Jpa”吧!
數據準備
數據庫使用的數據表設計如下
建表語句如下
SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- ---------------------------- -- Table structure for t_user -- ---------------------------- DROP TABLE IF EXISTS `t_user`; CREATE TABLE `t_user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_name` varchar(255) DEFAULT NULL, `password` varchar(255) DEFAULT NULL, `last_login_time` datetime DEFAULT NULL, `sex` tinyint(4) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=armscii8; -- ---------------------------- -- Records of t_user -- ---------------------------- BEGIN; INSERT INTO `t_user` VALUES (1, 'json', '123', '2019-07-27 16:01:21', 1); INSERT INTO `t_user` VALUES (2, 'jack jo', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (3, 'manistal', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (4, 'landengdeng', '123', '2019-07-24 16:01:37', 1); INSERT INTO `t_user` VALUES (5, 'max', '123', '2019-07-24 16:01:37', 1); COMMIT; SET FOREIGN_KEY_CHECKS = 1;
新建 Spring Boot 工程
選擇 File -> New -> Project 選擇 Spring Initializr,選擇 next 填寫包名,項目名,選擇下一步。選擇依賴,Spring web starter 前面打鉤,sql 選項為 Spring Data Jpa,MySql 項目名任意
引入 Pom配置
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>io.projectreactor</groupId> <artifactId>reactor-test</artifactId> <scope>test</scope> </dependency> </dependencies>
編寫配置文件 application.yml
server: port: 8086 spring: #通用的數據源配置 datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/demo_test?useSSL=false&useUnicode=true&characterEncoding=utf8 username: root password: 123 jpa: #這個參數是在建表的時候,將默認的存儲引擎切換為 InnoDB 用的 database-platform: org.hibernate.dialect.MySQL5InnoDBDialect #配置在日志中打印出執行的 SQL 語句信息。 show-sql: true hibernate: #配置指明在程序啟動的時候要刪除并且創建實體類對應的表 ddl-auto: create
編寫示例代碼
新建實體對象 UserDao.java
實體類,需要使用 @Entity 注解標注 需要對實體類的屬性進行標注,使用 @Id 標注組件 使用 @Column 標注非主鍵
/** * 用戶實體類 * */ @Entity @Table(name="t_user") public class UserDO { @Id private Integer id; @Column(name="user_name",length = 200) private String userName; @Column(name="password",length = 200) private String password; @Column(name="sex") private Integer sex; @Column(name="last_login_time") private Date lastLoginTime; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Integer getSex() { return sex; } public void setSex(Integer sex) { this.sex = sex; } public Date getLastLoginTime() { return lastLoginTime; } public void setLastLoginTime(Date lastLoginTime) { this.lastLoginTime = lastLoginTime; } }
新建倉庫接口類 UserRepository
倉庫接口類,UserRepository 是我們常用的 Dao 接口,需要注意
使用 @Repository 注解
繼承 JPARepository
UserRepository 不需要編寫任何代碼,即可實現增刪查改
@Repository public interface UserRepository extends JPARepository<UserDO,Integer> { }
編寫測試用例
在
src/test/java/com/fishpro/jpa/
下,新增加
UserRepositoryTest.java
使用
@RunWith(SpringRunner.class)
和
@SpringBootTest
注解標注類。
@RunWith(SpringRunner.class) @SpringBootTest public class UserRepositoryTest{ }
新增加用戶數據
/** * 初始化一個對象 UserDO 測試Insert過程 * */ @Before public void before(){ UserDO userDO=new UserDO(); userDO.setId(1); userDO.setUserName("fishpro"); userDO.setSex(1); userDO.setLastLoginTime(new Date()); userDO.setPassword("passWord"); userRepository.save(userDO); }
查詢單個用戶數據
@Test public void testFind(){ Optional<UserDO> optionalUserDO=userRepository.findById(1); if(optionalUserDO.isPresent()){ UserDO userDO=optionalUserDO.get(); System.out.println("testFind user"+userDO.getUserName()); } }
查詢多個數據
@Test public void testFindAll(){ List<UserDO> list=userRepository.findAll(); for (UserDO user:list ) { System.out.println("user_name:"+user.getUserName()); } }
更新數據
@Test public void testUpdate(){ Optional<UserDO> optionalUserDO=userRepository.findById(1); if(optionalUserDO.isPresent()){ UserDO userDO=optionalUserDO.get(); userDO.setUserName("fishpro001"); userRepository.save(userDO); System.out.println("testFind user"+userDO.getUserName()); } }
刪除數據
@After public void after(){ userRepository.deleteById(1); userRepository.deleteById(2); userRepository.deleteById(3); }
聯合主鍵
例如定義表中userId,roleId 都是主鍵,此時這樣設置
1.定義一個主鍵類
public class UserRoleKey implements Serializable { private Integer userId; private Integer roleId; }
2.定義實體類
@Entity @Table(name="t_user_role") @IdClass(UserRoleKey.class) //注意這里是引入了 定義的符合主鍵類 public class UserRoleDO { @Id private Integer userId; @Id private Integer roleId; public Integer getUserId() { return userId; } public void setUserId(Integer userId) { this.userId = userId; } public Integer getRoleId() { return roleId; } public void setRoleId(Integer roleId) { this.roleId = roleId; } }
到此,相信大家對“如何快速搞定Jpa”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。