Spring Boot整合Spring Data JPA过程解析

Spring Boot整合Spring Data JPA

1)加入依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
  <scope>runtime</scope>
</dependency>

2)增加配置(application.properties)

server.port=8080
server.servlet.context-path=/

# database configuration
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/blog?serverTimezone=GMT%2B8&useUnicode=true&characterEncoding=utf-8
spring.datasource.username=root
spring.datasource.password=123

# jpa configuration
# 更新或者创建数据库表结构
spring.jpa.hibernate.ddl-auto=update
# 控制台打印sql语句
spring.jpa.show-sql=true
spring.jpa.open-in-view=false

# log configuration
logging.level.root=info

3)编写一个实体类(bean)和数据表进行映射,并且配置好映射关系

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.validation.constraints.NotBlank;

/**
 * 使用JPA注解配置映射关系
 * Created by zxf on 2019年9月30日
 */
@Entity // 告诉JPA这是一个实体类(和数据库映射的类)
@Table(name = "t_type") // @Table来指定和哪个数据表对应,如果省略默认表名就是类名首字母小写
public class Type {
  @Id // 表明这是一个主键
  @GeneratedValue(strategy = GenerationType.IDENTITY) // 自增主键
  private Long id;

  @Column(name = "last_name", length = 50) // 这是和数据表对应的一个列,省略默认列名就是属性名
  private String name;
}

4)编写一个Dao接口来操作实体类对应的数据表

import org.springframework.data.jpa.repository.JpaRepository;

/**
 * Created by zxf on 2019年10月1日
 */
// 第一个泛型表示操作的类是Type,第二个泛型Long表示Type的主键id为Long类型
public interface TypeRepository extends JpaRepository<Type, Long> {
  // 定义自己的方法
  Type findTypeByName(String name);
}

5)service层调用测试

import java.util.List;
import java.util.Optional;

import javax.transaction.Transactional;

import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import com.fei.NotFoundException;
import com.fei.po.Type;
import com.fei.repository.TypeRepository;
import com.fei.service.TypeService;

/**
 * Created by zxf on 2019年10月1日
 */
@Service
@Transactional
public class TypeServiceImpl implements TypeService {

  @Autowired
  private TypeRepository typeRepository;

  /**
   * 保存一个分类
   *
   * @param type
   * @return
   */
  @Override
  public Type saveType(Type type) {
    return typeRepository.save(type);
  }

  /**
   * 根据id获得一个分类对象
   *
   * @param id
   * @return
   */
  @Override
  public Type getType(Long id) {
    return typeRepository.findById(id).get();
  }

  /**
   * 根据分页参数查询一个分类列表
   *
   * @param pageable
   * @return
   */
  @Override
  public Page<Type> listType(Pageable pageable) {
    return typeRepository.findAll(pageable);
  }

  /**
   * 更新分类
   *
   * @param id
   * @param type
   * @return
   */
  @Override
  public Type updateType(Long id, Type type) {
    Type t = typeRepository.findById(id).get();

    if (t == null) {
      throw new NotFoundException("类型不存在");
    }
    BeanUtils.copyProperties(type, t);

    return typeRepository.save(t);
  }

  /**
   * 根据id删除一个分类
   *
   * @param id
   */
  @Override
  public void deleteType(Long id) {
    typeRepository.deleteById(id);
  }

  /**
   * 根据名字查询一个分类对象
   *
   * @param name
   * @return
   */
  @Override
  public Type getTypeByName(String name) {
    return typeRepository.findTypeByName(name);
  }

  /**
   * 不带参数的查询所有分类
   *
   * @return
   */
  @Override
  public List<Type> listType() {
    return typeRepository.findAll();
  }

}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SpringBoot整合MyBatis实现乐观锁和悲观锁的示例

    本文以转账操作为例,实现并测试乐观锁和悲观锁. 全部代码:https://github.com/imcloudfloating/Lock_Demo GitHub Page:https://cloudli.top 死锁问题 当 A, B 两个账户同时向对方转账时,会出现如下情况: 时刻 事务 1 (A 向 B 转账) 事务 2 (B 向 A 转账) T1 Lock A Lock B T2 Lock B (由于事务 2 已经 Lock A,等待) Lock A (由于事务 1 已经 Lock B,等

  • springboot整合redis集群过程解析

    简介 在springboot使用搭建好的redis集群 添加redis和连接池依赖 <!--redis连接池 start--> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-pool2</artifactId> </dependency> <!--redis连接池 end--> <!--redis start-

  • SpringBoot2.0 整合 Dubbo框架实现RPC服务远程调用方法

    一.Dubbo框架简介 1.框架依赖 图例说明: 1)图中小方块 Protocol, Cluster, Proxy, Service, Container, Registry, Monitor 代表层或模块,蓝色的表示与业务有交互,绿色的表示只对 Dubbo 内部交互. 2)图中背景方块 Consumer, Provider, Registry, Monitor 代表部署逻辑拓扑节点. 3)图中蓝色虚线为初始化时调用,红色虚线为运行时异步调用,红色实线为运行时同步调用. 4)图中只包含 RPC

  • SpringBoot整合Shiro两种方式(总结)

    在 Spring Boot 中做权限管理,一般来说,主流的方案是 Spring Security ,但是,仅仅从技术角度来说,也可以使用 Shiro. <!--more--> 今天松哥就来和大家聊聊 Spring Boot 整合 Shiro 的话题! 一般来说,Spring Security 和 Shiro 的比较如下: Spring Security 是一个重量级的安全管理框架:Shiro 则是一个轻量级的安全管理框架 Spring Security 概念复杂,配置繁琐:Shiro 概念简单

  • springboot整合solr的方法详解

    这一篇写一下springboot整合solr,代码已经上传到github,传送门. 1.新建core并配置schema solr create -c "book_core" ,配置分词器并且field类型定义为分词器类型. <fieldType name="ik_word" class="solr.TextField"> <analyzer type="index"> <tokenizer cla

  • Spring Boot整合Redis的完整步骤

    前言 实际 开发 中 缓存 处理是必须的,不可能我们每次客户端去请求一次 服务器 ,服务器每次都要去 数据库 中进行查找,为什么要使用缓存?说到底是为了提高系统的运行速度.将用户频繁访问的内容存放在离用户最近,访问速度最 快的 地方,提高用户的响 应速度,今天先来讲下在 springboot 中整合 redis 的详细步骤. 一.Spring Boot对Redis的支持 Spring对Redis的支持是使用Spring Data Redis来实现的,一般使用Jedis或者lettuce(默认),

  • SpringBoot整合Mybatis实现CRUD

    准备工具:IDEA jdk1.8 Navicat for MySQL Postman 一.新建Project 选择依赖:mybatis Web Mysql JDBC 项目结构 pom依赖: <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.o

  • SpringBoot整合Elasticsearch7.2.0的实现方法

    Spring boot 2.1.X整合Elasticsearch最新版的一处问题 新版本的Spring boot 2的spring-boot-starter-data-elasticsearch中支持的Elasticsearch版本是2.X,但Elasticsearch实际上已经发展到7.2.X版本了,为了更好的使用Elasticsearch的新特性,所以弃用了spring-boot-starter-data-elasticsearch依赖,而改为直接使用Spring-data-elastics

  • spring boot整合shiro安全框架过程解析

    这篇文章主要介绍了spring boot整合shiro安全框架过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 题记:在学习了springboot和thymeleaf之后,想完成一个项目练练手,于是使用springboot+mybatis和thymeleaf完成一个博客系统,在完成的过程中出现的一些问题,将这些问题记录下来,作为自己的学习心得.在这先感谢群主TyCoding的Tumo项目,虽然本人实在太菜了,好些地方看不懂,但还是使我受益

  • Spring boot开发web应用JPA过程解析

    我们使用了传统的JDBC方式连接关系型数据库,完成数据持久化操作,文章最后提到"虽然JdbcTemplate将创建连接.创建语句.关闭连接.关闭结果集和sql异常处理等做了很好的封装,但是还有待完善,所以本节内容将web项目进行改造,支持更简单的JPA方式. JPA全称Java Persistence API.JPA通过JDK 5.0注解或XML描述对象-关系表du的映射关系,并将运行期的实体对象持久化到数据库中. 1.引入依赖 要使用JPA,需先引入相关依赖,JPA是Spring Data的子

  • Spring Boot整合Spring Data JPA过程解析

    Spring Boot整合Spring Data JPA 1)加入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <dependency> <groupId>mysql</groupId> &l

  • Spring Boot整合Spring Cache及Redis过程解析

    这篇文章主要介绍了Spring Boot整合Spring Cache及Redis过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.安装redis a.由于官方是没有Windows版的,所以我们需要下载微软开发的redis,网址: https://github.com/MicrosoftArchive/redis/releases b.解压后,在redis根目录打开cmd界面,输入:redis-server.exe redis.wind

  • spring boot加入拦截器Interceptor过程解析

    这篇文章主要介绍了spring boot加入拦截器Interceptor过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.spring boot拦截器默认有 HandlerInterceptorAdapter AbstractHandlerMapping UserRoleAuthorizationInterceptor LocaleChangeInterceptor ThemeChangeInterceptor 2.配置spring

  • Spring Boot整合Spring Security简单实现登入登出从零搭建教程

    前言 Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反转Inversion of Control ,DI:Dependency Injection 依赖注入)和AOP(面向切面编程)功能,为应用系统提供声明式的安全访问控制功能,减少了为企业系统安全控制编写大量重复代码的工作. 本文主要给大家介绍了关于Spring Boot整合S

  • Spring Boot整合Spring Security的示例代码

    本文讲述Spring Boot整合Spring Security在方法上使用注解实现权限控制,使用自定义UserDetailService,从MySQL中加载用户信息.使用Security自带的MD5加密,对用户密码进行加密.页面模板采用thymeleaf引擎. 源码地址:https://github.com/li5454yong/springboot-security.git 1.引入pom依赖 <parent> <groupId>org.springframework.boot

  • Spring Boot整合Spring Data Jpa代码实例

    一.Spring Data Jpa的简介 spring data:其实就是spring 提供的一个操作数据的框架.而spring data JPA 只是spring data 框架下的一个基于JPA标准操作数据的模块. spring data jpa :基于JPA的标准对数据进行操作.简化操作持久层的代码,只需要编写接口就可以,不需要写sql语句,甚至可以不用自己手动创建数据库表. 二.添加依赖 <!--添加springdatajpa的依赖--> <dependency> <

  • Spring Boot整合web层实现过程详解

    Spring Boot中对Spring MVC的文件上传是一脉相传的,我们双击shift去搜CommonsMultipartResolver这个类,它是文件上传的一个实现类.我们先看一下源码: 我们可以看到它是MultipartResolver的实现类,我们再Ctrl+H,就可以看到右侧MultipartResolver的两个实现类.第一个实现类在servlet3.0之后,什么都不用加,就可以直接使用.第二个实现类的兼容性要好一些,早期的servlet也可以使用,但需要自己额外的加依赖.那么在S

  • Spring Boot ActiveMQ连接池配置过程解析

    spring.activemq.pool.enabled=false时,每发送一条数据都需要创建一个连接,这样会出现频繁创建和销毁连接的场景.为了不踩这个坑,我们参考池化技术的思想,配置ActiveMQ连接池.在Spring Boot ActiveMQ发布/订阅消息模式原理解析的基础上配置ActiveMQ连接池,只需要做两项修改--配置文件和添加连接池依赖. 修改application.properties配置文件 ## URL of the ActiveMQ broker. Auto-gene

随机推荐