posts - 496,comments - 227,trackbacks - 0
package com.duxiu.mongodb;

import org.springframework.beans.factory.FactoryBean;
import org.springframework.data.mongodb.core.convert.DefaultMongoTypeMapper;
import org.springframework.data.mongodb.core.convert.MappingMongoConverter;
import org.springframework.data.mongodb.core.convert.MongoTypeMapper;

public class MongoConverterEnhanceFactoryBean implements FactoryBean<MappingMongoConverter> {
    
private MappingMongoConverter mongoConverter;
    
    
public void setMongoConverter(MappingMongoConverter mongoConverter) {
        
this.mongoConverter = mongoConverter;
    }
    
    @Override
    
public MappingMongoConverter getObject() throws Exception {
        MongoTypeMapper typeMapper 
= new DefaultMongoTypeMapper(null);
        mongoConverter.setTypeMapper(typeMapper);
        
return mongoConverter;
    }
    
    @Override
    
public Class<?> getObjectType() {
        
return MappingMongoConverter.class;
    }
    
    @Override
    
public boolean isSingleton() {
        
return true;
    }
    
}

package com.duxiu.mongodb.po;

import java.io.Serializable;

@Document(collection 
= "userDoc")
@CompoundIndexes({ @CompoundIndex(def 
= "{areaid:1}", name = "areaidName"),
        @CompoundIndex(def 
= "{areaid:1,schoolid:1}", name = "areaschool") })
public class User implements Serializable {
    
private static final long serialVersionUID = 1393678160766939903L;
    @Id
    @Indexed
    
private Integer areaid;
    @Indexed
    
private Integer schoolid;
    
private Integer userid;
    
private String phoneNum;
    
private String userName;
    
private Integer count;
    
    
public User() {
    }
    
    
public User(Integer areaid, Integer schoolid, Integer userid, String phoneNum, String userName) {
        
this.areaid = areaid;
        
this.schoolid = schoolid;
        
this.userid = userid;
        
this.phoneNum = phoneNum;
        
this.userName = userName;
    }
    
    
public Integer getAreaid() {
        
return areaid;
    }
    
    
public void setAreaid(Integer areaid) {
        
this.areaid = areaid;
    }
    
    
public Integer getSchoolid() {
        
return schoolid;
    }
    
    
public void setSchoolid(Integer schoolid) {
        
this.schoolid = schoolid;
    }
    
    
public Integer getUserid() {
        
return userid;
    }
    
    
public void setUserid(Integer userid) {
        
this.userid = userid;
    }
    
    
public String getPhoneNum() {
        
return phoneNum;
    }
    
    
public void setPhoneNum(String phoneNum) {
        
this.phoneNum = phoneNum;
    }
    
    
public String getUserName() {
        
return userName;
    }
    
    
public void setUserName(String userName) {
        
this.userName = userName;
    }
    
    
public Integer getCount() {
        
return count;
    }
    
    
public void setCount(Integer count) {
        
this.count = count;
    }
    
}

package com.duxiu.mongodb;

import org.springframework.data.domain.Page;

@RepositoryDefinition(idClass 
= Integer.class, domainClass = User.class)
public interface MyRepository {
    
    
public Page<User> findByUserid(int userid, Pageable pageable);
    
}

package com.duxiu.mongodb;

import org.springframework.data.domain.Page;

public interface UserRepository extends MongoRepository<User, Integer> {
    
    
public Page<User> findBySchoolidAndUserid(int schoolid, int userid, Pageable pageable);
    
}

package com.duxiu.mongodb;

import javax.annotation.Resource;

import org.junit.Test;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.mongodb.core.MongoOperations;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.AbstractJUnit4SpringContextTests;

import com.duxiu.mongodb.po.User;

@org.springframework.data.convert.WritingConverter
@ContextConfiguration(locations 
= { "classpath:/applicationContext.xml" })
public class MongoDBTest extends AbstractJUnit4SpringContextTests {
    
    @Resource(name 
= "mongoTemplate")
    
private MongoOperations mongoOperation;
    
    @Resource
    
private UserRepository userRepository;
    
    @Resource
    
private MyRepository userRepository1;
    
    @Test
    
public void testaa() {
        
// mongoOperation.dropCollection(User.class);
        
        User user1 
= new User(111"13552674285""simone");
        User user2 
= new User(122"13552674287""simone2");
        User user3 
= new User(323"13552674282""simone3");
        
// mongoOperation.save(user1);
        
// mongoOperation.save(user2);
        mongoOperation.save(user3);
        
        
// List<User> userList = mongoOperation.findAll(User.class);
        
// for (User u : userList) {
        
// System.out.println(u.getUserid());
        
// }
        
//
        
// System.out.println("=======================");
        
//
        
// List<User> userList = mongoOperation.find(new Query(Criteria.where("userid").is(3)), User.class);
        
// for (User u : userList) {
        
// System.out.println(u.getUserid());
        
// }
        
        
// GroupBy groupBy = GroupBy.key("userid");
        
// groupBy.initialDocument("{count: 0}");
        
// groupBy.reduceFunction("function(obj,prev){ prev.count++;}");
        
//
        
// GroupByResults<User> groupByResults = mongoOperation.group(mongoOperation.getCollectionName(User.class),
        
// groupBy, User.class);
        
// Iterator<User> iu = groupByResults.iterator();
        
// while (iu.hasNext()) {
        
// User u = iu.next();
        
// System.out.println(u.getCount());
        
// }
        
// System.out.println(groupByResults.getRawResults().toString());
        
//
        
// List<IndexInfo> list = mongoOperation.indexOps(User.class).getIndexInfo();
        
// for (IndexInfo i : list) {
        
// System.out.println(i.getName());
        
// }
    }
    
    @Test
    
public void testbb() {
        PageRequest pageRequest 
= new PageRequest(010);
        Page
<User> user = userRepository.findBySchoolidAndUserid(23, pageRequest);
        System.out.println(user.getContent());
        System.out.println(
"=======================");
        User user2 
= new User(122"13552674287""simone2");
        User u 
= userRepository.save(user2);
        System.out.println(u.getUserid());
        System.out.println(
"=======================");
        user 
= userRepository1.findByUserid(3, pageRequest);
        System.out.println(user.getContent());
    }
}

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

    
<mongo:mongo host="localhost" port="27017">
        
<mongo:options connections-per-host="8"
            threads-allowed-to-block-for-connection-multiplier
="4"
            connect-timeout
="1000" max-wait-time="1500" auto-connect-retry="true"
            socket-keep-alive
="true" socket-timeout="1500" slave-ok="true"
            write-number
="1" write-timeout="0" write-fsync="true" />
    
</mongo:mongo>

    
<!-- mongo的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->
    
<mongo:db-factory dbname="testDB" mongo-ref="mongo" />

    
<mongo:mapping-converter />

    
<bean id="simpleMongoConverter" class="com.duxiu.mongodb.MongoConverterEnhanceFactoryBean">
        
<property name="mongoConverter" ref="mappingConverter" />
    
</bean>

    
<bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
        
<constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />
        
<constructor-arg name="mongoConverter" ref="simpleMongoConverter" />
    
</bean>

    
<!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->
    
<mongo:repositories base-package="com.duxiu.mongodb" />

</beans>

# Output pattern : date [thread] priority category - message
log4j.rootLogger
=DEBUG, Console, RollingFile

#Console
log4j.appender.Console
=org.apache.log4j.ConsoleAppender
log4j.appender.Console.layout
=org.apache.log4j.PatternLayout
log4j.appender.Console.layout.ConversionPattern
=%d [%t] MobileLibHomePage %-5p [%C.%M:%L] - %m%n

#RollingFile
log4j.appender.RollingFile
=org.apache.log4j.DailyRollingFileAppender
log4j.appender.RollingFile.File
=logs/mini-web.log
log4j.appender.RollingFile.layout
=org.apache.log4j.PatternLayout
log4j.appender.RollingFile.layout.ConversionPattern
=%d [%t] MobileLibHomePage %-5p [%C.%M:%L] - %m%n

#Project defalult level
log4j.logger.org.springframework.data
=DEBUG

posted on 2012-03-29 16:11 SIMONE 阅读(1660) 评论(0)  编辑  收藏 所属分类: JAVA

只有注册用户登录后才能发表评论。


网站导航: