1、环境搭建
-
步骤一:修改pom文件,更新依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>
-
步骤二:修改yml文件,配置 mongo连接字符串
spring: data: mongodb: uri: mongodb://root:1234@localhost:27017/admin
-
步骤三:编写 JavaBean,配置文档对应集合
package com.tqyl.domain; import lombok.Data; import org.springframework.data.annotation.Id; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.data.mongodb.core.mapping.Field; /** * @author 庭前云落 * @Date 2020/6/16 8:50 * @description */ @Data @Document(collection = "teacher") public class Teacher { @Id private String teacherId; @Field("username") private String username; private String password; private Integer age; public Teacher() { } public Teacher(String teacherId, String username, String password, Integer age) { this.teacherId = teacherId; this.username = username; this.password = password; this.age = age; } }
-
步骤四:编写 dao,继承MongoRepository
package com.tqyl.dao; import com.tqyl.domain.Teacher; import org.springframework.data.mongodb.repository.MongoRepository; import java.util.List; /** * @author 庭前云落 * @Date 2020/6/16 8:51 * @description */ public interface TeacherDao extends MongoRepository<Teacher,String> { public List<Teacher> findByUsername(String username); }
-
步骤五:编写启动类,使用@ComponentScan扫描 dao
package com.tqyl; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; /** * @author 庭前云落 * @Date 2020/6/16 8:52 * @description */ @SpringBootApplication @ComponentScan(basePackages = "com.tqyl.dao") public class TestApplication { public static void main(String[] args) { SpringApplication.run(TestApplication.class,args); } }
-
步骤六:编写测试类,获得 dao 实现类
@RunWith(SpringRunner.class) @SpringBootTest(classes = TestApplication.class) public class TestRepository { @Resource private TeacherDao teacherDao; }
2、基础操作
2.1、查询所有
@Test
public void testFindAll(){
//查询
List<Teacher> list = teacherDao.findAll();
System.out.println(list);
}
2.2、排序查询
@Test
public void testDemo01(){
//排序
//List<Teacher> list = teacherRepository.findAll(Sort.by("password"));
List<Teacher> list = teacherDao.findAll(Sort.by(Sort.Order.desc("password")));
for (Teacher teacher : list) {
System.out.println(teacher);
}
}
2.3、分页
- 分页基本操作
@Test
public void testDemo02(){
//分页
int page = 0; //从0开始
int size = 2;
Page<Teacher> teacherPage = teacherDao.findAll(PageRequest.of(page, size));
//处理分页数据
//1 获得分页内容
List<Teacher> list = teacherPage.getContent();
//2 获得总记录数
long total = teacherPage.getTotalElements();
System.out.println("总条数:" + total);
for (Teacher teacher : list) {
System.out.println(teacher);
}
}
- 分页 jdk8 ForEach
@Test
public void testDemo03() {
//分页
int page = 0; //从0开始
int size = 2;
Page<Teacher> teacherPage = teacherDao.findAll(PageRequest.of(page, size));
//遍历数据
// JDK8提供forEach,使用箭头函数进行遍历
teacherPage.forEach(teacher -> System.out.println(teacher) );
// 打印简化版
teacherPage.forEach(System.out::println);
}
2.5、添加
@Test
public void testDemo04(){
//准备数据
Teacher teacher = new Teacher();
teacher.setUsername("王五");
teacher.setPassword("666777");
teacher.setAge(30);
//插入数据
teacherDao.insert( teacher );
}
2.6、通过ID查询
@Test
public void testDemo05(){
//通过id查询
Optional<Teacher> optional = teacherDao.findById("5ee83ccf9d1c6904d8768ca8");
//Optional 用于统一规范空指针异常处理
if(optional.isPresent()){ // teacher != null
Teacher teacher = optional.get();
System.out.println(teacher);
} else {
System.out.println("没有数据");
}
}
2.7、更新
- 更新采用save方法
- 如果数据存在,将发生更新操作
- 如果数据不存在,将发生添加操作
@Test
public void testDemo06(){
//更新操作
//1 查询
Optional<Teacher> optional = teacherDao.findById("5ee83ccf9d1c6904d8768ca8");
if(optional.isPresent()) {
//2 修改数据
Teacher teacher = optional.get();
teacher.setUsername("王武");
//3 更新
teacherDao.save(teacher);
}
}
2.8、删除
- deleteById() :通过id删除
- deleteAll() :删除所有
@Test
public void testDemo07(){
//删除
teacherDao.deleteById("5ee83ccf9d1c6904d8768ca8");
}
2.9、自定义dao
- 在dao中,可以通过约定进行条件查询
- 前缀:findBy
- 查询条件:字段名
- 关键字:And、Or、Like 等
- TeacherRepository
public List<Teacher> findByUsername(String username);
@Test
public void testDemo08(){
//自定义查询
List<Teacher> list = teacherRepository.findByUsername("tom");
System.out.println(list);
}
来源:oschina
链接:https://my.oschina.net/tingqianyunluo/blog/4313731