欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程资源 > 编程问答 >内容正文

编程问答

Jersey MongoDB的使用

发布时间:2023/12/10 编程问答 57 豆豆
生活随笔 收集整理的这篇文章主要介绍了 Jersey MongoDB的使用 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

Jersey MongoDB的使用

前面介绍了Jersey与Redis的整合使用,这一章节我们介绍,jersey整合MongoDB数据库。
关于MongoDB数据库我们不做过多介绍,通过本次教程可以实现mongodb增删改查的简单使用,如果需要对mongodb有深入的学习,请参考MongoDB教程

引入依赖

<!--引入mongodb的依赖 --><!-- ============================== MongoDB start======================= --><dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-mongodb</artifactId><version>1.8.0.RELEASE</version><exclusions><exclusion><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId></exclusion></exclusions></dependency><dependency><groupId>org.mongodb</groupId><artifactId>mongo-java-driver</artifactId><version>3.2.2</version></dependency><!-- ============================== MongoDB end======================= -->

创建User类

User类上需要加上Document注解 其中collection=”user” 类似于mysql数据库中的users表、
id字段上加上@Id注解,表示mongodb会自动将该字段识别为id,如果该值为Null,mongodb会自动将内置的ObjectId作为id使用,所以在做插入数据的时候,需要我们手动设置id。

@Document(collection = "users") public class User {@Idprivate String id;private String name;private int 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 int getAge() {return age;}public void setAge(int age) {this.age = age;} }

配置文件

spring-mongodb.xml文件

<?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:mongo="http://www.springframework.org/schema/data/mongo"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/data/mongohttp://www.springframework.org/schema/data/mongo/spring-mongo.xsd"><!-- spring连接mongodb数据库的配置host:mongodb 主机port:mongodb 端口号credentials 格式:${userName}:${passWord}@${dbname} userName mongodb的用户名 passWorld mongodb的密码 dbname mongodb的数据库max-wait-time 最大等待时间connect-timeout 连接超时时间--><mongo:mongo-client host="${host}" port="${port}" credentials="${userName}:${passWord}@${dbname}" id="mongo"><mongo:client-options write-concern="SAFE"max-wait-time="1500"connect-timeout="1000"threads-allowed-to-block-for-connection-multiplier="100"socket-keep-alive="true"socket-timeout="1500"connections-per-host="200" /></mongo:mongo-client><mongo:db-factory id="mongoDbFactory" dbname="${dbname}" mongo-ref="mongo" /><!--Srping mongo Template--><bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate"><constructor-arg name="mongoDbFactory" ref="mongoDbFactory"/></bean></beans>

UserService接口以及实现

UserService接口

public interface UserService {public void insert(User user);public void update(User user);public void delete(String id);public User selectById(String id);public List<User> selectAll(); }

UserServiceImpl实现
我们使用Spring自动生成bean的方式生成该对象,所以需要加上@Service注解,同时需要注入MongoDBTemplate

@Service public class UserServiceImpl implements UserService{@Resourceprivate MongoTemplate mongoTemplate;/*** 插入用户* @param user*/public void insert(User user) {try {mongoTemplate.insert(user);}catch (Exception e){e.printStackTrace();}}/*** 更新用户* @param user*/public void update(User user) {try {Query query = new Query();query.addCriteria(new Criteria("_id").is(user.getId()));Update update = new Update();update.set("age",user.getAge());update.set("name",user.getName());mongoTemplate.updateFirst(query,update,User.class);}catch (Exception e){e.printStackTrace();}}/*** 根据id删除用户* @param id*/public void delete(String id) {try {Query query = new Query();query.addCriteria(new Criteria("_id").is(id));mongoTemplate.remove(query,User.class);}catch (Exception e){e.printStackTrace();}}/*** 通过id 查询用户* @param id* @return*/public User selectById(String id) {try {Query query = new Query();query.addCriteria(new Criteria("_id").is(id));User user = (User)mongoTemplate.findOne(query,User.class);return user;}catch (Exception e){e.printStackTrace();return null;}}/*** 查询所有用户* @return*/public List<User> selectAll() {try {return mongoTemplate.findAll(User.class);}catch (Exception e){e.printStackTrace();return null;}} }

服务提供UserResource

需要注意的是,之前的介绍中Resource类不需要继承和实现,不需要使用注解,但是在本项目中,我们需要在Resource中注入UserService,因此也需要将Resource的创建交给Spring进行管理。

@Component//resource转换为spring组件 @Path("/user") public class UserResource {@Resourceprivate UserService userService;@Path("/add")@POSTpublic Response add(@FormParam("id") String id,@FormParam("name") String name,@FormParam("age") int age){User user = new User();user.setAge(age);user.setName(name);user.setId(id);userService.insert(user);return JerseyTool.returnSuccess(new ResponseDto("OK","添加用户成功").toString());}/**** 查询所有用户信息* @return*/@GET@Path("/getAll")public Response getAll(){List<User> users = userService.selectAll();return JerseyTool.returnSuccess(JSON.toJSONString(users));}/*** 根据用户id查询用户* @param id* @return*/@GET@Path("/getById")public Response getById(@QueryParam("id") String id){User user = userService.selectById(id);return JerseyTool.returnSuccess(JSON.toJSONString(user));}/*** 更新用户信息* @param id* @param name* @param age* @return*/@PUT@Path("update")public Response update(@FormParam("id") String id,@FormParam("name") String name,@FormParam("age") int age){User user = new User();user.setAge(age);user.setName(name);user.setId(id);userService.update(user);return JerseyTool.returnSuccess(new ResponseDto("OK","添加用户成功").toString());}/*** 根据id删除用户* @param id* @return*/@DELETE@Path("/delete")public Response deleteById(@QueryParam("id") String id){userService.delete(id);return JerseyTool.returnSuccess(new ResponseDto("OK","删除用户成功").toString());} }

为了更方便的响应json结果,我提供了ResponseDto。

public class ResponseDto {private String code;private String msg;public String getCode() {return code;}public void setCode(String code) {this.code = code;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public ResponseDto(String code, String msg) {this.code = code;this.msg = msg;}@Overridepublic String toString() {JSONObject json = new JSONObject();json.put("code",getCode());json.put("msg",getMsg());return json.toString();} }

测试

通过Main方法启动程序.
为了更方便的测试,我们使用谷歌浏览器Postman插件进行测试。
1、添加用户

2、查询所有用户

3、根据id查询用户

4、删除用户

Jersey系列相关源码请访问:Jersey_learing项目

总结

以上是生活随笔为你收集整理的Jersey MongoDB的使用的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。