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);
        }
    }
}
简单的插入新数据,删除数据,打印数据。最后执行结果如下:

SpringBoot持久化层操作支持(二)NOSQL篇

SpringBoot持久化层操作支持(二)NOSQL篇

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=0
dao层

@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"));
    }}








相关文章:

  • 2021-04-13
  • 2022-12-23
  • 2021-04-09
  • 2021-06-28
  • 2021-06-14
  • 2022-01-09
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-05
  • 2021-09-09
  • 2021-12-19
  • 2022-12-23
  • 2022-12-23
  • 2021-09-03
  • 2021-08-06
相关资源
相似解决方案