版权声明:[ws - 兮的博客] - 空间专属,未经声明不得私自转载 https://blog.csdn.net/qq_41463655/article/details/82939481
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 成功了