• Spring MVC + Mongodb


    在maven的pom.xml中增加引用:

    1. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    2.    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    3.    <modelVersion>4.0.0</modelVersion>
    4.    <groupId>com.zjf</groupId>
    5.    <artifactId>springmvc</artifactId>
    6.    <version>0.0.1-SNAPSHOT</version>
    7.    <packaging>war</packaging>
    8.  
    9.    <properties>
    10.       <spring.webmvc.version>4.3.0.RELEASE</spring.webmvc.version>
    11.       <junit.version>4.8.2</junit.version>
    12.       <jedis.version>2.8.1</jedis.version>
    13.       <log4j.version>1.2.16</log4j.version>
    14.       <slf4j.version>1.7.2</slf4j.version>
    15.       <spring.data.redis.version>1.7.2.RELEASE</spring.data.redis.version>
    16.       <spring.data.mongodb.version>1.8.0.RELEASE</spring.data.mongodb.version>
    17.    </properties>
    18.  
    19.  
    20.    <dependencies>
    21.       <dependency>
    22.          <groupId>junit</groupId>
    23.          <artifactId>junit</artifactId>
    24.          <version>${junit.version}</version>
    25.          <scope>test</scope>
    26.       </dependency>
    27.       <dependency>
    28.          <groupId>org.springframework</groupId>
    29.          <artifactId>spring-webmvc</artifactId>
    30.          <version>${spring.webmvc.version}</version>
    31.       </dependency>
    32.       <dependency>
    33.          <groupId>redis.clients</groupId>
    34.          <artifactId>jedis</artifactId>
    35.          <version>${jedis.version}</version>
    36.       </dependency>
    37.       <dependency>
    38.          <groupId>org.springframework.data</groupId>
    39.          <artifactId>spring-data-redis</artifactId>
    40.          <version>${spring.data.redis.version}</version>
    41.       </dependency>
    42.       <dependency>
    43.          <groupId>org.springframework.data</groupId>
    44.          <artifactId>spring-data-mongodb</artifactId>
    45.          <version>${spring.data.mongodb.version}</version>
    46.       </dependency>
    47.       <dependency>
    48.          <groupId>log4j</groupId>
    49.          <artifactId>log4j</artifactId>
    50.          <version>${log4j.version}</version>
    51.       </dependency>
    52.       <dependency>
    53.             <groupId>org.slf4j</groupId>
    54.             <artifactId>slf4j-api</artifactId>
    55.             <version>${slf4j.version}</version>
    56.         </dependency>
    57.         <dependency>
    58.             <groupId>org.slf4j</groupId>
    59.             <artifactId>slf4j-log4j12</artifactId>
    60.             <version>${slf4j.version}</version>
    61.         </dependency>
    62.    </dependencies>
    63. </project>

    在applicationContext.xml增加mongodb.properties:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    4.     xmlns:context="http://www.springframework.org/schema/context"
    5.     xmlns:mvc="http://www.springframework.org/schema/mvc"
    6.     xmlns:cache="http://www.springframework.org/schema/cache"
    7.     xsi:schemaLocation="http://www.springframework.org/schema/beans
    8.                         http://www.springframework.org/schema/beans/spring-beans-4.2.xsd
    9.                         http://www.springframework.org/schema/context
    10.                         http://www.springframework.org/schema/context/spring-context-4.2.xsd
    11.                         http://www.springframework.org/schema/mvc
    12.                         http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd
    13.                         http://www.springframework.org/schema/cache
    14.                         http://www.springframework.org/schema/cache/spring-cache-4.2.xsd ">
    15.  
    16.  
    17.     <context:component-scan base-package="com.zjf.*" />
    18.  
    19.    <!-- 属性文件位置 -->
    20.     <bean id="annotationPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    21.         <property name="locations">
    22.             <list>
    23.                 <value>classpath:config/properties/mongodb.properties</value>
    24.                 <value>classpath:config/properties/redis.properties</value>
    25.             </list>
    26.         </property>
    27.     </bean>
    28.  
    29.  
    30. </beans>

    mongodb.properties:

    1. mongo.hostport=192.168.1.101:27017
    2. mongo.connectionsPerHost=8
    3. mongo.threadsAllowedToBlockForConnectionMultiplier=4
    4. #u8FDEu63A5u8D85u65F6u65F6u95F4
    5. mongo.connectTimeout=1000
    6. #u7B49u5F85u65F6u95F4
    7. mongo.maxWaitTime=1500
    8. mongo.autoConnectRetry=true
    9. mongo.socketKeepAlive=true
    10. #Socketu8D85u65F6u65F6u95F4
    11. mongo.socketTimeout=1500
    12. mongo.slaveOk=true

    增加mongodb.xml:

    1. <?xml version="1.0" encoding="UTF-8"?>
    2. <beans xmlns="http://www.springframework.org/schema/beans"
    3.    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
    4.    xmlns:jpa="http://www.springframework.org/schema/data/jpa" xmlns:mongo="http://www.springframework.org/schema/data/mongo"
    5.    xsi:schemaLocation="http://www.springframework.org/schema/data/mongo
    6.     http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
    7.    http://www.springframework.org/schema/beans
    8.    http://www.springframework.org/schema/beans/spring-beans-4.2.xsd ">
    9.  
    10.    <!-- 定义mongo对象,对应的是mongodb官方jar包中的Mongo,replica-set设置集群副本的ip地址和端口 -->
    11.    <mongo:mongo id="mongo" replica-set="${mongo.hostport}">
    12.       <!-- 一些连接属性的设置 -->
    13.       <mongo:options connections-per-host="${mongo.connectionsPerHost}"
    14.          threads-allowed-to-block-for-connection-multiplier="${mongo.threadsAllowedToBlockForConnectionMultiplier}"
    15.          connect-timeout="${mongo.connectTimeout}" max-wait-time="${mongo.maxWaitTime}"
    16.          auto-connect-retry="${mongo.autoConnectRetry}" socket-keep-alive="${mongo.socketKeepAlive}"
    17.          socket-timeout="${mongo.socketTimeout}" slave-ok="${mongo.slaveOk}"
    18.          write-number="1" write-timeout="0" write-fsync="true" />
    19.    </mongo:mongo>
    20.    <!-- dbname是要操作的数据库 -->
    21.    <mongo:db-factory id="myMongoDbFactory" dbname="mydb" mongo-ref="mongo" />
    22.  
    23.    <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate">
    24.       <constructor-arg name="mongoDbFactory" ref="myMongoDbFactory" />
    25.    </bean>
    26.  
    27. </beans>

    上面的各种参数说明:

    参数列表如下:



    #控制系统在发生连接错误时是否重试 ,默以为false --boolean

    mongo.options.autoConnectRetry=false

    #每个主机答应的连接数(每个主机的连接池大小),当连接池被用光时,会被阻塞住 ,默以为10 --int

    mongo.options.connectionsPerHost=10

    #multiplier for connectionsPerHost for # of threads that can block if connectionsPerHost is 10, and threadsAllowedToBlockForConnectionMultiplier is 5, then 50 threads can block more than that and an exception will be throw --int

    mongo.options.threadsAllowedToBlockForConnectionMultiplier=5

    #被阻塞线程从连接池获取连接的最长等待时间(ms) --int

    mongo.options.maxWaitTime 

    #在建立(打开)套接字连接时的超时时间(ms),默以为0(无穷) --int

    mongo.options.connectTimeout=0

    #套接字超时时间;该值会被传递给Socket.setSoTimeout(int)。默以为0(无穷) --int

    mongo.options.socketTimeout=0

    #This controls whether or not to have socket keep alive turned on (SO_KEEPALIVE). defaults to false --boolean

    mongo.options.socketKeepAlive=false

    #Override the DBCallback factory. Default is for the standard Mongo Java driver configuration --DBCallbackFactory

    mongo.options.dbCallbackFactory 

    #//指明是否答应驱动从次要节点或者奴隶节点读取数据,默以为false --boolean

    mongo.options.slaveOk=false

    #假如为true,驱动每次update后会发出一个getLastError命令来保证成功,默以为false --boolean

    mongo.options.safe=false 

    #If set, the w value of WriteConcern for the connection is set to this. Defaults to 0; implies safe = true --int

    mongo.options.w=0

    #If set, the wtimeout value of WriteConcern for the connection is set to this. Defaults to 0; implies safe = true --int

    mongo.options.wtimeout=0

    #Sets the fsync value of WriteConcern for the connection. Defaults to false; implies safe = true --boolean

    mongo.options.fsync=false

    配置已经完成,我们来看一下java代码的目录结构:

    主要看model和daoimpl的代码。贴出如下:

    1. package com.zjf.spring.mongodb.model;
    2.  
    3. import org.springframework.data.mongodb.core.mapping.Document;
    4. //将student映射为Mongodb数据库中的一个名字叫student的collection
    5. @Document(collection="student")
    6. public class Student {
    7.  
    8.    private String id;
    9.  
    10.    private String name;
    11.  
    12.    private int age;
    13.  
    14.    public String getId() {
    15.       return id;
    16.    }
    17.  
    18.    public void setId(String id) {
    19.       this.id = id;
    20.    }
    21.  
    22.    public String getName() {
    23.       return name;
    24.    }
    25.  
    26.    public void setName(String name) {
    27.       this.name = name;
    28.    }
    29.  
    30.    public int getAge() {
    31.       return age;
    32.    }
    33.  
    34.    public void setAge(int age) {
    35.       this.age = age;
    36.    }
    37.  
    38.    @Override
    39.    public String toString() {
    40.       return "Student [id=" + id + ", name=" + name + ", age=" + age + "]";
    41.    }
    42.  
    43.  
    44. }
    1. package com.zjf.spring.mongodb.dao.impl;
    2.  
    3. import java.util.ArrayList;
    4. import java.util.List;
    5.  
    6. import org.springframework.beans.factory.annotation.Autowired;
    7. import org.springframework.data.mongodb.core.MongoOperations;
    8. import org.springframework.data.mongodb.core.query.Criteria;
    9. import org.springframework.data.mongodb.core.query.Query;
    10. import org.springframework.data.mongodb.core.query.Update;
    11. import org.springframework.stereotype.Repository;
    12.  
    13. import com.mongodb.WriteResult;
    14. import com.zjf.spring.mongodb.dao.StudentDao;
    15. import com.zjf.spring.mongodb.model.Student;
    16.  
    17. //持久层注解
    18. @Repository
    19. public class StudentDaoImpl implements StudentDao {
    20.  
    21.    //引入mongo.xml中配置的mongoTemplate
    22.    @Autowired
    23.    private MongoOperations mongoTemplate;
    24.  
    25.    public void add(Student student)
    26.    {
    27.       this.mongoTemplate.insert(student);
    28.    }
    29.  
    30.    public Student getById(String id)
    31.    {
    32.       return this.mongoTemplate.findById(id, Student.class);
    33.    }
    34.  
    35.    public void modify(Student student)
    36.    {
    37.       this.mongoTemplate.save(student);
    38.    }
    39.  
    40.    public void delete(Student student)
    41.    {
    42.       this.mongoTemplate.remove(student);
    43.    }
    44.  
    45.    public void deleteById(String id)
    46.    {
    47.       this.mongoTemplate.remove(new Query(Criteria.where("_id").is(id)), Student.class);
    48.    }
    49.  
    50.    //一个根据名字查询结果的方法
    51.    @Override
    52.    public List<Student> getByName(String name) {
    53.       List<Student> students = new ArrayList<Student>();
    54.       Query query = new Query();
    55.         query.addCriteria(new Criteria("name").is(name));
    56.         students = this.mongoTemplate.find(query, Student.class);
    57.       return students;
    58.    }
    59.    ////一个根据名字更新数据方法
    60.    @Override
    61.    public int updateByName(String name) {
    62.       int n = 0;
    63.       List<Student> students = new ArrayList<Student>();
    64.       Query query = new Query();
    65.         query.addCriteria(new Criteria("name").is(name));
    66.         Update update = new Update();
    67.         update.set("name", "xhj");
    68.       WriteResult result = this.mongoTemplate.updateMulti(query, update, Student.class);
    69.       n = result.getN();
    70.       return n;
    71.    }
    72.  
    73. }
  • 相关阅读:
    标记场景发生改变
    粗体EditorGUI
    unity shader 编辑器扩展类 ShaderGUI
    让打开文件夹直接在某路径打开
    利用asset存储mesh
    获取输入的键
    2013 Visual Studio Magazine读者选择奖界面框架类获奖情况
    DevExpress VCL 13.1.4支持Delphi /C++Builder XE5
    DevExpress更新至13.1.7
    转:与Microsoft Visual Studio集成良好的第三方工具
  • 原文地址:https://www.cnblogs.com/xiaolang8762400/p/6943107.html
Copyright © 2020-2023  润新知