学习主题:SpringDataJPA
学习目标:
1 掌握SpringDataJPA常用接口类,常用注解
1. 自定义Repository接口
(1)什么是自定义Repository接口?
自己编写类似Repository的接口,编写更多的方法,满足不同的需求
(2)自定义Repository接口解决了什么问题?
当 Spring Data JPA 接口中不满足我们所需求的方法时,就会自定义Repository接口来实现我们想要的功能方法。
2.创建一对一关联关系
(1)创建一对一关联关系
Users实体类
@OneToOne
//@JoinColumn 维护一个外键
@JoinColumn(name = "roles_id")
private Roles roles;
Roles 实体类
@OneToOne(mappedBy = "roles")
private Users users;
3.操作一对一关联关系
(1)通过Spring Data JPA编写一个一对一的关联查询。
/**
* 添加数据,一对一关联数据
*/
@Test
public void test1(){
//创建roles
Roles roles=new Roles();
roles.setRolename("管理员");
//创建users
Users users=new Users();
users.setUsername("王小婷");
users.setUserage(14);
//添加关联
users.setRoles(roles);
roles.setUsers(users);
//添加
this.usersDao.save(users);
}
/**
* 查询所有数据
*/
@Test
public void test2(){
Users user = this.usersDao.findOne(12);
System.out.println("当前人物"+user);
Roles role = user.getRoles();
System.out.println("当前角色"+role);
}
4.创建一对多关联关系
(1)什么是对象的一对多关联关系?
一个角色对应多个用户,就是OneToMany
@OneToMany(mappedBy = "roles",cascade = CascadeType.PERSIST)
private Set<Users> users=new HashSet<>();
5.操作多对多关联关系
(1)通过Spring Data JPA编写多个多对多的关联查询。
Roles实体类
//fetch 放弃延时加载,立即加载
@ManyToMany(cascade = CascadeType.PERSIST,fetch = FetchType.EAGER)
// @JoinTable 配置中间表
// joinColumns 建立当前表在中间表中的外键字段
@JoinTable(name = "t_roles_menus",joinColumns = @JoinColumn(name = "role_id"),inverseJoinColumns = @JoinColumn(name = "menu_id"))
Set<Menus> menus=new HashSet<>();
Menus 实体类
@ManyToMany(mappedBy = "menus")
Set<Roles> roles=new HashSet<>();
测试类
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class ManyToManyTest {
@Autowired
RolesDao rolesDao;
@Test
public void test(){
//创建roles对象
Roles roles=new Roles();
roles.setRolename("超级管理员");
//创建menus对象
Menus menus1=new Menus();
menus1.setMenusname("xxx管理");
menus1.setFatherid(-1);
menus1.setMenusurl(null);
Menus menus2=new Menus();
menus2.setMenusname("用户管理员");
menus2.setFatherid(1);
menus2.setMenusurl(null);
//建立关联关系
roles.getMenus().add(menus1);
roles.getMenus().add(menus2);
menus1.getRoles().add(roles);
menus2.getRoles().add(roles);
//保存数据
this.rolesDao.save(roles);
}
/**
* 查询数据
*/
@Test
public void test2(){
Roles roles = this.rolesDao.findOne(2);
System.out.println("角色信息"+roles);
Set<Menus> menus = roles.getMenus();
for (Menus menu:menus){
System.out.println("菜单信息"+menu);
}
}
}
6.Spring Data Redis-介绍
(1)什么是Spring Data Redis?

7.Redis安装
(1)阐述Redis的安装过程。
1、 安装 gcc 编译器
yum install gcc-c++
2、 解压安装包
tar -zxf redis-3.0.0.tar.gz
3、 进入解压目录进行编译
cd redis-3.0.0
make
4、 将 Redis 安装到指定目录
make PREFIX=/usr/local/redis install
5、 启动 Redis
5.1 前置启动
默认的是前置启动:./redis-server
5.2 后置启动
先将 redis.conf 文件拷贝到 redis 的安装目录
cp redis.conf /usr/local/redis/bin
编辑 redis.conf 文件修改:daemonize yes
启动: ./redis-server redis.conf
查看 redis 进程:ps aux|grep redis
关闭后置启动的 Redis:./redis-cli shutdown
8.Spring整合Spring Data Redis创建项目
(1)创建Java Project项目,并导入于Spring Data Redis整合相关的jar包

9.配置Spring整合Spring Data Redis
(1)在Spring的配置文件中整合Spring Data Redis。
<!-- Redis模板对象 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="jedisConnectionFactory"/>
<!-- 序列化器:能够把我们储存的key与value做序列化处理的对象 -->
<!-- 配置默认的序列化器 -->
<!-- keySerializer、valueSerializer 配置Redis中的String类型key与value的序列化器 -->
<!-- HashKeySerializer、HashValueSerializer 配置Redis中的Hash类型key与value的序列化器 -->
<property name="keySerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
<property name="valueSerializer">
<bean class="org.springframework.data.redis.serializer.StringRedisSerializer"/>
</property>
</bean>
10.测试整合
(1)在项目中使用Junit测试整合,通过RedisTemplate向Redis中添加一条数据
。
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:applicationContext.xml")
public class RedisTest {
@Autowired
private RedisTemplate<String, Object> redisTemplate;
/**
* 添加键值对
*/
@Test
public void test1(){
this.redisTemplate.opsForValue().set("key", "test");
}
11.存取实体对象
(1)通过Spring Data Redis中的JDK序列化器将对一个对象添加到Redis中。
/**
* 添加Users
*/
@Test
public void test3(){
Users users=new Users();
users.setId(1);
users.setName("rr");
users.setAge(18);
//更换序列化器
this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
this.redisTemplate.opsForValue().set("users", users);
}
(2)通过Spring Data Redis中的JDK序列化器查询Redis中的数据。
/**
* 获取Users
*/
@Test
public void test4(){
//更换序列化器
this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
Users users = (Users)this.redisTemplate.opsForValue().get("users");
System.out.println(users);
}
12.以JSON格式存取实体对象
(1)通过Spring Data Redis中的Jackson2序列化器将对一个对象添加到Redis中。
/**
* 存json格式数据到redis中:需要更换value的序列化器
*/
@Test
public void test5(){
Users users=new Users();
users.setAge(20);
users.setId(2);
users.setName("jj");
this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));
this.redisTemplate.opsForValue().set("usersjson",users);
}
(2)通过Spring Data Redis中的Jackson2序列化器查询Redis中的数据。
/**
* 从redis中取数据
*/
@Test
public void test6(){
this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));
Users usersjson =(Users) this.redisTemplate.opsForValue().get("usersjson");
System.out.println(usersjson);
}

本文详细介绍了SpringDataJPA的基本用法,包括自定义Repository接口、一对一、一对多及多对多关联关系的创建与操作。同时,深入探讨了SpringDataRedis的整合与应用,涵盖安装配置、实体对象存取及JSON格式存储。
1万+

被折叠的 条评论
为什么被折叠?



