mongodb整合spring之增删改查

来源:互联网 发布:linux的vim配置文件 编辑:程序博客网 时间:2024/05/22 05:15

闲着无事,研究一下mongo,之前一直都是直接些方法调用方法,一直没有和spring整合过,今天研究一下,原来整合后的语法简单多了,同时也看到了spring的强大之处.


废话不多说看我spring-mongo.xml文件配置:

<!-- 获取配置资源 -->    <context:property-placeholder location="classpath:mongodb-context-config.properties" />    <mongo:mongo id="mongo" 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的工厂,通过它来取得mongo实例,dbname为mongodb的数据库名,没有的话会自动创建 -->    <mongo:db-factory dbname="gang" mongo-ref="mongo" />    <!-- mongodb的主要操作对象,所有对mongodb的增删改查的操作都是通过它完成 -->    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">        <constructor-arg name="mongoDbFactory" ref="mongoDbFactory" />    </bean>    <!-- 映射转换器,扫描back-package目录下的文件,根据注释,把它们作为mongodb的一个collection的映射 -->    <mongo:mapping-converter base-package="com.lv.gang.entity" />    <!-- mongodb bean的仓库目录,会自动扫描扩展了MongoRepository接口的接口进行注入 -->    <mongo:repositories base-package="com.lv.gang.mapper" />    <context:annotation-config />    <context:component-scan base-package="com.lv.gang.service,com.lv.gang.mapper" />


maven相关依赖:

<dependency>      <groupId>org.mongodb</groupId>      <artifactId>mongo-java-driver</artifactId>      <version>2.10.1</version>      <type>jar</type>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>org.springframework.data</groupId>      <artifactId>spring-data-mongodb</artifactId>      <version>1.2.1.RELEASE</version>      <type>jar</type>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>org.springframework.data</groupId>      <artifactId>spring-data-mongodb-cross-store</artifactId>      <version>1.2.1.RELEASE</version>      <type>jar</type>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>org.springframework.data</groupId>      <artifactId>spring-data-mongodb-log4j</artifactId>      <version>1.2.1.RELEASE</version>      <type>jar</type>      <scope>compile</scope>    </dependency>


控制层方法:

@Controller@RequestMapping("test")public class TestController {    @Autowired    private MongoService mongoService;    @RequestMapping("add")    public void add(){        User u=new User();        u.setUserId(UUID.randomUUID().toString());        u.setAge(11);        u.setUserName("gang");        mongoService.addUser(u);    }    @RequestMapping("select")    public void selectUser(){        mongoService.seleteUser();    }    @RequestMapping("findList")    public void findList(){        mongoService.findList();    }}


service层方法:

@Servicepublic class MongoService {    @Autowired    private MongoMapper mongoMapper;    public void addUser(User u) {        mongoMapper.addUser(u);    }    public void seleteUser() {        mongoMapper.selectUser();    }    public void findList() {        mongoMapper.findList();    }}


dao层方发:

@Repositorypublic class MongoMapperImpl implements MongoMapper{    @Autowired    private MongoTemplate mongoTemplate;    /**     * mongo的增加方法     * @param u     */    @Override    public void addUser(User u) {        mongoTemplate.insert(u);    }    /**     * mongo的条件查询方法     */    @Override    public void selectUser() {        Query query=new Query();        query.addCriteria(new Criteria("userId").is("3eafc603-62fb-43f7-817d-0e34180b591f"));        User one = mongoTemplate.findOne(query, User.class);        System.out.print(one.getAge()+one.getUserId()+one.getUserName());    }    /**     * mongo的分页查询方法     */    @Override    public void findList() {        Query query=new Query();        query.with(new Sort(new Sort.Order(Sort.Direction.ASC,"_id")));        query.skip(0).limit(2);        List<User> users = mongoTemplate.find(query, User.class);        System.out.print(users);    }}


dao层全部实现:

 @Override      public List<Person> findAll() {          // TODO Auto-generated method stub          return getMongoTemplate().find(new Query(), Person.class);           }        /* (non-Javadoc)      * @see com.mongo.dao.AbstractRepository#findAndModify(java.lang.String)      */      @Override      public void findAndModify(String id) {          // TODO Auto-generated method stub          //new Query(Criteria.where("id").is(id)), new Update().inc("age", 3)                    getMongoTemplate().updateFirst(new Query(Criteria.where("id").is(id)), new Update().inc("age", 3));        }        /* (non-Javadoc)      * @see com.mongo.dao.AbstractRepository#findByRegex(java.lang.String)      */      @Override      public List<Person> findByRegex(String regex) {          // TODO Auto-generated method stub           Pattern pattern = Pattern.compile(regex,Pattern.CASE_INSENSITIVE);               Criteria criteria = new Criteria("name").regex(pattern.toString());                 return getMongoTemplate().find(new Query(criteria), Person.class);           }        /* (non-Javadoc)      * @see com.mongo.dao.AbstractRepository#findOne(java.lang.String)      */      @Override      public Person findOne(String id) {          // TODO Auto-generated method stub           return getMongoTemplate().findOne(new Query(Criteria.where("id").is(id)), Person.class);           }        /* (non-Javadoc)      * @see com.mongo.dao.AbstractRepository#insert(com.mongo.bean.Person)      */      @Override      public void insert(Person person) {          // TODO Auto-generated method stub          getMongoTemplate().insert(person);         }        /* (non-Javadoc)      * @see com.mongo.dao.AbstractRepository#removeAll()      */      @Override      public void removeAll() {          // TODO Auto-generated method stub          List<Person> list = this.findAll();             if(list != null){                 for(Person person : list){                     getMongoTemplate().remove(person);                 }             }           }        /* (non-Javadoc)      * @see com.mongo.dao.AbstractRepository#removeOne(java.lang.String)      */      @Override      public void removeOne(String id) {          // TODO Auto-generated method stub          Criteria criteria = Criteria.where("id").in(id);             if(criteria == null){                  Query query = new Query(criteria);                  if(query != null && getMongoTemplate().findOne(query, Person.class) != null)                      getMongoTemplate().remove(getMongoTemplate().findOne(query, Person.class));             }           }        /**      * @return the mongoTemplate      */      public MongoTemplate getMongoTemplate() {          return mongoTemplate;      }        /**      * @param mongoTemplate the mongoTemplate to set      */      public void setMongoTemplate(MongoTemplate mongoTemplate) {          this.mongoTemplate = mongoTemplate;      }    }


数据库数据:




项目demo的地址:


http://download.csdn.net/download/qq_38665235/10034040