zoukankan      html  css  js  c++  java
  • MongoDb学习(四)--Repository

    在学习这个的时候。关于Repository的映射。在备注xml的时候出现了错误。

    错误有点坑。以后写的时候注意一点,在学习的时候。用的mongo的jar包版本比较低。

    然而本机操作的时候,用的是最新版。其xml的配置发生的变化。

    关于配置的信息。在配置的时候去官网查一下当前版本的使用方法。

    这里记录一下spring-data-mongodb 的使用方法。增删改查。语法使用等。

    通过学习这个。发现spring的好处。降低了开发门槛。而且可以提高开发的速度。还是不错的。

    在前面几次学习中。都是使用的原生方法进行查询。这次换一种全新的方法。

    基本操作就是创建一个自定义Repository的接口。让他继承与CrudRepository。

    然后里面有附带的一些增删改查的方法。

    这个最大的好处就是我们只用关注业务逻辑和接口的定义即可。

    开发的时候,可以直接写接口。然后不用去写实现类,除非有复杂的方法有实现。

    当然,这个接口里面的方法不是随便写的。而是有标准与规范的。具体写法,可以去官网查询api文档

    当前版本

          <dependency>
        <groupId>org.springframework.data</groupId>
        <artifactId>spring-data-mongodb</artifactId>
        <version>2.1.3.RELEASE</version>
      </dependency>

    配置文件,版本不同,配置文件不同

    <?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.xsd
              http://www.springframework.org/schema/data/mongo http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
              http://www.springframework.org/schema/beans
              http://www.springframework.org/schema/beans/spring-beans.xsd">
    
        <!-- Default bean name is 'mongo' -->
        
            <mongo:mongo-client host="localhost" port="27017"/>
    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
      <constructor-arg ref="mongoClient"/>
      <constructor-arg name="databaseName" value="chaoba"/>
    </bean>
    
       <mongo:repositories base-package="SpringMogo.mongo" />
    </beans>
        List<Chaoba> findByName(String name);//根据条件查询
        List<Chaoba> findByNameAndSex(String name,String sex);//and查询
        List<Chaoba> findByNameAndSexAndAge(String name,String sex,String age);//多个and查询
        List<Chaoba> findByNameOrSex(String name,String sex);//or查询
        List<Chaoba> findByName(String name,Pageable page);//分页查询
        List<Chaoba> findByName(String name,Sort sort);//排序查询
        
        List<Chaoba> findTop2ByName(String name);//查询前几条

    本次学习代码如下

    ChaobaRepository类
    package SpringMogo.mongo;
    
    import java.util.List;
    
    import org.springframework.data.domain.Pageable;
    import org.springframework.data.domain.Sort;
    import org.springframework.data.repository.CrudRepository;
    import org.springframework.stereotype.Repository;
    
    @Repository("ChaobaRepository")
    public interface ChaobaRepository extends CrudRepository<Chaoba, String> {
    
        List<Chaoba> findByName(String name);// 根据条件查询
    
        List<Chaoba> findByNameAndSex(String name, String sex);// and查询
    
        List<Chaoba> findByNameAndSexAndAge(String name, String sex, String age);// 多个and查询
    
        List<Chaoba> findByNameOrSex(String name, String sex);// or查询
    
        List<Chaoba> findByName(String name, Pageable page);// 分页查询
    
        List<Chaoba> findByName(String name, Sort sort);// 排序查询
    
        List<Chaoba> findTop2ByName(String name);// 查询前几条
    
    }
    实体类
    package SpringMogo.mongo;
    
    import org.springframework.data.annotation.Id;
    import org.springframework.data.mongodb.core.mapping.Document;
    import org.springframework.data.mongodb.core.mapping.Field;
    
    @Document(collection = "chaoba1")
    public class Chaoba {
        @Id
        private String id;
        @Field("name")
        private String name;
        @Field("sex")
        private String sex;
        @Field("age")
        private String age;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public String getSex() {
            return sex;
        }
    
        public void setSex(String sex) {
            this.sex = sex;
        }
    
    }
    测试类
    package SpringMogo.mongo;
    
    import java.util.List;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    import org.springframework.data.domain.Sort;
    import org.springframework.data.domain.Sort.Order;
    
    /**
     * Hello world!
     *
     */
    public class App {
    
        private static ChaobaRepository chaobaRepository;
    
        static {
            chaobaRepository = (ChaobaRepository) new ClassPathXmlApplicationContext("classpath:spring.xml")
                    .getBean("ChaobaRepository");
        }
    
        public static void main(String[] args) {
            System.out.println(chaobaRepository.count());
    
            // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸");
            // And查询
            // List<Chaoba> result=
            // chaobaRepository.findByNameAndSexAndAge("chaoba4565","男","20");
            // Or查询
            // List<Chaoba> result= chaobaRepository.findByNameOrSex("chaoba4565","女");
            // 分页查询
            // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸",new PageRequest(1,
            // 5));
            // 排序查询
            // List<Chaoba> result= chaobaRepository.findByName("暮雪超霸",new
            // Sort(Order.asc("title")));
    
            // Top查询
            List<Chaoba> result = chaobaRepository.findTop2ByName("暮雪超霸");
    
            for (Chaoba chaoba : result) {
                System.out.println(chaoba.getName());
            }
        }
    }
    一万年太久,只争朝夕!
  • 相关阅读:
    [ARC117F]Gateau
    [ARC117D]Miracle Tree
    [loj3504]支配
    [gym102511K]Traffic Blights
    [loj3501]图函数
    [loj3503]滚榜
    [loj3500]矩阵游戏
    [loj2135]幻想乡战略游戏
    [cf720D]Slalom
    [cf1349E]Slime and Hats
  • 原文地址:https://www.cnblogs.com/chaoba/p/10060433.html
Copyright © 2011-2022 走看看