springboot - 集成MongoDB实现
2017-09-15 15:02
676 查看
今天就半天时间了,感慨一下;最近一年多都忙的不可开交;今天终于可有点儿时间,可以着手写点东西了.....非常感谢工作和生活.....
结合自身项目特点,合理组织自身代码
整体配置:
代码:
到此结束,请忽略返回值,请将返回值,直接改为String类型即可;
结合自身项目特点,合理组织自身代码
1、开发环境
wind7 、jdk1.8、IJ EDEA 2017(实际开发中2016版本,在集成kafka的过程中始终报错,巨坑)2、准备工作
安装mongoDB (不说)3、创建springboot项目(不说)
4、配置maven的jar包坐标:(以下地方均贴放完整代码,方便各位参考开发)
mongo的坐标:<!--mongo --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.4.RELEASE</version> </dependency>
整体配置:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.5.4.RELEASE</version> <relativePath/> </parent> <modelVersion>4.0.0</modelVersion> <groupId>com.qhzx.sdip</groupId> <artifactId>sdip-config-center</artifactId> <version>1.0-SNAPSHOT</version> <packaging>war</packaging> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-mongodb</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.35</version> </dependency> <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.2</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.3</version> </dependency> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>1.10.4.RELEASE</version> </dependency> <dependency> <groupId>commons-beanutils</groupId> <artifactId>commons-beanutils</artifactId> <version>1.9.3</version> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.2</version> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>Dalston.SR1</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
5.配置application.properties中mongoDB的地址
#mongodb配置 spring.data.mongodb.uri=mongodb://username:password@IP:PORT/mongoDBName
6.加载mongo模板
MongoTemplate 提供了一些非常好用的增删改查api;方便开发import com.mongodb.DBCollection; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.stereotype.Component; /** * <p>类描述</p> * * @author YUANYIRUI839 */ @Component("mgTemplate") public class MgTemplate { @Autowired private MongoTemplate mongoTemplate; public DBCollection getCollection(String collectionName) { return mongoTemplate.getCollection(collectionName); } }
7.编写service层代码
接口:接口是规范,抽象类是模板
import com.mongodb.BasicDBList; import com.mongodb.DBObject; /** * <p>类描述</p> * 用户管理: * 1.分配用户:机构号,手机,法人身份证,联系人,状态(启用,禁用),描述-->>分配用户和密码 * 2.更新用户: * 3.找回用户:机构号,手机,法人身份证 * * @created by yuanyirui839 20170904 */ public interface IUserService { //新增用户 返回 用户名和密码 int addUser(String orgCode, String mobileNum, String IDCard, String contact, String userId, String pwd); //查询用户(找回用户) DBObject queryUser(String userId, String orgCode, String mobileNum, String IDCard); //删除(禁用和启用) int operateUser(String orgCode, String status); //更新 int updateUser(String userId, String orgCode, String mobileNum, String IDCard, String contact); //更新密码 int updateUserPwd(String orgCode, String oldPwd, String newPwd); //删除用户 int deleteUser(String orgCode, String userId); }
接口实现:
import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; /** * <p>类描述</p> * 用户管理: * 1.分配用户:机构号,手机,法人身份证,联系人,状态(启用,禁用),描述-->>分配用户和密码 * 2.更新用户: * 3.找回用户:机构号,手机,法人身份证 * * @created by yuanyirui839 20170904 */ @Component("userService") public class UserService implements IUserService { private static Log logger = LogFactory.getLog(UserService.class); //商户用户 static String COLLECTION_NAME = "ORG_USER"; @Autowired MgTemplate mgTemplate; //新增用户 返回 用户名和密码 public int addUser(String orgCode, String mobileNum, String IDCard, String contact, String userId, String pwd) { //构建文档(本身是面向文档存储) DBObject document = new BasicDBObject(); document.put(Const.ORG_CODE, orgCode); document.put(Const.MOBILE_NUM, mobileNum); document.put(Const.ID_CARD, IDCard); document.put(Const.CONTACT, contact); document.put(Const.USER_ID, userId); document.put(Const.USER_PWD, pwd); //设置为使用中 document.put(Const.STATUS, Const.INUSE); //存入的时候,注意相同的数据只保存一条 document.put(Const._ID, orgCode); //获取集合,在集合中插入数据 getN()返回受影响的条数 int row = mgTemplate.getCollection(COLLECTION_NAME).save(document).getN(); return row; } //查询用户(找回用户信息) public DBObject queryUser(String userId, String orgCode, String mobileNum, String idCard) { DBObject query = buildQuery(userId, orgCode, mobileNum, idCard); DBObject dbObject = new BasicDBObject(); dbObject.put(Const._ID, 0); DBObject result = mgTemplate.getCollection(COLLECTION_NAME).findOne(query, dbObject); return result; } //构造查询条件 private DBObject buildQuery(String userId, String orgCode, String mobileNum, String idCard) { DBObject query = new BasicDBObject(); if (StringUtils.isNotBlank(userId)) { query.put(Const.USER_ID, userId); } if (StringUtils.isNotBlank(orgCode)) { query.put(Const.ORG_CODE, orgCode); } if (StringUtils.isNotBlank(mobileNum)) { query.put(Const.MOBILE_NUM, mobileNum); } if (StringUtils.isNotBlank(idCard)) { query.put(Const.ID_CARD, idCard); } return query; } //删除(禁用和启用) public int operateUser(String orgCode, String status) { DBObject update = queryUser("", orgCode, "", ""); //构建文档(本身是面向文档存储) DBObject query = new BasicDBObject(); //存入的时候,注意相同的数据只保存一条 query.put(Const.ORG_CODE, orgCode); update.put(Const.STATUS, status); //获取集合,在集合中插入数据 getN()返回受影响的条数 int row = mgTemplate.getCollection(COLLECTION_NAME).update(query, update).getN(); return row; } //更新 public int updateUser(String userId, String orgCode, String mobileNum, String idCard, String contact) { DBObject document = queryUser(userId, orgCode, "", ""); logger.info("返回值:"+document.toString()); document.put(Const.MOBILE_NUM, mobileNum); document.put(Const.ID_CARD, idCard); document.put(Const.CONTACT, contact); //存入的时候,注意相同的数据只保存一条 document.put(Const._ID, orgCode); //设置为使用中 document.put(Const.STATUS, Const.INUSE); //获取集合,在集合中插入数据 getN()返回受影响的条数 int row = mgTemplate.getCollection(COLLECTION_NAME).save(document).getN(); return row; } //更新密码 public int updateUserPwd(String orgCode, String oldPwd, String newPwd) { DBObject query = new BasicDBObject(); query.put(Const.ORG_CODE, orgCode); DBObject update = queryUser("", orgCode, "", ""); update.put(Const.USER_PWD, newPwd); //获取集合,在集合中插入数据 getN()返回受影响的条数 int row = mgTemplate.getCollection(COLLECTION_NAME).update(query, update).getN(); return row; } //删除 @Override public int deleteUser(String orgCode, String userId) { DBObject query = new BasicDBObject(); if (StringUtils.isNotBlank(orgCode)) { query.put(Const.ORG_CODE, orgCode); } if (StringUtils.isNotBlank(userId)) { query.put(Const.USER_ID, userId); } //获取集合,在集合中插入数据 getN()返回受影响的条数 int row = mgTemplate.getCollection(COLLECTION_NAME).remove(query).getN(); return row; } }
8.编写controller层代码:
springboot 封装注解:@RestController @RequestMapping("dsint")
代码:
import com.mongodb.BasicDBObject; import com.mongodb.DBObject; import org.apache.commons.lang.RandomStringUtils; import org.apache.commons.lang.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.RestController; /** * Created by YUANYIRUI839 on 2017-09-04. * 用户配置中心 */ @RestController @RequestMapping("userConfCenter") public class UserConfigCenter { private static Log logger = LogFactory.getLog(UserConfigCenter.class); @Autowired private IUserService userService; /** * 新增用户;机构可以申请或者系统分配用户名和密码 */ @ResponseBody @RequestMapping("/addUser") public AjaxResult addUser(String orgCode, String mobileNum, String IDCard, String contact, String userId, String userPwd) { AjaxResult result = AjaxResult.createSuccAjaxResult(); try { if (StringUtils.isBlank(orgCode)) { return AjaxResult.createErrorAjaxResult("请填写组织机构代码"); } if (StringUtils.isBlank(userId) && StringUtils.isBlank(userPwd)) { boolean existUserId = false; while (!existUserId) { userId = RandomStringUtils.random(8, Const.RANDOM_STR_UP); logger.info("生成用户ID:" + userId); existUserId = queryUserByUserId(userId) == null ? true : false; } //生成密码 userPwd = RandomStringUtils.random(8, Const.RANDOM_STR); } //添加用户 int addRow = userService.addUser(orgCode, mobileNum, IDCard, contact, userId, userPwd); DBObject dbObject=new BasicDBObject(); dbObject.put(Const.USER_ID,userId); dbObject.put(Const.USER_PWD,userPwd); result.setData(dbObject); logger.info("返回行数: " + dbObject.toString()); return result; } catch (Exception e) { e.printStackTrace(); return AjaxResult.createErrorAjaxResult(e.getMessage()); } } private DBObject queryUserByUserId(String userId) { DBObject dbObject = userService.queryUser(userId, "", "", ""); return dbObject; } /** * 删除用户 */ @ResponseBody @RequestMapping("/deleteUser") public AjaxResult deleteUser(String orgCode, String userId) { AjaxResult result = AjaxResult.createSuccAjaxResult(); try { // int operateRow = userService.deleteUser(orgCode, userId); result.setData(operateRow); logger.info("删除用户影响的条数 : " + operateRow); return result; } catch (Exception e) { return AjaxResult.createErrorAjaxResult(e.getMessage()); } } /** * 更新用户信息 */ @ResponseBody @RequestMapping("/updateUser") public AjaxResult updateUser(String userId, String orgCode, String mobileNum, String IDCard, String contact) { AjaxResult result = AjaxResult.createSuccAjaxResult(); try { //更新 int updateRow = userService.updateUser(userId, orgCode, mobileNum, IDCard, contact); result.setData(updateRow); logger.info("更新影响的条数 : " + updateRow); return result; } catch (Exception e) { return AjaxResult.createErrorAjaxResult(e.getMessage()); } } }
到此结束,请忽略返回值,请将返回值,直接改为String类型即可;
相关文章推荐
- 简单的spring-data集成mongoDB项目,实现crud的功能
- Spring Boot整合MongoDB实现增删改查
- spring boot 集成quartz 2.0 实现前端动态配置(获取spring上下文)的两种方式,启动数据库中已开启定时任务
- Spring-Boot 集成Redis实现查询缓存提高查询效率减轻数据库访问压力(涉及key的添加和删除)
- Spring boot集成Redis实现sessions共享时,sessions过期时间问题分析
- SpringBoot集成Redis实现缓存处理(Spring AOP技术)
- springboot 集成activeMQ实现消息队列和双向队列
- SpringBoot集成Redis来实现缓存技术方案
- SpringBoot | 第三十一章:MongoDB的集成和使用
- Spring Boot集成spring-boot-devtools开发时实现热部署的方式
- Spring Boot集成mongoDB(十二)
- 基于 MongoDB 及 Spring Boot 的文件服务器的实现
- 基于SpringBoot2 & MongoDB完成自动化集成
- 基于Spring Boot 2.0 及MongoDB 3.6.2 实现的简单文件共享服务器
- Spring boot 集成 Kaptcha 实现前后端分离验证码功能
- SpringBoot入门-20(springboot集成mybatis注解形式properties配置,利用@Provider实现动态SQL)
- SpringBoot集成Swagger2实现Restful(类型转换错误解决办法)
- SpringBoot -- 集成MongoDB
- Spring Boot 集成Mybatis实现多数据源