Springboot +Mongodb配置

1. MongoDB在pom.xml文件中的依赖

springboot 版本 2.0.7

<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-data-mongodb</artifactId>
</dependency>

2.application.properties配置

mongodb.primary.database= admin//数据库名
mongodb.primary.port= 27017//端口
mongodb.primary.host=127.0.0.1//ip地址

3. 配置AbstractMongoConfig类

获取mongodbDB地址(ServerAddress)->获取mongoDB证书(MongoCredential,用户名、数据库名、密码)->连接mongoDB服务(MongoClient)->创建MongoDbFactory(SimpleMongoDbFactory)

连接到MongoDB服务

如果是远程连接可以替换“localhost”为服务器所在IP地址
ServerAddress()两个参数分别为 服务器地址 和 端口
ServerAddress serverAddress = new ServerAddress(host, port);

获取mongoDB证书

List mongoCredentialList = new ArrayList<>();
mongoCredentialList.add(MongoCredential.createCredential(username, database, password.toCharArray()));
三个参数分别为 用户名 数据库名称 密码

连接mongoDB服务

MongoClient mongoClient = new MongoClient(serverAddress, mongoCredentialList);
//MongoClient Springboot2.1.0版本不可用

创建MongoDbFactory

SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(mongoClient, database);

public  abstract class AbstractMongoConfig {
	
	private String database,host,username,password;
	
	private int port;

	public String getDatabase() {
		return database;
	}

	public void setDatabase(String database) {
		this.database = database;
	}

	public String getHost() {
		return host;
	}

	public void setHost(String host) {
		this.host = host;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public int getPort() {
		return port;
	}

	public void setPort(int port) {
		this.port = port;
	}
	
	
	public MongoDbFactory primaryMongoDbFactory() {
		
		ServerAddress serverAddress = new ServerAddress(host, port);
		List<MongoCredential> mongoCredentialList = new ArrayList<>();
		mongoCredentialList.add(MongoCredential.createCredential(username, database, password.toCharArray()));
		
		MongoClient mongoClient = new MongoClient(serverAddress, mongoCredentialList);
		SimpleMongoDbFactory simpleMongoDbFactory = new SimpleMongoDbFactory(mongoClient, database);
		return simpleMongoDbFactory;
		
	}
	
	abstract public MongoTemplate getMongoTemplate() throws Exception;

}

4.配置primaryMongoConfig

@ConfigurationProperties(prefix="mongodb.primary")
public class PrimaryMongoConfig extends AbstractMongoConfig{

	@Bean(name="primaryMongoTemplate")
	public MongoTemplate getMongoTemplate() throws Exception {
		// TODO Auto-generated method stub
		return new MongoTemplate(primaryMongoDbFactory());
	}
	
}

5.配置repository类

@Repository
public class UserRepositoryImpl implements UserRepository {
	@Autowired
	private MongoTemplate primaryMongoTemplate;
	private final static String  COLLECTION_NAME = "user"
	@Override
	public User findOneUser(String username, String pwd) throws Exception {
		// TODO Auto-generated method stub
		Query query = new Query(Criteria.where("username").is(username));
		query.addCriteria(Criteria.where("pwd").is(pwd));
		return primaryMongoTemplate.findOne(query, User.class, COLLECTION_NAME); 
	}

}

注意:COLLECTION_NAME 为MongoDB表名
当有多个数据源时,就要加上@Qualifier(bean=“secondaryMongoTemplate”)

@Autowired
@Qualifier(bean="secondaryMongoTemplate")
	private MongoTemplate secondaryMongoTemplate;

6 controller类

@Controller
public class UserController {

    @Autowired
	private UserRepository userRepository;
	
    @RequestMapping("login.do")
	public String login(Model model,@RequestParam String username,@RequestParam String pwd) throws Exception{
		User u = userRepository.findOneUser(username, pwd);
		if(!StringUtil.isEmpty(u)) {
			model.addAttribute("user", u);
			return "success";
		}
		else {
			return "index";
		}
	}
}

有关model的知识链接

第一次写博客,权当给正在学习的知识做个笔记,记录下自己的学习过程
知识不仅需要学习,更需要总结。

猜你喜欢

转载自blog.csdn.net/qq_35998844/article/details/84942663
今日推荐