mongodb4.0集成spring4.3
mongodb版本:4.2.24
spring版本:4.3.11.RELEASE
项目框架:ssm
pom文件:
<dependency> <groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>2.14.3</version>
</dependency>
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-mongodb</artifactId>
<version>1.10.7.RELEASE</version>
</dependency>
applicationContext-mongodb.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation=" http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo-1.0.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">
<mongo:mongo replica-set="${mongo.hostport}">
<mongo:options connections-per-host="${mongo.connectionsPerHost}"
threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}" connect-timeout="${mongo.connectTimeout}"
auto-connect-retry="true"
socket-keep-alive="true"
socket-timeout="${mongo.socketTimeout}"
slave-ok="true"
write-number="1"
write-timeout="0"
write-fsync="true" />
</mongo:mongo>
<!-- 使用用户名密码 -->
<!-- <mongo:db-factory username="${mongo.username}" password="${mongo.password}"
dbname="${mongo.databaseName}" mongo-ref="mongo"/>-->
<!-- 不使用用户名密码 -->
<mongo:db-factory dbname="${mongo.databaseName}" mongo-ref="mongo"/>
<bean id="MongoTemplate"
class="org.springframework.data.mongodb.core.MongoTemplate">
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/>
</bean>
</beans>
config.properties
mongo.hostport=ip:端口
mongo.connectionsPerHost=8
mongo.threadsAllowedToBlockForConnectionMultiplier=4
mongo.connectTimeout=1000
mongo.socketTimeout=15000
mongo.username=admin
mongo.password=123456
#DataBaseName
mongo.authenticationDbname=admin
mongo.databaseName=admin
使用:
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.domain.Sort;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.data.mongodb.core.query.Criteria;
import org.springframework.data.mongodb.core.query.Query;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.datasource.DriverManagerDataSource;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@Controller
public class MongodbController {
@Autowired
private MongoOperations mongoTemplate;
@RequestMapping(value = "/mongodb/test1", method = RequestMethod.GET)
@ResponseBody
public ResponseData testMongodb() {
JdbcTemplate jdbcTemplateMysql = getMysqlTemplate();
String mtMaterialLot = "select * from tableb_name t";
List<MtMaterialLot> mtMaterialLots = new ArrayList<>();
mtMaterialLots = jdbcTemplateMysql.query(mtMaterialLot, new BeanPropertyRowMapper<>(MtMaterialLot.class));
/*List<Student> studentList=new ArrayList<>();
for(int i=0;i<=1000000;i++){
Student student=new Student();
student.setAge(300+i);
student.setJonDate(new Date());
student.setNumber(200.00);
student.setName("w"+i);
studentList.add(student);
}*/
long begin=System.currentTimeMillis();
mongoTemplate.insertAll(mtMaterialLots);
long end=System.currentTimeMillis();
System.out.println("耗时:"+(end-begin));
return new ResponseData();
}
private JdbcTemplate getMysqlTemplate() {
String dbName = "db";
String driverClassName = "com.mysql.jdbc.Driver";
DriverManagerDataSource dataSource = new DriverManagerDataSource();
dataSource.setDriverClassName(driverClassName);
dataSource.setUrl("jdbc:mysql://" + "ip" + ":" + "3306" + "/" + dbName + "?useSSL=false&useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true&autoReconnect=true");
dataSource.setUsername("root");
dataSource.setPassword("mysql");
return new JdbcTemplate(dataSource);
}
@RequestMapping(value = "/mongodb/test/query", method = RequestMethod.GET)
@ResponseBody
public ResponseData testMongodbQuery() {
ResponseData responseData = new ResponseData();
try {
Criteria criteria = new Criteria();
// 进行查询的字段类型必须和实体类中一样,建议使用dto实体类方式传值
// 普通查询//
/*criteria.and("age").equals("18");*/
Query query = new Query(criteria);
// 排序
Sort sort = new Sort(new Sort.Order(Sort.Direction.ASC, "age"));
query.with(sort);
// 分页 从1 开始,查询10条
query.skip(0).limit(3);
List<Student> mongoDemoDTOList = mongoTemplate.find(query,
Student.class);
responseData.setRows(mongoDemoDTOList);
} catch (Exception e) {
e.printStackTrace();
}
return responseData;
}
}