一.整合redis

1.1 建立实体类

@Entity
@Table(name="user")
public class User implements Serializable {@Id@GeneratedValue(strategy=GenerationType.AUTO)private Long id;private String name;@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")private Date createDate;@JsonBackReference        //防止json的重复引用问题private Department department;private Set<Role> roles;public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public Date getCreateDate() {return createDate;}public void setCreateDate(Date createDate) {this.createDate = createDate;}public Department getDepartment() {return department;}public void setDepartment(Department department) {this.department = department;}public Set<Role> getRoles() {return roles;}public void setRoles(Set<Role> roles) {this.roles = roles;}@Overridepublic String toString() {return "User [id=" + id + ", name=" + name + ", createDate=" + createDate + ", department=" + department+ ", roles=" + roles + "]";}}

1.2 建立Redis的配置类

  首先导入pom.xml相应的依赖

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-redis</artifactId>
</dependency>

  在springboot中,没有去提供直接操作Redis的Repository,但是我们可以使用RedisTemplate去访问Redis.想要去使用RedisTemplate,首先需要完成一些必要的配置.这里使用配置类去完成.

  在application.properties中建立Redis的相关配置:

  建立配置类,配置RedisTemplate,而要使用RedisTemplate还需要配置RedisConnectionFactory:

@ConfigurationProperties("application.properties")
@Configuration
public class RedisConfig {@Value("${spring.redis.hostName}")private String hostName;@Value("${spring.redis.port}")private Integer port;@Beanpublic RedisConnectionFactory redisConnectionFactory() {JedisConnectionFactory cf = new JedisConnectionFactory();  cf.setHostName(hostName);  cf.setPort(port); cf.afterPropertiesSet();  return cf;  }@Beanpublic RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {StringRedisTemplate template=new StringRedisTemplate(factory);Jackson2JsonRedisSerializer jackson2JsonRedisSerializer=new Jackson2JsonRedisSerializer(Object.class);ObjectMapper om=new ObjectMapper();om.setVisibility(PropertyAccessor.ALL,JsonAutoDetect.Visibility.ANY);om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);jackson2JsonRedisSerializer.setObjectMapper(om);template.setValueSerializer(jackson2JsonRedisSerializer);template.afterPropertiesSet();return template;}
}

1.3 建立UserRedis类,它实现了与Redis的交互

  注意,在UserRedis中,使用了Redis的数据结构中最常用的key-value都是字符串的形式,采用Gson将对象转化为字符串然后存放到redis中.

@Repository
public class UserRedis {@Autowiredprivate RedisTemplate<String, String> redisTemplate;public void add(String key,User user) {Gson gson=new Gson();redisTemplate.opsForValue().set(key,gson.toJson(user));}public void add(String key,List<User> users) {Gson gson=new Gson();redisTemplate.opsForValue().set(key,gson.toJson(users));}public User get(String key ) {Gson gson=new Gson();User user=null;String userStr=redisTemplate.opsForValue().get(key);if(!StringUtils.isEmpty(userStr))user=gson.fromJson(userStr, User.class);return user;}public List<User> getList(String key) {Gson gson=new Gson();List<User> users=null;String listJson=redisTemplate.opsForValue().get(key);if(!StringUtils.isEmpty(listJson)) {users=gson.fromJson(listJson,new TypeToken<List<User>>(){}.getType());}return users;}public void delete(String key) {redisTemplate.opsForValue().getOperations().delete(key);}
}

1.4 建立UserController类

  它自动注入了UserRedis类,通过不同的url实现了向redis存储数据,获取数据的功能.

@Controller
public class UserController {@AutowiredUserRedis userRedis;@RequestMapping("/user/testRedisSave")public String testRedis() {Department department=new Department();department.setName("开发部");Role role=new Role();role.setName("admin");User user=new User();user.setName("hlhdidi");user.setCreateDate(new Date());user.setDepartment(department);Set<Role> roles=new HashSet<>();roles.add(role);user.setRoles(roles);userRedis.delete(this.getClass().getName()+":username:"+user.getName());userRedis.add(this.getClass().getName()+":username:"+user.getName(), user);return null;}@RequestMapping("/user/testRedisGet")public String testRedis2() {User user=userRedis.get(this.getClass().getName()+":username:hlhdidi");System.out.println(user);return null;}
}

  先访问localhost:8080/user/testRedisSave,再访问localhost:8080/user/testRedisGet,即可测试成功!

二.整合MongoDB

  MongoDB是一种文档类型的NoSql数据库.它内部有三个层次的概念,分别为数据库,集合,文档.使用springboot可以非常方便的整合MongoDB

2.1 建立mongo.properties配置文件

  

  导入依赖:

<dependency><groupId>org.pegdown</groupId><artifactId>pegdown</artifactId><version>1.4.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-hateoas</artifactId></dependency><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId></dependency>

2.2 建立MongoConfig配置类,完成对于MongoDB的配置

@Configuration
@EnableMongoRepositories(basePackages={"com.hlhdidi.springboot.mongo"})//MongoRepository的扫描包
@PropertySource("classpath:mongo.properties")//注入配置文件属性
public class MongoConfig extends AbstractMongoConfiguration{@Autowiredprivate Environment env;@Overrideprotected String getDatabaseName() {return env.getRequiredProperty("mongo.name");}@Override@Beanpublic Mongo mongo() throws Exception {ServerAddress serverAddress=new ServerAddress(env.getRequiredProperty("mongo.host"));List<MongoCredential> credentials=new ArrayList<>();return new MongoClient(serverAddress, credentials);}}

2.3 建立SysUser实体类.

  该实体类需要被存储到MongoDB数据库中.

@Document(collection="user")//配置collection的名称,如果没有将会自动建立对应的Collection
public class SysUser {@Idprivate String userId;@NotNull @Indexed(unique=true)private String username;@NotNullprivate String password;@NotNullprivate String name;@NotNullprivate String email;@NotNullprivate Date registrationDate=new Date();private Set<String> roles=new HashSet<>();public SysUser(){}@PersistenceConstructorpublic SysUser(String userId, String username, String password, String name, String email, Date registrationDate,Set<String> roles) {super();this.userId = userId;this.username = username;this.password = password;this.name = name;this.email = email;this.registrationDate = registrationDate;this.roles = roles;}public String getUserId() {return userId;}public void setUserId(String userId) {this.userId = userId;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public Date getRegistrationDate() {return registrationDate;}public void setRegistrationDate(Date registrationDate) {this.registrationDate = registrationDate;}public Set<String> getRoles() {return roles;}public void setRoles(Set<String> roles) {this.roles = roles;}@Overridepublic String toString() {return "SysUser [userId=" + userId + ", username=" + username + ", password=" + password + ", name=" + name+ ", email=" + email + ", registrationDate=" + registrationDate + ", roles=" + roles + "]";}}

2.4 建立SysUserRepository

  由于springboot已经帮我们提供了操作MongoDB数据库的API,因此直接继承对应的类即可(和JPA一致)

@Repository
public interface SysUserRepository extends MongoRepository<SysUser, String>{}

2.5 测试

测试类先向MongoDB中存储了一个实体类对象,随后获取指定对象的指定Collections下面的所有文档

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes={MongoConfig.class})
@FixMethodOrder
public class MongoTest {@AutowiredSysUserRepository repository;@Beforepublic void setup() {Set<String> roles=new HashSet<>();roles.add("manage");SysUser sysUser=new SysUser("1", "hlhdidi", "123", "xiaohulong", "email@com.cn", new Date(), roles);repository.save(sysUser);}@Testpublic void findAll() {List<SysUser> users=repository.findAll();for(SysUser user:users) {System.out.println(user);}}
}

转载于:https://www.cnblogs.com/hlhdidi/p/6347719.html

springboot学习笔记-3 整合redismongodb相关推荐

  1. SpringBoot学习笔记(7)-整合Mybatis

    文章目录 一.配置mybatis依赖 二.配置application.properties 三.在启动类上加@MapperScan注解 四.配置资源文件读取 五.结合SpringMVC完成测试 整合环 ...

  2. SpringBoot学习笔记(16)----SpringBoot整合Swagger2

    Swagger 是一个规范和完整的框架,用于生成,描述,调用和可视化RESTful风格的web服务 http://swagger.io Springfox的前身是swagger-springmvc,是 ...

  3. 2.6 springBoot学习笔记(2.6)——- 整合mybatisPlus

    更多文章 更多系列文章在个人网站 springBoot学习系列笔记文章 springBoot学习笔记(1)-- 搭建springBoot项目 文章目录 更多文章 springBoot学习系列笔记文章 ...

  4. SpringBoot学习笔记(4)----SpringBoot中freemarker、thymeleaf的使用

    1. freemarker引擎的使用 如果你使用的是idea或者eclipse中安装了sts插件,那么在新建项目时就可以直接指定试图模板 如图: 勾选freeMarker,此时springboot项目 ...

  5. SpringBoot学习笔记(9)----SpringBoot中使用关系型数据库以及事务处理

    在实际的运用开发中,跟数据库之间的交互是必不可少的,SpringBoot也提供了两种跟数据库交互的方式. 1. 使用JdbcTemplate 在SpringBoot中提供了JdbcTemplate模板 ...

  6. SpringBoot(学习笔记)

    SpringBoot学习笔记 从今天开始就进入微服务阶段 一些小问题 1.HelloWorld 1.1回顾什么是Spring 1.2什么是SpringBoot 1.3微服务架构 2.第一个Spring ...

  7. SpringBoot 学习笔记

    SpringBoot 学习笔记 文章目录 SpringBoot 学习笔记 1. SpringBoot简介 1.1 什么是Spring 1.2 Spring 是如何简化Java开发的 1.3 什么是 S ...

  8. springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题

    springboot学习笔记:12.解决springboot打成可执行jar在linux上启动慢的问题 参考文章: (1)springboot学习笔记:12.解决springboot打成可执行jar在 ...

  9. SpringBoot学习笔记(3):静态资源处理

    SpringBoot学习笔记(3):静态资源处理 在web开发中,静态资源的访问是必不可少的,如:Html.图片.js.css 等资源的访问. Spring Boot 对静态资源访问提供了很好的支持, ...

最新文章

  1. Python中的Lambda表达式
  2. 深度学习 Optimizer 梯度下降优化算法总结
  3. 禁止冒名顶替Exchange用户发送邮件
  4. 常考数据结构与算法:容器盛水问题
  5. Python实现学生信息管理(面向对象)
  6. python-给对象添加属性与方法
  7. 解决 IntelliJ 乱码问题
  8. 生产环境服务器部署kvm虚拟化6,KVM虚拟化平台环境部署
  9. 【C语言】C语言从入门到精通 | 第3章 数据类型(一)— 自学笔记
  10. 嵌入式开发笔记——调试组件SEGGER_HardFaultHandle
  11. Pigsty是什么?
  12. 技术系统进化法则包括_八大技术系统进化法则主要包括哪些
  13. 加权算数平均大于等于几何平均
  14. CodeForce-476D-Dreamoon and Sets
  15. C#使用WebProxy实现代理访问webservice
  16. oracle如何把误删的数据恢复,oracle误删数据恢复方法小结
  17. 第6.3章:ARM架构下手动编译StarRocks(拓展篇)
  18. 作数学题应不该用计算机,【中考备考】最新关于初一年级数学题在线解答汇总讲解...
  19. Secret的三种形式
  20. 一些符号及颜色的英语写法总结

热门文章

  1. LIRe 源代码分析 5:提取特征向量[以颜色布局为例]
  2. C语言堆栈入门 —— 堆和栈的区别
  3. html如何隐藏二进制字符串,如何用二进制代码隐藏字符串?
  4. 第 45 届国际大学生程序设计竞赛(ICPC)亚洲区域赛(南京)签到题K Co-prime Permutation,L Let‘s Play Curling
  5. 玩家国度ROG 幻14 拆机 升级 换固态 换配件 教程
  6. 分段式多级离心泵_溧阳耐磨矿用多级泵水泵厂
  7. sql join on和不用join区别_图解 SQL 各种 JOIN,太有用了!
  8. git版本回退(3)
  9. 二叉查找树--插入、查找、遍历、打印、删除(重点)
  10. Java用swing实现的贪吃蛇