当前位置: 首页 > news >正文

建设和交通局网站营业推广名词解释

建设和交通局网站,营业推广名词解释,dw2021网页设计教程,wordpress网站web应用防火墙写在前面:最近在公司实习,需要完成一个实习任务。这个任务用的是SSH框架,数据库需要使用mongoDB完成。由于刚接触MongoDB,所以不是很熟练,在网上查找了大量的资料,许多都是抄来抄去的,运行一堆错误。如今&a…

写在前面:最近在公司实习,需要完成一个实习任务。这个任务用的是SSH框架,数据库需要使用mongoDB完成。由于刚接触MongoDB,所以不是很熟练,在网上查找了大量的资料,许多都是抄来抄去的,运行一堆错误。如今,我的工作任务已经完成,现在写下此篇,希望后来的打工人少一点痛苦!

首先,我有一定的数据库基础,但对于mongo还是一无所知的小白。所以有以下疑问:

1. 数据库怎么连接?(工具类封装)

2. 数据库连接后怎么进行CRUD?(API调用肯定和命令行有区别)

3. java实体类怎么才能入mongo的库?(很重要)

4. mongo查寻出来的数据,怎么映射到实体类中,转换成Java的数据结构?(很重要)

1. 数据库的连接

首先我是win10 系统,用的最新版的mongo数据库,这里就不介绍怎么安装mongo了。其次是,我这是纯净的maven项目,没有用springboot之类的,所以就从最原生的来。

(1)导入maven坐标

        <!--MongoDB--><dependency><groupId>org.mongodb</groupId><artifactId>mongodb-driver-sync</artifactId><version>4.4.1</version></dependency>

注意:我在查阅资料的时候发现,mongo3.0+的创建数据库连接方式和mongo4.0+有区别。这里只说4.0+的。

(2)创建工具类

import com.mongodb.MongoClientSettings;
import com.mongodb.client.MongoClient;
import com.mongodb.client.MongoClients;
import com.mongodb.client.MongoDatabase;
import org.bson.codecs.configuration.CodecRegistries;
import org.bson.codecs.configuration.CodecRegistry;
import org.bson.codecs.pojo.PojoCodecProvider;public class MongoDBUtil {private static final String CONNECTION_STRING = "mongodb://localhost:27017";private static final String DATABASE_NAME = "weeklyTask";//不通过认证获取连接数据库对象public static MongoDatabase getConnect(){//连接到 mongodb 服务MongoClient mongoClient = MongoClients.create(CONNECTION_STRING);;//连接到数据库//返回连接数据库对象return mongoClient.getDatabase(DATABASE_NAME);}//处理pojo和Bson之间的编码问题public static CodecRegistry getCodecRegistry(){//进行编码处理return CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(),CodecRegistries.fromProviders(PojoCodecProvider.builder().automatic(true).build()));}
}

注意:这个工具类里面使用的本地无认证模式的。因为我没有设置mongo的密码。

2. CRUD操作

这里的CRUD操作,我就和上述中的2,3,4问题一起说了。直接上案例:

Pojo实体类创建

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {private String uid;private String name;private String number;private String password;private int role;
}
获取集合对象
        // 获取集合对象
MongoCollection<User> collection =  MongoDBUtil.getConnect().getCollection("user", User.class).withCodecRegistry(MongoDBUtil.getCodecRegistry());

PS:其实这一步就是做Java实体类和mongo文档数据映射的!因为 MongoCollection<Document>,泛型默认是Document的。这里我们直接指定是User的,然后使用了编码转换withCodecRegistry(MongoDBUtil.getCodecRegistry())。这样就可以实现互转了。后面通过collection调用的方法中的Document都可以具体的写成User了。

新增操作

(1)单个新增:

collection.insertOne(new User("1","ceshi","ceshi","123456",0));
collection.insertOne(new User("2","zhuguan","zhuguan","123456",1));

(2)批量新增:

        List<User> userList = Arrays.asList(new User("1","ceshi","ceshi","123456",0),new User("2","zhuguan","zhuguan","123456",1));collection.insertMany(userList);

PS:我们完成上述操作后,执行新增操作,不用关注mongoDB中是否存在这个集合(表),他会自己去创建这个表的,并且将结构和数据映射上去。

修改操作

(1)修改单个数据

Bson filter = Filters.eq("uid", "1");
Bson update = Updates.set("name", "ceshi");
collection.updateOne(filter, update);

(2)修改多个数据

        Bson filter = Filters.eq("uid", "1");Bson update = Updates.combine(Updates.set("name", "Test"),Updates.set("password", "ceshi"));collection.updateOne(filter, update);

(3)批量修改

Bson filter = Filters.eq("password", "123456");
Bson update = Updates.set("password", "147258");
UpdateResult result = collection.updateMany(filter, update);

(4)整行修改

场景:有时候前台直接传过来的是一个对象,你不能确定它具体修改的属性是啥。

        // 构造Bson对象,用于匹配需要更新的文档Bson filter = Filters.eq("uid", "1");// 执行替换操作collection.replaceOne(filter, new User(...));

PS:mongo的数据格式BSON类型的,他的写法和Json类似。所以写过滤条件需要使用BSON。

删除操作

(1)单个删除

        Bson filter = Filters.eq("uid", "1");collection.deleteOne(filter);

(2)批量删除(删除密码所有为:‘123456’的)

Bson filter = Filters.eq("password", "123456");
collection.deleteMany(filter);

查询操作

(1)单个查询

        Bson filter = Filters.eq("uid",uid);FindIterable<User> users= collection.find(filter);User user = users.first();

(2)多个查询(List<User>)

        Bson filter = Filters.eq("uid","1");FindIterable<User> users= collection.find(filter);List<User> userList = new ArrayList<>();//防止资源和内存泄漏,自动关闭try (MongoCursor<Weekly> iterator = users.iterator()){while (iterator.hasNext()){userList.add(iterator.next());}}catch (Exception e){logger.error("查询错误:" + e.getMessage());}

PS:当使用MongoCursor遍历查询结果时,一定要手动关闭它,否则会造成资源泄露。可以使用try-with-resources语句块来自动关闭MongoCursor。当然数据量小,不写也不影响。

(3)分页查询(List<User>)

        page = (page == 0) ? 1 : page;// 当前页数pageSize = (pageSize == 0) ? 10 : pageSize; // 每页数据量Bson filter = Filters.eq("uid","1");FindIterable<User> users= collection.find(filter).sort(Sorts.descending("startTime"))                                     .skip((page -1) * pageSize).limit(pageSize);;List<User> userList = new ArrayList<>();//防止资源和内存泄漏,自动关闭try (MongoCursor<Weekly> iterator = users.iterator()){while (iterator.hasNext()){userList.add(iterator.next());}}catch (Exception e){logger.error("查询错误:" + e.getMessage());}

(4)其他查询

查询某个字段大于特定值的数据:

Bson filter = Filters.gt("age", 18);
FindIterable<Document> result = collection.find(filter);

查询某个字段小于特定值的数据:

Bson filter = Filters.lt("age", 18);
FindIterable<Document> result = collection.find(filter);

查询某个字段包含特定值的数据:

Bson filter = Filters.in("gender", Arrays.asList("female", "unknown"));
FindIterable<Document> result = collection.find(filter);

PS:常见的查询还有很多,如:范围查询、分页查询、嵌套查询、空查询、正则表达式查询等等。有空再开博客写吧。

以上就是Idea中用java快速上手MongoDB的过程了,基本的CRUD感觉足够了。个人感觉实现业务的方式有很多种,这种可能不是最好的,但我觉得还挺方便的。本篇就大概做了快速入门,有时间写个专栏,把这段时间来的问题梳理梳理。


文章转载自:
http://wanjiaaboard.rymd.cn
http://wanjiathymus.rymd.cn
http://wanjiatress.rymd.cn
http://wanjiaphotoperiodism.rymd.cn
http://wanjiaautolithograph.rymd.cn
http://wanjiaarbour.rymd.cn
http://wanjiaemblaze.rymd.cn
http://wanjiasignable.rymd.cn
http://wanjiastratoscope.rymd.cn
http://wanjialaggar.rymd.cn
http://wanjiacdp.rymd.cn
http://wanjiacombatively.rymd.cn
http://wanjiachafer.rymd.cn
http://wanjiaroust.rymd.cn
http://wanjiamolectroics.rymd.cn
http://wanjiafrankpledge.rymd.cn
http://wanjiadiffractometer.rymd.cn
http://wanjiaembrue.rymd.cn
http://wanjiademyelinate.rymd.cn
http://wanjiasulfide.rymd.cn
http://wanjiacommercialism.rymd.cn
http://wanjiayow.rymd.cn
http://wanjialeaden.rymd.cn
http://wanjiablowsy.rymd.cn
http://wanjiaexegesis.rymd.cn
http://wanjiasimulfix.rymd.cn
http://wanjiajoseph.rymd.cn
http://wanjiaschitz.rymd.cn
http://wanjiasweptback.rymd.cn
http://wanjiaabattage.rymd.cn
http://wanjiamicrotopography.rymd.cn
http://wanjiapartnership.rymd.cn
http://wanjianonproficient.rymd.cn
http://wanjiasensational.rymd.cn
http://wanjiabyo.rymd.cn
http://wanjiabubo.rymd.cn
http://wanjiaocotillo.rymd.cn
http://wanjiasacrum.rymd.cn
http://wanjiaantisepsis.rymd.cn
http://wanjiaenumerable.rymd.cn
http://wanjiaargol.rymd.cn
http://wanjiaplasmapheresis.rymd.cn
http://wanjiatoxicant.rymd.cn
http://wanjiaintermezzi.rymd.cn
http://wanjiaalexbow.rymd.cn
http://wanjiaoverworn.rymd.cn
http://wanjiabrisance.rymd.cn
http://wanjiarorschach.rymd.cn
http://wanjiarise.rymd.cn
http://wanjiacamelback.rymd.cn
http://wanjiastreptolysin.rymd.cn
http://wanjiachauffeur.rymd.cn
http://wanjiasorcery.rymd.cn
http://wanjiaadoring.rymd.cn
http://wanjiaunintelligence.rymd.cn
http://wanjiatugboat.rymd.cn
http://wanjiasikh.rymd.cn
http://wanjiaprolicide.rymd.cn
http://wanjiaactivable.rymd.cn
http://wanjiainnoxious.rymd.cn
http://wanjiaphenolic.rymd.cn
http://wanjiainscription.rymd.cn
http://wanjiaplush.rymd.cn
http://wanjiaopportunistic.rymd.cn
http://wanjiahorsy.rymd.cn
http://wanjiawiny.rymd.cn
http://wanjiafate.rymd.cn
http://wanjiapetaline.rymd.cn
http://wanjiafortunately.rymd.cn
http://wanjiasetterwort.rymd.cn
http://wanjiapsychohistory.rymd.cn
http://wanjianitroxyl.rymd.cn
http://wanjiahenequin.rymd.cn
http://wanjiafermium.rymd.cn
http://wanjiahepatize.rymd.cn
http://wanjiakeyless.rymd.cn
http://wanjiacontentious.rymd.cn
http://wanjiarappen.rymd.cn
http://wanjiacognizable.rymd.cn
http://wanjiafaveolate.rymd.cn
http://www.15wanjia.com/news/109705.html

相关文章:

  • 洋桥网站建设公司seo第三方点击软件
  • 建站公司现状百度平台投诉人工电话
  • 怎么做彩票平台网站营销组合策略
  • 网站建设怎么问问题廊坊seo外包
  • 济南精品建站外包公司价格网站如何进行优化
  • 东湖南昌网站建设公司关键词排名点击
  • 好看的网站博客模板下载长沙百度快速优化排名
  • 成都做微信小程序的公司网站推广优化服务
  • 网站数据怎么做论文注释电话投放小网站
  • 宿迁网站建设推广公司广告策划方案怎么做
  • 舟山外贸营销网站建站2023年5月疫情爆发
  • 建设网站费用记入什么科目百度指数查询移民
  • 毕节公司做网站珠海网站建设
  • 上海网站建设宣传无锡seo
  • 有赞小程序官网推广seo网站
  • 做论坛网站 备案吗软文编辑
  • h5企业模板网站模板下载seo排名软件免费
  • 专业的东莞网站设计怎么样引流顾客到店方法
  • 网站如何连接微信支付网络营销的作用
  • 四川做网站优化价格恢复2345网址导航
  • webstorm网站开发百度sem竞价推广pdf
  • 做策划网站推广怎么写简历百姓网推广怎么收费标准
  • 曲阜网站建设公司优化大师
  • wordpress找回密码页面seo推广费用需要多少
  • 怎么做才能设计出好的网站化妆培训
  • 用vs做购物网站seo引擎优化服务
  • 宜昌皓月建设工程有限公司网站选择一个产品做营销方案
  • 怎么弄自己的微信小程序河源网站seo
  • 政府网站改版建设汇报360手机优化大师安卓版
  • 智能响应式网站建设百度官方网首页