美文网首页我爱编程
使用SpringMVC实现对MongoDB简单的增删改查

使用SpringMVC实现对MongoDB简单的增删改查

作者: 小弦弦喵喵喵 | 来源:发表于2018-02-03 15:16 被阅读0次

    之前我们介绍了MongoDB以及如何在Robo 3T中通过图形化界面或是在Shell中通过nosql语句进行增删改查,但是在实际应用中,我们不太会通过这两种方式来对MongoDB进行操作,接下来我们将介绍更为实用的方式,即在SpringMVC中实现对MongoDB的增删改查。

    一、搭建SpringMVC工程

    这里我们使用的IDE是IntelliJ IDEA,通过创建maven工程来搭建SpringMVC。

    如何搭建SpringMVC不是我们的重点,并且已有许多相关资料,因此这里不再介绍。下面的工作基于已经成功在maven工程中搭建好了SpringMVC。

    二、添加maven依赖

    我们使用Spring Data MongoDB来操作MongoDB,因此需要先在maven的pom.xml中添加相关依赖,并同步。

    <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-commons</artifactId>
                <version>1.7.2.RELEASE</version>
    </dependency>
    <dependency>
                <groupId>org.springframework.data</groupId>
                <artifactId>spring-data-mongodb</artifactId>
                <version>1.4.2.RELEASE</version>
    </dependency>
    <dependency>
                <groupId>org.mongodb</groupId>
                <artifactId>mongo-java-driver</artifactId>
                <version>2.10.1</version>
    </dependency>
    

    三、MongoDB配置类

    @Configuration
    public class MongoConfig {
        //MongoClient bean
        @Bean
        public MongoFactoryBean mongo(){
            MongoFactoryBean mongo = new MongoFactoryBean();
            mongo.setHost("localhost");
            return mongo;
        }
        //MongoTemplate bean
        @Bean
        public MongoOperations mongoTemplate(Mongo mongo){
            return new MongoTemplate(mongo,"test1");//指定数据库名称
        }
    }
    

    四、创建实体类(对应Document)

    @Document
    public class Order {
        @Id
        private String id;
        private String customer;
        private Collection<Item> items = new LinkedHashSet<Item>();
        public void setCustomer(String customer){
            this.customer = customer;
        }
        public String getCustomer() {return customer;}
        public String getId(){
            return id;
        }
        public void setItem(Collection<Item> items){
            this.items = items;
        }
        public Collection<Item> getItems(){
            return items;
        }
    }
    

    五、创建子实体类(对应一个Document下的子Document)

    public class Item {
        private Long itemID;
        private Order order;
        private String product;
        private double price;
        private int quantity;
    
        public Long getItemID(){
            return itemID;
        }
        public Order getOrder(){
            return order;
        }
        public String getProduct(){
            return product;
        }
        public double getPrice(){
            return price;
        }
        public int getQuantity(){
            return quantity;
        }
        public void  setItemID(Long itemID){
            this.itemID = itemID;
        }
        public void setProduct(String product){
            this.product = product;
        }
        public void setPrice(double price){
            this.price = price;
        }
        public void setQuantity(int quantity){
            this.quantity = quantity;
        }
    }
    

    六、插入

    @Test
        public void insertTest() throws Exception{
            Order order = new Order();
            Item item1 = new Item();
            item1.setItemID((long) 1);
            item1.setPrice(100);
            item1.setQuantity(10);
            item1.setProduct("Cup");
            Item item2 = new Item();
            item2.setItemID((long) 2);
            item2.setPrice(50);
            item2.setQuantity(5);
            item2.setProduct("Desk");
            order.setCustomer("Tom");
            Collection<Item> ItemCollection = new LinkedHashSet<Item>();
            ItemCollection.add(item1);
            ItemCollection.add(item2);
            order.setItem(ItemCollection);
            mongo.save(order,"order");//在名为order的collection下增加一个Document,若没有名为order的collection,则自动创建
        }
    

    运行测试。


    插入

    七、查询

    统计一个collection下的Document数。

    long orderCount = mongo.getCollection("order").count();//统计一个collection下的文档数
    

    根据Id查找。(最后一个参数"order"是collection名,可省略,下同)

    String orderID = "5a747fa9a80e7722bfcbb372";
    Order order1 = mongo.findById(orderID,Order.class,"order");//根据ID查找
    

    查询。

    List<Order> OrderList = mongo.find(Query.query(Criteria.where("customer").is("Tom")),Order.class,"order");//通过构造Query对象进行查询
    

    多条件查询。

    List<Order> OrderList1 = mongo.find(Query.query(Criteria.where("customer").is("Tom").and("sex").is("man")),Order.class,"order");//多条件查询
    

    八、删除

    删除order1对象在数据库中对应的Document。

    mongo.remove(order1,"order");//删除对象(先要进行查找)
    

    九、修改

    将含有"customer":"Tom"的Document中的"customer":"Tom"改为"customer":"Mike"。

     mongo.updateMulti(Query.query(Criteria.where("customer").is("Tom")), Update.update("customer","Tom").set("customer","Mike"),Order.class,"order");//改
    

    如果只修改一个Document,可将updateMulti()方法改成updateFirst()方法。

    到这里,使用SpringMVC实现对MongoDB简单的增删改查就讲完啦。

    相关文章

      网友评论

        本文标题:使用SpringMVC实现对MongoDB简单的增删改查

        本文链接:https://www.haomeiwen.com/subject/hiruzxtx.html