首页 > 编程语言 > 详细

集成Spring Data JPA

时间:2021-05-12 00:24:39      阅读:17      评论:0      收藏:0      [点我收藏+]
1.Spring Data JPA简介

Spring Data是一个用于简化数据访问,并支持云服务的开源框

使用完成Spring Data JPA对user表的CRUD操作。

2.步骤

1.创建工程勾选依赖

2.编写Pojo,添加注解

3.编写Dao(需要继承JpaRepository<T,ID>)

4.编写Service

5.编写Controller

6.测试

3.实现

创建工程勾选依赖

技术分享图片

 

 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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.6.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.itheima</groupId>
    <artifactId>springboot-jpa</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>springboot-jpa</name>
    <description>springboot整合jpa</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <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-web</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>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

  编写pojo

package com.programme.pojo;

import javax.persistence.*;

/**
 * @program: springboot
 * @description: ${description}
 * @author: Mr.zw
 * @create: 2021-05-11 20:30
 **/
@Table(name = "t_user")//将实体和数据库的表关系关联起来
@Entity//标识这个对象是一个数据库的映射对象
public class User {
    /**
     * TABLE:将数据库表的主键保存在一张表中进行管理
     * SEQUENCE:Oracle数据库主键自增的方式
     * IDENTITY:使用数据库的主键自增
     *  AUTO:将主键自增交给JPA框架帮我们进行管理
     */
    @Id//标识该属性为数据库的主键
    @GeneratedValue(strategy = GenerationType.IDENTITY)//标识主键的自增的方式
    private Integer id;
    //@Column(name = "username")将数据库字段关联起来,如果名字一样则可以忽略
    private String username;
    private String password;
    private String address;

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name=‘" + username + ‘\‘‘ +
                ", password=‘" + password + ‘\‘‘ +
                ", address=‘" + address + ‘\‘‘ +
                ‘}‘;
    }

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return username;
    }

    public void setName(String name) {
        this.username = name;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }
}

  编写dao接口

package com.programme.dao;

import com.programme.pojo.User;
import org.springframework.data.jpa.repository.JpaRepository;

/**
 * @program: springboot
 * @description: ${description}
 * @author: Mr.zw
 * @create: 2021-05-11 20:55
 **/
public interface UserDao extends JpaRepository<User,Integer> {
}

  编写service接口以及实现类

package com.programme.service;

import com.programme.pojo.User;

import java.util.List;

/**
 * @program: springboot
 * @description: ${description}
 * @author: Mr.zw
 * @create: 2021-05-11 20:59
 **/
public interface UserService {
    //查询全部
    public List<User>findAll();
    //主键查询
    public User findOne(Integer id);
    //修改
    public void update(User user);
    //删除
    public void delete(Integer id);
    //新增
    public void insert(User user);
}

  

package com.programme.impl;

import com.programme.dao.UserDao;
import com.programme.pojo.User;
import com.programme.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * @program: springboot
 * @description: ${description}
 * @author: Mr.zw
 * @create: 2021-05-11 21:07
 **/
@Service
public class UserServiceImpl implements UserService {

    @Autowired
    private UserDao userDao;

    //查询全部
    @Override
    public List<User> findAll() {
        return userDao.findAll();
    }
    //主键查询
    @Override
    public User findOne(Integer id) {
        return userDao.findById(id).get();//.findById()返回选择器对象.get()返回User
    }
    //修改
    @Override
    public void update(User user) {
        //根据主键进行判断,若主键存在,执行更新,若主键不存在或者为空,执行新增
        userDao.save(user);
    }
    //删除
    @Override
    public void delete(Integer id) {
        userDao.deleteById(id);//deleteAll 删除全部
    }
    //新增
    @Override
    public void insert(User user) {
        userDao.save(user);
    }
}

  编写controller

package com.programme.controller;

import com.programme.pojo.User;
import com.programme.service.UserService;
import org.hibernate.annotations.GeneratorType;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @program: springboot
 * @description: ${description}
 * @author: Mr.zw
 * @create: 2021-05-11 21:18
 **/
@RestController
@RequestMapping(value = "/jpa")
public class UserController {
    @Autowired
    private UserService userService;
    //查询全部
    @PostMapping(value = "/findAll")
    public List<User> findAll(){
        return userService.findAll();
    }
    //主键查询
    @GetMapping(value = "/findById")
    public User findById(@PathVariable Integer id){
        return userService.findOne(id);
    }
    //修改
    @GetMapping(value = "/updateUser")
    public void updateUser(User user){
        userService.update(user);
    }
    //删除
    @GetMapping(value = "/deleteById")
    public void deleteById(@PathVariable Integer id){
        userService.delete(id);
    }
    //新增
    @GetMapping(value = "/insert")
    public void insert(User user){
        userService.insert(user);
    }
}

  配置application

server:
  port: 18081
  servlet:
    context-path: /springboot-jpa
spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/springboot?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC
    username: root
    password: root
  jpa:
    database: mysql
    show-sql: true
    generate-ddl: true #开启建表策略
    hibernate:
      ddl-auto: validate

      #hibernate.ddl-auto,建表策略:
      #update:每次运行程序,没有表会新建表,表内有数据不会清空,只会更新
      #create:每次运行程序,没有表会新建表,表内有数据会清空
      #create-drop:每次程序结束的时候会清空表
      #validate:运行程序会校验数据与数据库的字段类型是否相同,不同会报错

  

总结

集成SpringDataJPA

1.Dao需要继承JpaRepository<T,ID>

2.JpaRepository<T,ID>中已经实现了增删改查,可以拿着直接使用

集成Spring Data JPA

原文:https://www.cnblogs.com/demowei/p/14757923.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!