spring boot 整合 jpa (一) -- 之基础配置

版权声明:[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 成功了

猜你喜欢

转载自blog.csdn.net/qq_41463655/article/details/82939481