Springboot_mongodb
1.依赖
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
<version>2.0.1.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
</dependencies>
2.dao
package com.xiya.dao;
import com.xiya.entity.User;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.Pageable;
import java.util.List;
/**
* User持久层
*
* @author xiaoke
* @date 2021年4月23日22:44:20
*/
public interface UserDao {
/**
* 保存user
*
* @param user user对象
*/
void save(User user);
/**
* 批量保存user
*
* @param userList user对象集合
*/
void saveAll(List<User> userList);
/**
* 根据id查询user
*
* @param id 主键id
* @return User
*/
User queryById(String id);
/**
* 根据用户名查询用户集合
*
* @param userName 用户名
* @return list
*/
List<User> queryUsersByUserName(String userName);
/**
* 查询所有用户
*
* @param example 条件对象
* @param pageable 分页对象
* @return list
*/
List<User> findAllByCondition(Example<User> example, Pageable pageable);
}
3.daoimpl
package com.xiya.dao;
import com.xiya.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.stereotype.Repository;
import java.util.List;
/**
* dao实现
*
* @author xiaoke
* @date 2021年4月23日22:45:53
*/
@Repository
public class UserDaoImpl implements UserDao{
@Autowired
private MongoTemplate mongoTemplate;
/**
* 保存user
*
* @param user user对象
*/
@Override
public void save(User user) {
mongoTemplate.save(user);
}
/**
* 批量保存user
*
* @param userList user对象集合
*/
@Override
public void saveAll(List<User> userList) {
mongoTemplate.insert(userList, User.class);
}
/**
* 根据id查询user
*
* @param id 主键id
* @return User
*/
@Override
public User queryById(String id) {
Query query = new Query(Criteria.where("_id").is(id));
return mongoTemplate.findOne(query, User.class);
}
/**
* 根据用户名查询用户集合
*
* @param userName 用户名
* @return list
*/
@Override
public List<User> queryUsersByUserName(String userName) {
Query query = new Query(Criteria.where("username").is(userName));
return mongoTemplate.find(query, User.class);
}
/**
* 查询所有用户
*
* @param example 条件对象
* @param pageable 分页对象
* @return list
*/
@Override
public List<User> findAllByCondition(Example<User> example, Pageable pageable) {
Criteria criteria = Criteria.byExample(example);
Query query = new Query(criteria);
return mongoTemplate.find(query.with(pageable).with(new Sort(new Sort.Order("id"))), User.class);
}
}
4.service
package com.xiya.service;
import com.xiya.entity.User;
import java.util.List;
/**
* User服务接口
*
* @author xiaoke
* @date 2021年4月23日21:43:05
*/
public interface UserService {
/**
* 保存User
*
* @param user user对象
*/
void save(User user);
/**
* 批量保存用户
*
* @param userList user集合
*/
void saveAll(List<User> userList);
/**
* 查询详情
*
* @param id id
* @return user
*/
User findById(String id);
/**
* 根据用户名查询用户集合
*
* @param userName 用户名
* @return list
*/
List<User> findByUserName(String userName);
/**
* 分页查询
*
* @param pageNum 页码
* @param pageSize 每页显示的条数
* @return list
*/
List<User> findAll(Integer pageNum, Integer pageSize, User user);
}
4.serviceImpl
package com.xiya.service.impl;
import com.xiya.dao.UserDao;
import com.xiya.entity.User;
import com.xiya.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Example;
import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* User服务实现类
*
* @author xiaoke
* @date 2021年4月23日21:43:30
*/
@Service
public class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
/**
* 保存User
*
* @param user user对象
*/
@Override
public void save(User user) {
userDao.save(user);
}
/**
* 批量保存用户
*
* @param userList user集合
*/
@Override
public void saveAll(List<User> userList) {
userDao.saveAll(userList);
}
/**
* 查询详情
*
* @param id id
* @return user
*/
@Override
public User findById(String id) {
return userDao.queryById(id);
}
/**
* 根据用户名查询用户集合
*
* @param userName 用户名
* @return list
*/
@Override
public List<User> findByUserName(String userName) {
return userDao.queryUsersByUserName(userName);
}
/**
* 分页查询
*
* @param pageNum 当前页码
* @param pageSize 每页显示的条数
* @return list
*/
@Override
public List<User> findAll(Integer pageNum, Integer pageSize, User user) {
if (pageNum <= 0) {
pageNum = 1;
}
pageNum = pageNum -1;
Pageable pageable = PageRequest.of(pageNum, pageSize);
ExampleMatcher exampleMatcher=ExampleMatcher.matching()
.withMatcher("username", ExampleMatcher.GenericPropertyMatchers.contains());
Example<User> example = Example.of(user,exampleMatcher);
return userDao.findAllByCondition(example, pageable);
}
}
- 可惜了编译不过去,需要java9