spring boot 整合 jpa (一) -- 之基礎配置
阿新 • • 發佈:2018-11-19
spring boot 整合 jpa (二) – 之資料操作
https://blog.csdn.net/qq_41463655/article/details/82939560
spring boot 整合 jpa (三) – 之表關係對映
https://blog.csdn.net/qq_41463655/article/details/82939791
先建立 springboot 專案
pom.xml
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>ws.cn.jpa</groupId> <artifactId>jpa_dome</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>jpa_dome</name> <description>Demo project for Spring Boot</description> <!-- springboot 2.0.5 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.5.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <dependencies> <!-- jpa --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!-- web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> </dependency> <!-- mysql --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> <!-- set get 自動生成--> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <!-- springboot分頁外掛 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper-spring-boot-starter</artifactId> <!-- 特別注意版本問題, 看到評論以後得以糾正 --> <version>1.2.3</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <!-- 熱部署--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
application.yml
spring: devtools: restart: enabled: false datasource: driver-class-name: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/jpa hikari: # springboot 2.0 整合了hikari ,據說這是目前效能最好的java資料庫連線池 username: root password: sweet jpa: hibernate: ddl-auto: update # 第一次建表create 後面用update,要不然每次重啟都會新建表 show-sql: true #日誌中顯示sql語句 # 分頁配置 pagehelper: helper-dialect: mysql reasonable: true support-methods-arguments: true params: count=countSql
User 實體類
@Entity
1、資料庫不存在表會自動建立表
2、資料庫不存在某些欄位資料庫會自動建立該欄位
package ws.cn.jpa.entity; import javax.persistence.*; import java.util.List; /** * Created by Administrator on 2018/10/3/003. * 使用者類 */ @Table(name = "ws_user") //生成資料庫的表名 @Entity // 該註解宣告一個實體類,與資料庫中的表對應 public class User { @Id // 表明主鍵id @GeneratedValue // 主鍵的生成策略 private Long userId; private String username; private String password; //此處省略set grt方法....... }
UserDao
package ws.cn.jpa.dao;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.stereotype.Component;
import ws.cn.jpa.entity.User;
/**
* Created by Administrator on 2018/10/2/002.
* JpaRepository<User,Long> 說明:
* User 實體類
* Long 實體類主建的資料型別
*/
@Component
public interface UserDao extends JpaRepository<User,Long>,JpaSpecificationExecutor<User> {
//自定義 sql 語句
@Query(value = "SELECT * FROM USER WHERE id = ?1", nativeQuery = true)
User selectId(Integer id);
}
/*
* 我們在這裡直接繼承 JpaRepository
* 這裡面已經有很多現成的方法
* 這也是JPA的一大優點
*
* (1) CrudRepository: 繼承 Repository,實現了一組 CRUD 相關的方法
(2) PagingAndSortingRepository: 繼承 CrudRepository,實現了一組分頁排序相關的方法
(3)JpaRepository: 繼承 PagingAndSortingRepository,實現一組 JPA 規範相關的方法
(4)JpaSpecificationExecutor: 實現條件查詢
* */
service 就先不建立了,直接 controller 呼叫方法
@RestController
public class UserController {
/* @Autowired
private UserService userService;*/
@Autowired
private UserDao userDao;
//============查詢所有===============
@GetMapping("/listuser")
public List<User> findAll() {
// 排序(倒序)
Sort sort = new Sort(Sort.Direction.DESC, "userId");
return userDao.findAll(sort);
}
}
瀏覽器輸入
localhost:8080/listuser
[{"userId":2,"username":"小微","password":"123"},{"userId":1,"username":"王鬆","password":"123"}]
這樣整合 jpa 成功了