直接上代码!
pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>
MongoMethod
package org.jeecg.modules.mongodbRelease.constant;
public class MongoMethod {
public static final String INSERT = "INSERT";
public static final String DELETE = "DELETE";
public static final String UPDATE = "UPDATE";
public static final String SELECT = "SELECT";
public static final String PAGE = "PAGE";
public static final String MONGOPage = "MONGOPage";
public static final String fuzzyPage = "fuzzyPage";
public static final String OMS_LOG = "oms_log";
}
FuzzyPage
package org.jeecg.modules.mongodbRelease.page;
import lombok.Data;
@Data
public class FuzzyPage {
//模糊查询时输入的字符串
public String InputStr;
//每页记录数
public Integer pageSize;
//页数
public Integer pageNum;
}
MongoPage
package org.jeecg.modules.mongodbRelease.page;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MongoPage<T> extends MyPage{
private long total;//总记录数
private List<T> list;//分页结果
public MongoPage(Integer pageNum, Integer pageSize){
this.pageNum=pageNum;
this.pageSize=pageSize;
}
public void setMongoPage(long total, List<T> list){
this.total=total;
this.list=list;
}
}
MyPage
package org.jeecg.modules.mongodbRelease.page;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.io.Serializable;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class MyPage implements Serializable {
protected Integer pageNum;//当前页
protected Integer pageSize;//页大小
}
IMongoService
package org.jeecg.modules.mongodbRelease.service;
import org.apache.poi.ss.formula.functions.T;
import org.jeecg.modules.mongodbRelease.page.FuzzyPage;
import org.jeecg.modules.mongodbRelease.page.MongoPage;
import org.jeecg.modules.mongodbRelease.page.MyPage;
import java.io.Serializable;
import java.util.List;
public interface IMongoService<T> {
/**
* 增
*/
boolean save(T entity);
boolean save(T entity,String collectionName);
boolean saveList(List<T> list);
boolean saveList(List<T> list,String collectionName);
/**
* 删
*/
boolean removeById(T entity);
boolean removeById(T entity,String collectionName);
/**
* 改,都是通过id
* @param keys 要修改的键名
* @param values 要修改的键值
* 相当于mysql中 update key1,key2,key3 set value1,value2,value3 where id=#{id} from collectionName
*/
boolean updateById(String[] keys, Object[] values, Serializable id, Class<?> clazz);
boolean updateById(String[] keys,Object[] values,Serializable id,String collectionName);
boolean updateById(String[] keys,Object[] values,Serializable id,Class<?> clazz,String collectionName);
/**
* 查
* @finById 就是根据id查询单条记录
* @findByMap 相当于条件查询,查询出符合条件的所有内容
* @findAll 查询表中所有记录
* @fields 表示需要查询的字段---参考mysql中 select key1,key2,key3 from collectionName
*/
T findById(Serializable id,Class<?> clazz);
T findById(Serializable id,Class<?> clazz,String collectionName);
T findById(Serializable id,String field,Class<?> clazz);
T findById(Serializable id,String field,Class<?> clazz,String collectionName);
List<T> findByMap(String[] keys,Object[] values,Class<?> clazz);
List<T> findByMap(String[] keys,Object[] values,Class<?> clazz,String collectionName);
List<T> findByMap(String[] keys,Object[] values,String field,Class<?> clazz);
List<T> findByMap(String[] keys,Object[] values,String field,Class<?> clazz,String collectionName);
List<T> findAll(Class<?> clazz);
List<T> findAll(Class<?> clazz,String collectionName);
List<T> findAll(String field,Class<?> clazz);
List<T> findAll(String field,Class<?> clazz,String collectionName);
/**
* 分页---无总记录数,只查一次
*/
List<T> page(MyPage myPage, Class<?> clazz);
List<T> page(MyPage myPage, Class<?> clazz,String collectionName);
List<T> page(MyPage myPage, String field,Class<?> clazz);
List<T> page(MyPage myPage, String field,Class<?> clazz,String collectionName);
/**
* 分页--有总记录数,查两次
*/
MongoPage page(MongoPage mongoPage, Class<?> clazz);
MongoPage page(MongoPage mongoPage, Class<?> clazz,String collectionName);
MongoPage page(MongoPage mongoPage,String field,Class<?> clazz);
MongoPage page(MongoPage mongoPage,String field, Class<?> clazz,String collectionName);
/**
* 模糊查询---分页
*/
List<T> fuzzyPage(MyPage myPage,Class<?> clazz,String inputStr,String[] keys);
List<T> fuzzyPage(MyPage myPage,Class<?> clazz,String collectionName,String inputStr,String[] keys);
List<T> fuzzyPage(MyPage myPage,Class<?> clazz, String inputStr,String[] keys,String field);
List<T> fuzzyPage(MyPage myPage,Class<?> clazz,String collectionName,String inputStr,String[] keys, String field);
/**
* 模糊查询---分页--有总记录数,查两次
*/
MongoPage fuzzyPage(FuzzyPage fuzzyPage, Class<?> clazz, String[] keys);
MongoPage fuzzyPage(FuzzyPage fuzzyPage, Class<?> clazz,String collectionName,String[] keys);
MongoPage fuzzyPage(FuzzyPage fuzzyPage,Class<?> clazz,String[] keys,String field);
MongoPage fuzzyPage(FuzzyPage fuzzyPage, Class<?> clazz,String collectionName,String[] keys,String field);
}
IMongoServiceImpl
package org.jeecg.modules.mongodbRelease.service.impl;
import org.jeecg.modules.mongodbRelease.constant.MongoMethod;
import org.jeecg.modules.mongodbRelease.page.FuzzyPage;
import org.jeecg.modules.mongodbRelease.page.MongoPage;
import org.jeecg.modules.mongodbRelease.page.MyPage;
import org.jeecg.modules.mongodbRelease.service.IMongoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Field;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.data.mongodb.core.query.Update;
import org.springframework.stereotype.Service;
import java.io.Serializable;
import java.util.List;
import java.util.regex.Pattern;
@Service
public class IMongoServiceImpl<T> implements IMongoService<T> {
@Autowired
private MongoTemplate mongoTemplate;
@Override
public boolean save(T entity) {
try{
mongoTemplate.save(entity);
mongoLogByConsole(MongoMethod.INSERT,entity.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean save(T entity, String collectionName) {
try{
mongoTemplate.save(entity,collectionName);
mongoLogByConsole(MongoMethod.INSERT,entity.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean saveList(List<T> list) {
try{
mongoTemplate.insertAll(list);
mongoLogByConsole(MongoMethod.INSERT,list.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean saveList(List<T> list, String collectionName) {
try{
mongoTemplate.insert(list,collectionName);
mongoLogByConsole(MongoMethod.INSERT,list.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean removeById(T entity) {
try{
mongoTemplate.remove(entity);
mongoLogByConsole(MongoMethod.DELETE,entity.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean removeById(T entity, String collectionName) {
try{
mongoTemplate.remove(entity,collectionName);
mongoLogByConsole(MongoMethod.DELETE,collectionName+":"+entity.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean updateById(String[] keys, Object[] values, Serializable id, Class<?> clazz) {
Criteria criteria= Criteria.where("_id").is(id);
Query query=new Query(criteria);
Update update=new Update();
for (int i = 0; i < keys.length; i++) {
update.set(keys[i],values[i]);
}
try{
mongoTemplate.updateFirst(query,update,clazz);
mongoLogByConsole(MongoMethod.UPDATE,update.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean updateById(String[] keys,Object[] values,Serializable id,String collectionName) {
Criteria criteria=Criteria.where("_id").is(id);
Query query=new Query(criteria);
Update update=new Update();
for (int i = 0; i < keys.length; i++) {
update.set(keys[i],values[i]);
}
try{
mongoTemplate.updateFirst(query,update,collectionName);
mongoLogByConsole(MongoMethod.UPDATE,update.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public boolean updateById(String[] keys,Object[] values,Serializable id,Class<?> clazz,String collectionName) {
Criteria criteria=Criteria.where("_id").is(id);
Query query=new Query(criteria);
Update update=new Update();
for (int i = 0; i < keys.length; i++) {
update.set(keys[i],values[i]);
}
try{
mongoTemplate.updateFirst(query,update,clazz,collectionName);
mongoLogByConsole(MongoMethod.UPDATE,update.toString());
return true;
}catch (Exception e){
e.printStackTrace();
return false;
}
}
@Override
public T findById(Serializable id,Class<?> clazz) {
T result;
try {
Criteria criteria = Criteria.where("_id").is(id);
Query query = Query.query(criteria);
result = (T) mongoTemplate.findOne(query, clazz);
mongoLogByConsole(MongoMethod.SELECT,result.toString());
return result;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public T findById(Serializable id, Class<?> clazz,String collectionName) {
T result;
try {
Criteria criteria = Criteria.where("_id").is(id);
Query query = Query.query(criteria);
result = (T) mongoTemplate.findOne(query, clazz,collectionName);
mongoLogByConsole(MongoMethod.SELECT,result.toString());
return result;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public T findById(Serializable id,String fieldString,Class<?> clazz) {
T result;
try {
Criteria criteria = Criteria.where("_id").is(id);
Query query = Query.query(criteria);
Field field=query.fields();
field.include(fieldString);
result = (T) mongoTemplate.findOne(query, clazz);
mongoLogByConsole(MongoMethod.SELECT,result.toString());
return result;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public T findById(Serializable id,String fieldString,Class<?> clazz,String collectionName) {
T result;
try {
Criteria criteria = Criteria.where("_id").is(id);
Query query = Query.query(criteria);
Field field=query.fields();
field.include(fieldString);
result = (T) mongoTemplate.findOne(query, clazz,collectionName);
mongoLogByConsole(MongoMethod.SELECT,result.toString());
return result;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findByMap(String[] keys,Object[] values,Class<?> clazz) {
Criteria criteria = null;
List<T> list;
try {
for (int i = 0; i < keys.length; i++) {
if (i == 0) {
criteria = Criteria.where(keys[i]).is(values[i]);
} else {
criteria.and(keys[i]).is(values[i]);
}
}
Query query = Query.query(criteria);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findByMap(String[] keys,Object[] values,Class<?> clazz,String collectionName) {
Criteria criteria = null;
List<T> list;
try {
for (int i = 0; i < keys.length; i++) {
if (i == 0) {
criteria = Criteria.where(keys[i]).is(values[i]);
} else {
criteria.and(keys[i]).is(values[i]);
}
}
Query query = Query.query(criteria);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findByMap(String[] keys,Object[] values,String fieldString,Class<?> clazz) {
Criteria criteria = null;
List<T> list;
try {
for (int i = 0; i < keys.length; i++) {
if (i == 0) {
criteria = Criteria.where(keys[i]).is(values[i]);
} else {
criteria.and(keys[i]).is(values[i]);
}
}
Query query = Query.query(criteria);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findByMap(String[] keys,Object[] values,String fieldString,Class<?> clazz,String collectionName) {
Criteria criteria = null;
List<T> list;
try {
for (int i = 0; i < keys.length; i++) {
if (i == 0) {
criteria = Criteria.where(keys[i]).is(values[i]);
} else {
criteria.and(keys[i]).is(values[i]);
}
}
Query query = Query.query(criteria);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findAll(Class<?> clazz) {
List<T> list;
try{
list= (List<T>) mongoTemplate.findAll(clazz);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findAll(Class<?> clazz,String collectionName) {
List<T> list;
try{
list= (List<T>) mongoTemplate.find(new Query(),clazz,collectionName);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findAll(String fieldString,Class<?> clazz) {
List<T> list;
try{
Query query = new Query(new Criteria());
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> findAll(String fieldString,Class<?> clazz,String collectionName) {
List<T> list;
try{
Query query = new Query(new Criteria());
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.SELECT,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> page(MyPage myPage, Class<?> clazz) {
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
Query query=new Query(new Criteria());
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.PAGE,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> page(MyPage myPage, Class<?> clazz, String collectionName) {
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
Query query=new Query(new Criteria());
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.PAGE,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> page(MyPage myPage,String fieldString, Class<?> clazz) {
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
Query query=new Query(new Criteria());
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.PAGE,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> page(MyPage myPage,String fieldString, Class<?> clazz,String collectionName) {
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
Query query=new Query(new Criteria());
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.PAGE,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage page(MongoPage mongoPage, Class<?> clazz) {
Integer pageSize=mongoPage.getPageSize();
Integer pageNum=mongoPage.getPageNum();
long total;
List<T> list;
try{
Query query=new Query(new Criteria());
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.MONGOPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage page(MongoPage mongoPage, Class<?> clazz,String collectionName) {
Integer pageSize=mongoPage.getPageSize();
Integer pageNum=mongoPage.getPageNum();
long total;
List<T> list;
try{
Query query=new Query(new Criteria());
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.MONGOPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage page(MongoPage mongoPage,String fieldString, Class<?> clazz) {
Integer pageSize=mongoPage.getPageSize();
Integer pageNum=mongoPage.getPageNum();
long total;
List<T> list;
try{
Query query=new Query(new Criteria());
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.MONGOPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage page(MongoPage mongoPage,String fieldString, Class<?> clazz,String collectionName) {
Integer pageSize=mongoPage.getPageSize();
Integer pageNum=mongoPage.getPageNum();
long total;
List<T> list;
try{
Query query=new Query(new Criteria());
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.MONGOPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> fuzzyPage(MyPage myPage,Class<?> clazz,String inputStr,String[] keys){
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.fuzzyPage,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> fuzzyPage(MyPage myPage,Class<?> clazz,String collectionName,String inputStr,String[] keys){
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.fuzzyPage,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> fuzzyPage(MyPage myPage,Class<?> clazz, String inputStr,String[] keys,String fieldString){
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoLogByConsole(MongoMethod.fuzzyPage,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public List<T> fuzzyPage(MyPage myPage,Class<?> clazz,String collectionName,String inputStr,String[] keys, String fieldString){
Integer pageSize=myPage.getPageSize();
Integer pageNum=myPage.getPageNum();
List<T> list;
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoLogByConsole(MongoMethod.fuzzyPage,list.toString());
return list;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage fuzzyPage(FuzzyPage fuzzyPage, Class<?> clazz, String[] keys) {
String inputStr=fuzzyPage.getInputStr();
Integer pageSize=fuzzyPage.getPageSize();
Integer pageNum=fuzzyPage.getPageNum();
long total;
List<T> list;
MongoPage mongoPage=new MongoPage(pageNum,pageSize);
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.fuzzyPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage fuzzyPage(FuzzyPage fuzzyPage,Class<?> clazz, String collectionName,String[] keys) {
String inputStr=fuzzyPage.getInputStr();
Integer pageSize=fuzzyPage.getPageSize();
Integer pageNum=fuzzyPage.getPageNum();
long total;
List<T> list;
MongoPage mongoPage=new MongoPage(pageNum,pageSize);
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.fuzzyPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage fuzzyPage(FuzzyPage fuzzyPage, Class<?> clazz, String[] keys, String fieldString) {
String inputStr=fuzzyPage.getInputStr();
Integer pageSize=fuzzyPage.getPageSize();
Integer pageNum=fuzzyPage.getPageNum();
long total;
List<T> list;
MongoPage mongoPage=new MongoPage(pageNum,pageSize);
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.fuzzyPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
@Override
public MongoPage fuzzyPage(FuzzyPage fuzzyPage, Class<?> clazz, String collectionName,String[] keys, String fieldString) {
String inputStr=fuzzyPage.getInputStr();
Integer pageSize=fuzzyPage.getPageSize();
Integer pageNum=fuzzyPage.getPageNum();
long total;
List<T> list;
MongoPage mongoPage=new MongoPage(pageNum,pageSize);
try{
if(judgeLength(keys.length)){
return null;
}
Query query=new Query(getCriteria(inputStr,keys));
//返回总记录数
total=mongoTemplate.count(query,clazz);
//默认值为5,
pageSize = pageSize < 0 ? 5 : pageSize;
query.limit(pageSize);
query.skip((pageNum - 1) * pageSize);
Field field=query.fields();
field.include(fieldString);
list= (List<T>) mongoTemplate.find(query,clazz,collectionName);
mongoPage.setMongoPage(getTotalSum(total,pageSize),list);
mongoLogByConsole(MongoMethod.fuzzyPage,mongoPage.toString());
return mongoPage;
}catch (Exception e){
e.printStackTrace();
return null;
}
}
/**
* 用于模糊查询忽略大小写
* @param str
* @return
*/
private Pattern getPattern(String str) {
Pattern pattern = Pattern.compile("^.*" + str + ".*$", Pattern.CASE_INSENSITIVE);
return pattern;
}
/**
* 用于模糊查询
* @param keys 匹配的字段数组
* @param inputStr 输入的字符
* @return
*/
private Criteria getCriteria(String inputStr,String[] keys){
Pattern pattern=getPattern(inputStr);
Criteria criteria=null;
switch (keys.length){
case 1:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern));
break;
case 2:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern)
);
break;
case 3:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern)
);
break;
case 4:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern)
);
break;
case 5:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern),
Criteria.where(keys[4]).regex(pattern)
);
break;
case 6:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern),
Criteria.where(keys[4]).regex(pattern),
Criteria.where(keys[5]).regex(pattern)
);
break;
case 7:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern),
Criteria.where(keys[4]).regex(pattern),
Criteria.where(keys[5]).regex(pattern),
Criteria.where(keys[6]).regex(pattern)
);
break;
case 8:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern),
Criteria.where(keys[4]).regex(pattern),
Criteria.where(keys[5]).regex(pattern),
Criteria.where(keys[6]).regex(pattern),
Criteria.where(keys[7]).regex(pattern)
);
break;
case 9:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern),
Criteria.where(keys[4]).regex(pattern),
Criteria.where(keys[5]).regex(pattern),
Criteria.where(keys[6]).regex(pattern),
Criteria.where(keys[7]).regex(pattern),
Criteria.where(keys[8]).regex(pattern)
);
break;
case 10:criteria = Criteria.where("").orOperator(
Criteria.where(keys[0]).regex(pattern),
Criteria.where(keys[1]).regex(pattern),
Criteria.where(keys[2]).regex(pattern),
Criteria.where(keys[3]).regex(pattern),
Criteria.where(keys[4]).regex(pattern),
Criteria.where(keys[5]).regex(pattern),
Criteria.where(keys[6]).regex(pattern),
Criteria.where(keys[7]).regex(pattern),
Criteria.where(keys[8]).regex(pattern),
Criteria.where(keys[9]).regex(pattern)
);
break;
}
return criteria;
}
/**
* 用于判断keys长度
*/
private boolean judgeLength(int length){
if(length>10||length==0){
return true;
}else{
return false;
}
}
/**
* 获取总页数
* @param total
* @param pageSize
* @return
*/
private long getTotalSum(long total,Integer pageSize){
long totalSum=0;
if(total%pageSize==0){//能够整除
totalSum=total/pageSize;
}else{
totalSum=total/pageSize+1;
}
return totalSum;
}
/**
* Mongodb控制台日志
* @param method
* @param toString
*/
private void mongoLogByConsole(String method,String toString){
String outPut="MongoDB";
switch (method){
case MongoMethod.INSERT:
outPut=outPut+" insert:"+toString;
break;
case MongoMethod.DELETE:
outPut=outPut+" delete:"+toString;
break;
case MongoMethod.UPDATE:
outPut=outPut+" update:"+toString;
break;
case MongoMethod.SELECT:
outPut=outPut+" query:"+toString;
break;
case MongoMethod.PAGE:
outPut=outPut+" page:"+toString;
break;
case MongoMethod.MONGOPage:
outPut=outPut+" mongoPage:"+toString;
break;
case MongoMethod.fuzzyPage:
outPut=outPut+" fuzzyPage:"+toString;
break;
}
System.out.println(outPut);
}
}