MongoDB学习(四)MongoDB整合SpringData
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);
}
以上是 MongoDB学习(四)MongoDB整合SpringData 的全部内容, 来源链接: utcz.com/z/534173.html