热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

springboot+jpa显示完整sql_SpringBoot整合springdata和缓存

学习主题:SpringBootSpringBoot整合SpringDataJPA步骤-(上)创建一个Maven的jar工程。修改POM文件添加Web启动器࿰

学习主题:SpringBoot

  1. SpringBoot整合Spring Data JPA步骤-(上)
    1. 创建一个Maven的jar工程。
    2. 修改POM文件添加Web启动器,Thymeleaf启动器,Spring Data JPA启动器坐标。



org.springframework.boot spring-boot-starter-data-jpa

  1. 修改POM文件添加MySQL数据库、数据库连接池坐标。


mysqlmysql-connector-java


com.alibabadruid1.0.9

  1. 修改全局配置文件,添加数据库配置、连接池配置、JPA正向工程配置,显示SQL语句配置。

spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver
spring.datasource.url=jdbc:mysql://localhost:3306/kaoshi1?useUnicode=true&charsetEncoding=utf-8&useSSL=true&serverTimezone=GMT%2b8
spring.datasource.username=root
spring.datasource.password=rootspring.datasource.type=com.alibaba.druid.pool.DruidDataSource
mybatis.type-aliases-package=com.cyj.pojo
spring.jpa.hibernate.ddl-auto=update
spring.jpa.show-sql=true

  1. SpringBoot整合Spring Data JPA步骤-(下)
    1. 创建Users实体类,包含id、name、age、address属性,其中id为主键。

package com.cyj.pojo;import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;@Entity
@Table(name = "t_users")
public class Users {@Id@GeneratedValue(strategy = GenerationType.IDENTITY)@Column(name = "id")private Integer id;@Column(name = "name")private String name;@Column(name = "age")private Integer age;@Column(name = "address")private String address;public Integer getId() {return id;}public void setId(Integer id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}@Overridepublic String toString() {return "Users [id=" + id + ", name=" + name + ", age=" + age + ", address=" + address + "]";}
}

  1. 创建Dao接口继承JpaRepository接口。

package com.cyj.dao;
import com.cyj.pojo.Users;
importorg.springframework.data.jpa.repository.JpaRepository;
/*** @author cyj* @date 2019-11-21 10:49*/
public interface UsersRepository extends JpaRepository {
}

  1. 在工程中添加测试启动器。


org.springframework.bootspring-boot-starter-test

  1. 创建启动类。

package com.cyj;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/*** @author cyj* @date 2019-11-19 14:37*/
@SpringBootApplication
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}
}

  1. 编写测试代码使用正向工程创建表,并在表中插入一条数据。

@Autowired
private UsersRepository usersRepository;@Test
public void testSave() {Users users = new Users();users.setAddress("北京市海淀");users.setAge(20);users.setName("张三");this.usersRepository.save(users);
}

  1. SpringBoot整合Spring Data JPA-Repository接口使用
    1. 在Spring Data JPA中提供了几个核心接口?

5个

1 Repository 接口

2 CrudRepository 接口

3 PagingAndSortingRepository 接口

4 JpaRepository 接口

5 JPASpecificationExecutor 接口

  1. Repository接口的作用是什么?

标识接口

  1. 方法名称命名查询方式的规则是什么?

findBy(关键字)+属性名称(首字符大写)+查询条件(首字母大写)

  1. @Query注解的作用是什么?

可以使用@Query注解实现查询

  1. @Modifying注解的作用是什么?

表示需要执行一个更新操作

  1. SpringBoot整合Spring Data JPA-CrudRepository接口使用
    1. CrudRepository接口的作用是什么?

CRUD操作

  1. CrudRepository接口的继承结构是什么样的?
4be1d482a008c3114e20c320f571b514.png
  1. CrudRepository接口中有哪些常见方法?
fd3486ddd3b358bc891fcd3e51dca9b1.png
  1. SpringBoot整合Spring Data JPA-PagingAndSortingRepository接口使用
    1. PagingAndSortingRepository接口的作用是什么?

分页与排序操作

  1. PagingAndSortingRepository的继承结构是什么样的?
36f32a720a4db764df77a58f8245abb7.png
  1. PagingAndSortingRepository排序的步骤是什么?

1 定义order对象定义排序规则

2 将order对象传递给sort,sort封装了排序规则

3 将sort传递给findAll方法,由实现PagingAndSortingRepository接口的类来调用findAll方法

  1. PagingAndSortingRepository分页的步骤是什么?

1 定义pageable对象,该对象有两个参数:page:当前页 size:每页显示的条数

2 将pageable对象传递给findAll方法

  1. SpringBoot整合Spring Data JPA-JpaRepository接口使用
    1. JpaRepository接口的作用是什么?

对从父接口所继承的方法对返回值做适配处理

  1. JpaRepository继承结构是什么样的?
a947cd19fa845785980de58b4ce9947b.png
  1. Spring Data JPA-JPASpecificationExecutor接口使用
    1. JPASpecificationExecutor接口的作用是什么?

条件查询以及分页处理

  1. JPASpecificationExecutor接口的继承结构是什么样的?

单独存在

  1. Specification对象的作用是什么?

用于封装查询条件

  1. SpringBoot整合Spring Data JPA-建立双向一对多关联映射
    1. @GeneratedValue注解的作用是什么?

可以设置组件生成策略是自增长还是别的

  1. @ManyToOne注解的作用是什么?

表示关联关系:多对一

  1. @JoinColumn注解的作用是什么?

维护一个外键

  1. SpringBoot整合Spring Data JPA-建立双向多对多关联映射
    1. @ManyToMany注解的作用是什么?

表示关联关系:多对多

  1. @JoinTable注解的作用是什么?

映射中间表

  1. 创建一个菜单实体,包含menusid、menusname、menusurl、fatherid属性,与Roles为多对多关联关系,一个角色可以拥有多个菜单,一个菜单可以分配个多个角色。

package com.cyj.pojo;import javax.persistence.*;
import java.util.HashSet;/*** @author cyj* @date 2019-11-21 11:08*/
@Entity
@Table(name = "t_menus")
public class Menus {&#64;Id&#64;GeneratedValue(strategy &#61; GenerationType.IDENTITY)&#64;Column(name &#61; "menusid")private Integer menusid;&#64;Column(name &#61; "menusname")private String menusname;&#64;Column(name &#61; "menusurl")private String menusurl;&#64;Column(name &#61; "fatherid")private Integer fatherid;&#64;ManyToMany(mappedBy &#61; "menus")private Set roles &#61; new HashSet<>();public Integer getMenusid() {return menusid;}public void setMenusid(Integer menusid) {this.menusid &#61; menusid;}public String getMenusname() {return menusname;}public void setMenusname(String menusname) {this.menusname &#61; menusname;}public String getMenusurl() {return menusurl;}public void setMenusurl(String menusurl) {this.menusurl &#61; menusurl;}public Integer getFatherid() {return fatherid;}public void setFatherid(Integer fatherid) {this.fatherid &#61; fatherid;}public Set getRoles() {return roles;}public void setRoles(Set roles) {this.roles &#61; roles;}&#64;Overridepublic String toString() {return "Menus [menusid&#61;" &#43; menusid &#43; ", menusname&#61;" &#43; menusname &#43; ", menusurl&#61;" &#43; menusurl &#43; ", fatherid&#61;" &#43; fatherid &#43; "]";}
}

  1. SpringBoot整合Spring Data JPA-操作双向多对多关联映射
    1. 编写测试代码&#xff0c;创建角色一个对象&#xff0c;创建两个菜单对象&#xff0c;建立角色对象与菜单对象的关系&#xff0c;并插入到表中。

&#64;Autowired
private RolesRepository rolesRepository;/*** 添加测试 */
&#64;Test
public void testSave() { //创建角色对象 Roles r &#61; new Roles();r.setRolename("项目经理"); //创建菜单对象 Menus menus &#61; new Menus();menus.setMenusname("xxxx 管理系统");menus.setFatherid(0);Menus menus2 &#61; new Menus();menus2.setFatherid(1);menus2.setMenusname("项目管理"); //关联 r.getMenus().add(menus);r.getMenus().add(menus2);menus.getRoles().add(r);menus2.getRoles().add(r); //保存 this.rolesRepository.save(r);
}

  1. Spring Boot整合Ehcache步骤
    1. 什么是Ehcache&#xff1f;

通过 Ehcache实现对数据本地的缓存 , 用于单体架构的项目中

  1. Spring整合Ehcache的步骤是什么&#xff1f;

四个步骤&#xff1a;

1 添加对应坐标

2 创建ehcache.xml定义缓存策略

3 spring全局配置文件添加语句使其加载ehcache.xml

4 启动类加上&#64;EnableCaching启动缓存

  1. Ehcache的配置文件应该放在项目的什么位置&#xff1f;

src/main/resources/ehcache.xml

  1. Spring整合Ehcache需要在全局配置文件中配置什么&#xff1f;

#连接数据库
spring.datasource.driverClassName&#61;com.mysql.jdbc.Driver
spring.datasource.url&#61;jdbc:mysql://localhost:3306/ssm?useSSL&#61;false
spring.datasource.username&#61;root
spring.datasource.password&#61;root
#指定连接池
spring.datasource.type&#61;com.alibaba.druid.pool.DruidDataSource#开启正向工程
spring.jpa.hibernate.ddl-auto&#61;update
spring.jpa.hibernate.generate-ddl&#61;true
#运行时,打印sql语句
spring.jpa.show-sql&#61;true

#使用缓存时需要在启动类上添加&#64;EnableCaching注解 在需要开启注解的方法上添加&#64;Cacheable

#开启ehcache的缓存配置

spring.cache.ehcache.config&#61;ehcache.xml

  1. &#64;EnableCaching注解的作用是什么&#xff1f;

加上&#64;EnableCaching注解表示开启本地缓存

  1. Spring Boot整合&#64;CacheEvict注解使用
    1. &#64;Cacheable注解的作用是什么&#xff1f;

选择缓存的类型,需要在启动类开启

  1. &#64;Cacheable注解的value属性的作用是什么&#xff1f;

这个注解是选择缓存的类型,需要在启动类开启&#64;EnableCaching

  1. &#64;Cacheable注解的key属性的作用是什么&#xff1f;

没有方法参数时&#xff0c;会默认以0为key&#xff0c;当有两个无参方法使用缓存时key会冲突。可以使用数字作为key&#xff0c;不能直接使用字符串

  1. &#64;CacheEvict注解的作用是什么&#xff1f;

&#64;CacheEvict(value&#61;“users”,allEntries&#61;true) 清除缓存中以users 存策略缓存的对象



推荐阅读
  • Mybatis拦截器实现数据权限的示例代码
    在我们日常开发过程中,通常会涉及到数据权限问题,本文主要介绍了Mybatis拦截器实现数据权限的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的 ... [详细]
  • 1.脚本功能1)自动替换jar包中的配置文件。2)自动备份老版本的Jar包3)自动判断是初次启动还是更新服务2.脚本准备进入ho ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • soatest新建db工具,执行sql语句的步骤和注意事项
    本文介绍了在soatest中新建db工具并执行sql语句的步骤和注意事项,包括设置数据库连接参数、使用配置文件的方法编写sql查询语句、增加oracle驱动连接jar包、运行测试用例以及查看查询结果。详细说明了每个步骤的操作和相关注意事项。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • Jboss的EJB部署描述符standardjaws.xml配置步骤详解
    本文详细介绍了Jboss的EJB部署描述符standardjaws.xml的配置步骤,包括映射CMP实体EJB、数据源连接池的获取以及数据库配置等内容。 ... [详细]
  • 使用freemaker生成Java代码的步骤及示例代码
    本文介绍了使用freemaker这个jar包生成Java代码的步骤,通过提前编辑好的模板,可以避免写重复代码。首先需要在springboot的pom.xml文件中加入freemaker的依赖包。然后编写模板,定义要生成的Java类的属性和方法。最后编写生成代码的类,通过加载模板文件和数据模型,生成Java代码文件。本文提供了示例代码,并展示了文件目录结构。 ... [详细]
  • Struts2+Sring+Hibernate简单配置
    2019独角兽企业重金招聘Python工程师标准Struts2SpringHibernate搭建全解!Struts2SpringHibernate是J2EE的最 ... [详细]
author-avatar
五环4_183
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有