Spring整合MongoDB

导包:

    <!--MongoDB核心包-->
        <dependency>
           <groupId>org.springframework.data</groupId>
           <artifactId>spring-data-commons</artifactId>
           <version>1.11.0.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.mongodb</groupId>
            <artifactId>mongo-java-driver</artifactId>
            <version>2.13.0</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.data</groupId>
            <artifactId>spring-data-mongodb</artifactId>
            <version>1.7.2.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-context</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>org.springframework</groupId>
                    <artifactId>spring-expression</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

配置文件:

1、mongodb-config.properties

mongo.host=***.***.***.***
mongo.port=20000
mongo.username=root
mongo.password=******
mongo.database=test
mongo.connectionsPerHost=8
mongo.maxWaitThread=4
mongo.connectTimeout=10000
mongo.maxWaitTime=1500
mongo.autoConnectRetry=true
mongo.socketKeepAlive= true
mongo.socketTimeout=1500
mongo.slaveOk=true
mongo.threadsAllowedToBlockForConnectionMultiplier=4

2、spring-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:context="http://www.springframework.org/schema/context"
       xmlns:mongo="http://www.springframework.org/schema/data/mongo"
       xsi:schemaLocation="http://www.springframework.org/schema/context
       http://www.springframework.org/schema/context/spring-context-3.0.xsd
       http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
       http://www.springframework.org/schema/data/mongo
       http://www.springframework.org/schema/data/mongo/spring-mongo.xsd">

    <context:component-scan base-package="com.ltmonitor.web.controller"/>  
    
    <!--1 .加载mongodb的属性配置文件 -->
    <context:property-placeholder location="classpath:mongodb-config.properties" ignore-unresolvable="true"/>
    
    <!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo-->
    <mongo:mongo id="mongo-client" host="${mongo.host}" port="${mongo.port}">
        <mongo:options connections-per-host="${mongo.connectionsPerHost}"
            threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
            connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
            auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"
            socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"
            write-number="1" write-timeout="0" write-fsync="true"/> 
    </mongo:mongo>
    <mongo:db-factory id="mongoFactory" dbname="${mongo.database}" username="${mongo.username}"
                      password="${mongo.password}" mongo-ref="mongo-client" />
    <!-- 配置mongodb的文档不包含_class值 -->
    <bean id="mappingContext"  
        class="org.springframework.data.mongodb.core.mapping.MongoMappingContext" />  
    <bean id="defaultMongoTypeMapper"  
        class="org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper">  
        <constructor-arg name="typeKey"><null/></constructor-arg>  
    </bean>  
    <bean id="mappingMongoConverter"  
        class="org.springframework.data.mongodb.core.convert.MappingMongoConverter">  
        <constructor-arg name="mongoDbFactory" ref="mongoFactory" />  
        <constructor-arg name="mappingContext" ref="mappingContext" />  
        <property name="typeMapper" ref="defaultMongoTypeMapper" />  
    </bean>
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        <constructor-arg name="mongoDbFactory" ref="mongoFactory"/>
        <constructor-arg name="mongoConverter" ref="mappingMongoConverter" />  
    </bean>
</beans>
 

测试案例

1、TestMongodbAction.java

@Controller
@RequestMapping("/testMongodb")
public class TestMongodbAction extends GenericAction{
    
    @Autowired
    private IUserMongoService userMongoService;

    @RequestMapping(value = "/get",method = RequestMethod.GET)
    public Object get(String name){
        name ="zt";
        UserMongodb user = userMongoService.get(name);
        return user;
    }
    
    @RequestMapping(value = "/getLists",method = RequestMethod.GET)
    public List<UserMongodb> getLists(){
        UserMongodb user = new UserMongodb();
        user.setName("zt");
        user.setAvatar("http03");
        List<UserMongodb> users = userMongoService.getLists(user);
        return users;
    }

    @RequestMapping(value = "/add",method = RequestMethod.GET)
    public Object add(){
        UserMongodb user = new UserMongodb();
        user.setName("123");
        user.setAvatar("http");
        userMongoService.add(user);
        return user;
    }

    @RequestMapping(value = "/update",method = RequestMethod.GET)
    public Object update(){
        UserMongodb user = new UserMongodb();
        user.setName("123");
        user.setAvatar("http1");
        userMongoService.update(user);
        return user;
    }

    @RequestMapping(value = "/delete",method = RequestMethod.GET)
    public void delete(String id){
        userMongoService.delete(id);
    }
}

2、IUserMongoService.java

public interface IUserMongoService {

    void add(UserMongodb user);

    void insert(List<UserMongodb> user);

    UserMongodb get(String name);

    UserMongodb update(UserMongodb user);

    void delete(String id);
    
    List<UserMongodb> getLists(UserMongodb user);
}

3、UserMongoService.java

@Service
public class UserMongoService implements IUserMongoService {

    @Autowired
    private MongoTemplate mongoTemplate;

    @Override
    public void add(UserMongodb user) {
        mongoTemplate.save(user);
    }

    @Override
    public UserMongodb get(String name) {
        Query sql = new Query(Criteria.where("name").is(name));
        return mongoTemplate.findOne(sql,UserMongodb.class);
    }

    @Override
    public List<UserMongodb> getLists(UserMongodb user) {
        Query sql = new Query(Criteria.where("name").is(user.getName()).where("avatar").is(user.getAvatar()));
        List<UserMongodb> mapList = mongoTemplate.find(sql, UserMongodb.class);
        return mapList;
    }
    
    @Override
    public void insert(List<UserMongodb> user) {
        mongoTemplate.insert(user,UserMongodb.class);
    }

    @Override
    public UserMongodb update(UserMongodb userMongodb) {
        Query query = new Query(Criteria.where("name").is(userMongodb.getName()));
        Update update = new Update();
        //Update update = Update.update("avatar",userMongodb.getAvatar());
        update.set("avatar",userMongodb.getAvatar());
        update.set("mobile",userMongodb.getMobile());
        //更新字段 只更新一个
        mongoTemplate.updateFirst(query,update,UserMongodb.class);
        return userMongodb;
    }

    @Override
    public void delete(String id) {
        Query query = new Query(new Criteria("_id").is(id));
        try {
            //mongoTemplate.findAllAndRemove(query,UserMongodb.class);
            mongoTemplate.remove(query,UserMongodb.class);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

4、UserMongodb.java

@Document
public class UserMongodb implements Serializable{
    private String id;
    private String mobile;
    private String name;
    private String avatar;
    public String getId() {
        return id;
    }
    public void setId(String id) {
        this.id = id;
    }
    public String getMobile() {
        return mobile;
    }
    public void setMobile(String mobile) {
        this.mobile = mobile;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAvatar() {
        return avatar;
    }
    public void setAvatar(String avatar) {
        this.avatar = avatar;
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值