创建dao文件
package com.xuecheng.manage_cms.dao;
import com.xuecheng.framework.domain.cms.CmsPage;
import org.springframework.data.mongodb.repository.MongoRepository;
public interface CmsPageRepository extends MongoRepository<CmsPage,String> {
}
这个dao文件去继承MongoRepository类,MongoRepository类中封装了很多操作数据库的方法
在test单元测试中,创建dao的测试类
@SpringBootTest会找包下边的spring-boot的启动类ManageCmsApplication
这个启动类里有很多扫描的设置,会扫描指定包下边的bin,加入spring容器,这时候就可以从容器中拿到CmsPageRepository这个dao文件 ,如下:
@Autowired
CmsPageRepository cmsPageRepository;
spring-data的mongodb虽然我们这里定义了接口,通过扫描cmsPageRepository这个接口,他会生成接口的代理对象,那么我们可以把代理对象注入到这个测试类当中。所以可以调用MongoRepository的方法。
运行结果
调试bug
注意坑
在查询mongo表中所有数据的时候,如果查询条件有时间,先确保此表中的所有时间格式一样。
我都在这个坑里呆了好久。
因为mongo的cms_page表中有个别数据的时间格式是整型数字,导致查询一直报错,No converter found capable of converting from type [java.lang.Double] to type [java.util.Date]
时间格式不对
所以把时间格式不对的数据,改为正确的时间格式ISODate(“2018-04-21T01:45:47.870+0000”),全部一样的数据格式,这样就不再报错
分页查询
import org.springframework.data.domain.Pageable;
//分页查询
@Test
public void testFindPage(){
//分页参数
int page = 1;//从0开始
int size = 10;
Pageable pageable = PageRequest.of(page,size);
Page<CmsPage> all = cmsPageRepository.findAll(pageable);
System.out.println(all);
}
数据库连接方式
server:
port: 31003
spring:
application:
name: xc-service-manage-cms
data:
mongodb:
uri: mongodb://fyf:123456@localhost:27017
database: xc_cms
如果连接数据库超时,改为以下连接方法,如果还不行,建议创建一个新的账户密码并指明读写权限和可以操作的数据库