@data注解的作用_springboot整合data , ehcache, redis

Spring Boot整合JPA、Ehcache及注解使用
本文围绕Spring Boot展开,详细介绍了Spring Boot整合Spring Data JPA的步骤,包括创建工程、修改配置文件、创建实体类和接口等,还讲解了JPA中各核心接口的作用及使用方法。此外,阐述了Spring Boot整合Ehcache的步骤和相关注解如@Cacheable、@CacheEvict的作用。

训练大纲(第114天)

大家如果想快速有效的学习,思想核心是“以建立知识体系为核心”,具体方法是“守破离”。确保老师课堂上做的操作,反复练习直到熟练。

第219次(SpringBoot)

学习主题:SpringBoot

学习目标:

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

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

<!-- springBoot 的启动器 -->

<dependency>

<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId>

</dependency>

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

<!-- mysql 数据库驱动 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- druid 数据库连接池 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.0.9</version>
</dependency>

  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=root
spring.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;
}
@Override
public 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<Users,Integer> {
}

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

<!-- 测试工具的启动器 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>

  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接口的继承结构是什么样的?

fc21e40dca6c35e8760a53fd67f6b982.png
  1. CrudRepository接口中有哪些常见方法?

3e373875b01e4d15b58819eeacfee595.png
  1. SpringBoot整合Spring Data JPA-PagingAndSortingRepository接口使用
    1. PagingAndSortingRepository接口的作用是什么?

分页与排序操作

  1. PagingAndSortingRepository的继承结构是什么样的?

b64aa671dc1d34c19f78d22d62f14cf9.png
  1. PagingAndSortingRepository排序的步骤是什么?

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

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

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

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

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

2 将pageable对象传递给findAll方法

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

第220次(SpringBoot

学习主题:SpringBoot

学习目标:

对应视频:

http://www.itbaizhan.cn/course/id/85.html

对应文档:

对应作业

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

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

  1. JpaRepository继承结构是什么样的?

e577501acb6ddd5b1e7da6e8e22251df.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 {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "menusid")
private Integer menusid;
@Column(name = "menusname")
private String menusname;
@Column(name = "menusurl")
private String menusurl;
@Column(name = "fatherid")
private Integer fatherid;
@ManyToMany(mappedBy = "menus")
private Set<Roles> roles = new HashSet<>();
public Integer getMenusid() {
return menusid;
}
public void setMenusid(Integer menusid) {
this.menusid = menusid;
}
public String getMenusname() {
return menusname;
}
public void setMenusname(String menusname) {
this.menusname = menusname;
}
public String getMenusurl() {
return menusurl;
}
public void setMenusurl(String menusurl) {
this.menusurl = menusurl;
}
public Integer getFatherid() {
return fatherid;
}
public void setFatherid(Integer fatherid) {
this.fatherid = fatherid;
}
public Set<Roles> getRoles() {
return roles;
}
public void setRoles(Set<Roles> roles) {
this.roles = roles;
}
@Override
public String toString() {
return "Menus [menusid=" + menusid + ", menusname=" + menusname + ", menusurl=" + menusurl + ", fatherid=" + fatherid + "]";
}
}

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

@Autowired
private RolesRepository rolesRepository;
/*** 添加测试 */
@Test
public void testSave() {
//创建角色对象
Roles r = new Roles();
r.setRolename("项目经理");
//创建菜单对象
Menus menus = new Menus();
menus.setMenusname("xxxx 管理系统");
menus.setFatherid(0);
Menus menus2 = 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?

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

  1. Spring整合Ehcache的步骤是什么?

四个步骤:

1 添加对应坐标

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

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

4 启动类加上@EnableCaching启动缓存

  1. Ehcache的配置文件应该放在项目的什么位置?

src/main/resources/ehcache.xml

  1. Spring整合Ehcache需要在全局配置文件中配置什么?

#连接数据库

spring.datasource.driverClassName=com.mysql.jdbc.Driver

spring.datasource.url=jdbc:mysql://localhost:3306/ssm?useSSL=false

spring.datasource.username=root

spring.datasource.password=root

#指定连接池

spring.datasource.type=com.alibaba.druid.pool.DruidDataSource

#开启正向工程

spring.jpa.hibernate.ddl-auto=update

spring.jpa.hibernate.generate-ddl=true

#运行时,打印sql语句

spring.jpa.show-sql=true

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

#开启ehcache的缓存配置

spring.cache.ehcache.config=ehcache.xml

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

加上@EnableCaching注解表示开启本地缓存

  1. Spring Boot整合@CacheEvict注解使用
    1. @Cacheable注解的作用是什么?

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

  1. @Cacheable注解的value属性的作用是什么?

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

  1. @Cacheable注解的key属性的作用是什么?

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

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

@CacheEvict(value=“users”,allEntries=true) 清除缓存中以users 存策略缓存的对象

分享/讲解/扩展思考

点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值