文章目录
1. SpringBoot整合Spring Data Mongodb
docker pull mongo
docker run --name mymongo -p 27017:27017 -d mongo
SQL术语/概念 | MongoDB术语/概念 | 解释/说明 |
---|---|---|
database | database | 数据库 |
table | collection | 数据库表/集合 |
row | document | 数据记录行/文档 |
column | field | 数据字段/域 |
index | index | 索引 |
table joins | 表连接,MongoDB不支持 | |
primary key | primary key | 主键,MongoDB自动将_id字段设置为主键 |
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
spring:
application:
name: mongodb-server
data:
mongodb:
host: ****** # 主机地址
port: 27017 # 端口
database: test # 数据库
server:
port: 9003
@Data
@Accessors(chain=true) //链式调用
@Document(collection="user") //指定集合
public class User implements Serializable {
@Id
private Integer _id;
private String name;
private String mobile;
private Date birthday;
}
UserRepository
继承MongoRepository
/**
* 用户的dao层的接口,实现MongoRepository
* 第一个泛型指定的是实体类,第二个指定的是主键Id的类型
*/
public interface UserRepository extends MongoRepository<User, Integer>{
}
@Service
@Transactional //开启事务
public class UserServiceImpl {
@Resource
private UserRepository userRepository; //注入
/**
* 添加用户
* @return
*/
public User addUser(User user){
User user2 = userRepository.save(user);
System.out.println(1/0);
return user2;
}
/**
* 批量添加
* @param users
* @return
*/
public List<User> addUserBatch(List<User> users){
List<User> user2 = userRepository.saveAll(users);
return user2;
}
/**
* 根据Id删除
* @param id
*/
public void deleteById(Integer id) {
userRepository.deleteById(id);
}
/**
* 更新数据,使用的还是save方法,相当于覆盖
* @param user
* @return
*/
public User update(User user) {
User user2 = userRepository.save(user);
return user2;
}
/**
* 根据Id获取信息
* @param id
* @return
*/
public User findById(Integer id) {
return userRepository.findById(id).get();
}
/**
* 查询全部
* @return
*/
public List<User> findAll(){
return userRepository.findAll();
}
/**
* 分页查询信息
* @param pageSize
* @param pageNum
* @return
*/
public List<User> findUserList(Integer pageNum,Integer pageSize){
Pageable pageable=new PageRequest(pageNum-1,pageSize);
Page<User> pages = userRepository.findAll(pageable);
if (pages.hasContent()) {
return pages.getContent();
}
return null;
}
}
import java.util.List;
import org.springframework.data.domain.Pageable;
import org.springframework.data.mongodb.repository.MongoRepository;
import com.techwells.study.domain.DynamicComment;
public interface DynamicCommentRepository extends MongoRepository<DynamicComment, Integer>{
/**
* 分页查询,先根据nickName筛选出结果,之后分页
* @param nickName 昵称
* @param pageable 分页
* @return
*/
List<DynamicComment> findByNickName(String nickName,Pageable pageable);
}
@Test
public void test4() {
//构建分页信息
Pageable pageable=new PageRequest(0, 2, Sort.Direction.DESC,"id");
List<DynamicComment> comments = dynamicRepository.findByNickName("爱撒谎的男孩",pageable);
for (DynamicComment dynamicComment : comments) {
System.out.println(dynamicComment);
}
}