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

来源:互联网 发布:淘宝绑定支付宝 编辑:程序博客网 时间:2024/06/12 00:45

  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=

实体

@Datapublic 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的实现如下:

@NoRepositoryBeanpublic 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操作的代码

@SpringBootApplicationpublic 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=localhostspring.redis.port=6379#spring.redis.password=spring.redis.database=1spring.redis.pool.max-active=8spring.redis.pool.max-wait=-1spring.redis.pool.max-idle=500spring.redis.pool.min-idle=0spring.redis.timeout=0
dao层

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








原创粉丝点击