Spring data mongodb使用
一、添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
二、创建实体类
import org.springframework.data.annotation.Id; import java.io.Serializable; import java.util.Date; /** * @Description 吐槽实体类 * @Author bofeng * @Date 2019/3/15 12:52 * @Version 1.0 */ public class Spit implements Serializable { @Id private String _id; private String content; private Date publishtime; private String userid; private String nickname; private Integer visits; private Integer thumbup; private Integer share; private Integer comment; private String state; private String parentid;
//getter and setter }
三、定义接口继承MongoRepository
/** * 吐槽数据访问层 */ public interface SpitDao extends MongoRepository<Spit,String> { }
四、引用接口
@Autowired private SpitDao spitDao;
五、默认基础方法
● 添加
@Test public void testInsert(){ //定义实体类 CmsPage cmsPage = new CmsPage(); cmsPage.setSiteId("s01"); cmsPage.setTemplateId("t01"); cmsPage.setPageName("测试页面"); cmsPage.setPageCreateTime(new Date()); List<CmsPageParam> cmsPageParams = new ArrayList<>(); CmsPageParam cmsPageParam = new CmsPageParam(); cmsPageParam.setPageParamName("param1"); cmsPageParam.setPageParamValue("value1"); cmsPageParams.add(cmsPageParam); cmsPage.setPageParams(cmsPageParams); cmsPageRepository.save(cmsPage); System.out.println(cmsPage); }
● 删除
//删除 @Test public void testDelete() { cmsPageRepository.deleteById("5b17a2c511fe5e0c409e5eb3"); }
● 修改
@Test public void testUpdate() { Optional<CmsPage> optional = cmsPageRepository.findById("5abefd525b05aa293098fca6"); //optional是jdk1.8引入的对象,作用是自带的isPresent方法可以非空判断 if (optional.isPresent()) { CmsPage cmsPage = optional.get(); cmsPage.setPageAliase("ccc"); CmsPage save = cmsPageRepository.save(cmsPage); System.out.println(save); } }
● 查所有
@Test public void testFindAll() { List<CmsPage> list = cmsPageRepository.findAll(); System.out.println(list); }
● 分页查询
@Test public void testFindPage() { int page = 0; //从0开始 int size = 10; Pageable pageable = PageRequest.of(page, size); Page<CmsPage> all = cmsPageRepository.findAll(pageable); System.out.println(all); }
● 自定义Dao方法。和SpringDataJpa一样
如下: 按照findByXXX,findByXXXAndYYY、countByXXXAndYYY等规则定义方法,实现查询操作。
public interface CmsPageRepository extends MongoRepository<CmsPage,String> { //根据页面名称查询 CmsPage findByPageName(String pageName); //根据页面名称和类型查询 CmsPage findByPageNameAndPageType(String pageName,String pageType); //根据站点和页面类型查询记录数 int countBySiteIdAndPageType(String siteId,String pageType); //根据站点和页面类型分页查询 Page<CmsPage> findBySiteIdAndPageType(String siteId,String pageType, Pageable pageable); }
● 使用原生mongodb命令操作
1.引入MongoTemplate
@Autowired private MongoTemplate mongoTemplate;
2.操作mongodb。例:用原生命令实现自增,防止执行多个语句影响效率
public void thumbUp(String spitId) { Query query = new Query(); query.addCriteria(Criteria.where("_id").is(spitId)); Update update = new Update(); update.inc("thumbup", 1); mongoTemplate.updateFirst(query, update, "spit"); }