NoSQL:非关系型数据库。拥有关系型数据库没有的优点。
1.springboot整合mongodb
pom文件:
<dependencies> <!-- mongodb支持 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <!--H2数据库支持 --> <dependency> <groupId>com.h2database</groupId> <artifactId>h2</artifactId> </dependency> <!--JPA支持--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> </dependency> <!--嵌入式Mongodb--> <!--<dependency>--> <!--<groupId>de.flapdoodle.embed</groupId>--> <!--<artifactId>de.flapdoodle.embed.mongo</artifactId>--> <!--</dependency>--> </dependencies>
配置配置文件:
spring.data.mongodb.uri=mongodb://localhost:27017/test #spring.data.mongodb.port=27017 #spring.data.mongodb.authentication-database= #spring.data.mongodb.database=test #spring.data.mongodb.field-naming-strategy= #spring.data.mongodb.grid-fs-database= #spring.data.mongodb.host=localhost #spring.data.mongodb.password= #spring.data.mongodb.repositories.enabled=true #spring.data.mongodb.username=
实体
@Data public class Customer { @Id public String id; public String firstName; public String lastName; public Customer() {} public Customer(String firstName, String lastName) { this.firstName = firstName; this.lastName = lastName; } @Override public String toString() { return String.format( "Customer[id=%s, firstName='%s', lastName='%s']", id, firstName, lastName); } }service层:
public interface CustomerRepository extends MongoRepository<Customer, String> { Customer findByFirstName(String firstName); List<Customer> findByLastName(String lastName); }其中MongoRepository和Jpa的类似,MongoRepository的实现如下:
@NoRepositoryBean public interface MongoRepository<T, ID extends Serializable> extends PagingAndSortingRepository<T, ID>, QueryByExampleExecutor<T> { <S extends T> List<S> save(Iterable<S> var1); List<T> findAll(); List<T> findAll(Sort var1); <S extends T> S insert(S var1); <S extends T> List<S> insert(Iterable<S> var1); <S extends T> List<S> findAll(Example<S> var1); <S extends T> List<S> findAll(Example<S> var1, Sort var2); }这里,Springboot对Mongodb的支持,采用直接编写的方式。实现CommandLineRunner接口,实现run方法。在一运行的时候就执行对《》Mongodb操作的代码
@SpringBootApplication public class SpringbootMongodbApplication implements CommandLineRunner { @Autowired private CustomerRepository repository; public static void main(String[] args) { SpringApplication.run(SpringbootMongodbApplication.class, args); } @Override public void run(String... args) throws Exception { // 情况所有 repository.deleteAll(); System.out.println(repository.count()); // 保存 repository.save(new Customer("JinWen1", "ZiShang1")); repository.save(new Customer("JinWen2", "ZiShang2")); System.out.println("-------------------------------"); for (Customer customer : repository.findAll()) { System.out.println(customer.getId()); } System.out.println("--------------------------------"); System.out.println(repository.findByFirstName("JinWen1")); System.out.println("--------------------------------"); for (Customer customer : repository.findByLastName("ZiShang2")) { System.out.println(customer); } } }简单的插入新数据,删除数据,打印数据。最后执行结果如下:
2.SpringBoot对Redis的支持
pow文件:
<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> </dependencies>配置文件:
spring.redis.host=localhost spring.redis.port=6379 #spring.redis.password= spring.redis.database=1 spring.redis.pool.max-active=8 spring.redis.pool.max-wait=-1 spring.redis.pool.max-idle=500 spring.redis.pool.min-idle=0 spring.redis.timeout=0dao层
@Repository public class RedisDao { @Autowired private StringRedisTemplate template; public void setKey(String key,String value){ ValueOperations<String, String> ops = template.opsForValue(); //1分钟过期 ops.set(key,value,1, TimeUnit.MINUTES); } public String getValue(String key){ ValueOperations<String, String> ops = this.template.opsForValue(); return ops.get(key); } }测试:
@RunWith(SpringRunner.class) @SpringBootTest public class RedisDaoTest { public static Logger logger= LoggerFactory.getLogger(RedisDaoTest.class); @Autowired RedisDao redisDao; @Test public void testRedis(){ redisDao.setKey("name","JinWen"); redisDao.setKey("age","21"); logger.info(redisDao.getValue("name")); logger.info(redisDao.getValue("age")); }}