精华内容
下载资源
问答
  • SQL Server 2008数据库设计实现(关系数据库实现的通关宝典) 基本信息 原书名: Pro SQL Server 2008 Relational Database Design and Implementation 原出版社: Apress 作者: (美)Louis Davidson Kevin Kline ...
  • 听取了香港政府统计处组织架构及工作方针、香港官方统计系统的发展及管理、统计人员的培训及发展、国际统计标准的应用、与国际及本地社群的关系、统计研究及素质保证、统计法例及相关法例、统计系统及资讯科技发展与...
  • 听取了香港政府统计处组织架构及工作方针、香港官方统计系统的发展及管理、统计人员的培训及发展、国际统计标准的应用、与国际及本地社群的关系、统计研究及素质保证、统计法例及相关法例、统计系统及资讯科技发展与...
  • SQLServer是一个可扩展的、高性能的、为分布式客户机/服务器计算所设计的数据库管理系统,实现了WindowsNT的有机结合,提供了基于事务的企业级信息管理系统方案。 其主要特点如下:  (1)高性能设计,可充分利用...
  • 每一款数据库都有着自己特点,但是呢所有的关系型数据库都满足国际SQL标准。所有的关系型数据库都有着共同的优点。比如:事务的一致性;符合标准的二维表格格式。我们从小学开始就开始接触使用表格进行数据统计。...

     

    说起数据库我们最容易想到的就是 Oracle 、MySql、Sql Server 等等。这些声名远扬的数据库都属于传统的关系型数据库。每一款数据库都有着自己特点,但是呢所有的关系型数据库都满足国际SQL标准。所有的关系型数据库都有着共同的优点。比如:事务的一致性;符合标准的二维表格格式。我们从小学开始就开始接触使用表格进行数据统计。所以关系型数据库非常容易理解和学习。关系型数据库呢已经在很长一段时间里统治了软件行业的数据存储的市场。

    与之相悖的呢,就是目前市面上绝大多数的编程语言都是面向对象的。比如Java、Python、C++等等。这就导致了从编程语言到数据存储之间存在在一条理念上的鸿沟。想要跨过这条鸿沟,各种语言分别推出了自己的解决方案。拿Java来说,从JDK 底层的JDBC ,再到各种各样的ORM 框架,比如Hibernate、Mybatis、Spring JDBC等等。但是要通过这样的解决方案来实现数据库的数据存储就需要开发者们去额外学习和掌握这些技能。从一定的角度来说就是增大了开发者的学习成本。于是乎NoSql(非关系型)数据库就应运而生。最有名的NoSql数据库我想应该是Redis,但是Redis的应用场景大多是在高可用和高并发场景下。因为Redis是将数据保存在内存中的,虽然Redis也支持数据持久化,但是有过了解的小伙伴应该都知道Redis的数据持久化并不和传统意义上的数据库相同,它更适用于解决突发的系统Down机而保持数据不会大量丢失的问题。那么今天呢我就来简单说说另一个NoSql数据库,MongoDB。

    “MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似 json 的 bjson 格式,因此可以存储比较复杂的数据类型。MongoDB 最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它是一个面向集合的,模式自由的文档型数据库。” 以上是我引用网上对MongoDB的介绍。简单来说就是“面向集合,格式自由(bjson),文档型数据库”。可以理解为数据以集合的形式存储、数据格式是BJSON(JSON的拓展、支持更加复杂的数据类型)。接下来我就来揭开Mongodb的面纱。

    (这里省略的MongoDB的安装过程,因为基本都是傻瓜式安装。。。)

    MongoDB概念解析

    SQL 术语/概念                                      mongodb术语/概念                                         解释/说明

    database                                                database                                                       数据库

    table                                                       collection                                                       数据库表/集合

    row                                                         document                                                      数据库记录行/文档

    column                                                    field                                                               数据字段/域

    index                                                       index                                                             索引

    table                                                        joins                                                         ~~~ 表连接,MongoDB不支持

    primary key                                             primary key                                               主键,MongoDB自动将_id字段设置为主键

     

    例子

    在关系型数据库中

    userinfo 表

    id username email age
    1 张三 zhangsan@qq.com 20
    2 李四 lisi@abc.com 24

    userInfo集合

    {	
    	"_id" : ObjectId("89779879798"),
        "username" : "张三",
        "email" : "zhangsan@abc.com",
        "age" : 20
    }
    {
        "_id" : ObjectId("151515151515151"),
        "username" : "李四",
        "age" : 25
    }

    几个简单的数据库命令

    在bin目录中双击mongo.exe就可以运行自带的客户端进行交互了 ,也可以在命令行通过如下方式方式启动。(这里我将mongodb的安装目录放在环境变量中,并将Mongdb建立为一个windows服务了)

    1.显示所有的数据库

    show dbs

    2. 切换/创建数据库

    use + database name

    3. 插入数据

    db.集合名.insert({

    })

    4.查询数据

    db.find() 

    5.更新数据

    db.collection.update(
               <query>,
               <update>,
               {
                 upsert: <boolean>,
                 multi: <boolean>,
                 writeConcern: <document>
               }
            )

    ....

     

    这里只介绍了简单操作的命令,大多数情况下我们都是在图形界面工具下操作MongoDB的。 这里分享一下我用的工具Robo 3T

     

    Java 操作MongoDB

    获取所有的集合名称

    public class MongoDB01 {
        public static void main(String[] args) {
    
    //        创建连接
            MongoClient client = new MongoClient("localhost", 27017);
    
    //        连接数据库
            MongoDatabase localdb = client.getDatabase("localdb");
    
    //        得到所有集合的名称
            MongoIterable<String> colsIte = localdb.listCollectionNames();
    
            MongoCursor<String> it = colsIte.iterator();
            while (it.hasNext()) {
                System.out.println(it.next());
            }
    
            System.out.println("================================");
            for (String colName : localdb.listCollectionNames()) {
                System.out.println(colName);
            }
    
            client.close();
        }
    }
    

     新增数据

    public static void main(String[] args) {
            MongoClient mongoClient = new MongoClient("localhost", 27017);
    
            MongoDatabase localdb = mongoClient.getDatabase("localdb");
    
    //        localdb.createCollection("mycol2");
    
            MongoCollection<Document> mycol2 = localdb.getCollection("mycol2");
    
            System.out.println(mycol2.countDocuments());
    
    
            Document document = new Document();
            document.append("username", "张三").append("age", 18);
            mycol2.insertOne(document);
    
            System.out.println(mycol2.countDocuments(new BasicDBObject("username", "张三")));
            mongoClient.close();
        }
    public class FindDocument {
        public static void main(String[] args) {
            MongoClient mongoClient = new MongoClient("127.0.0.1", 27017);
            MongoDatabase localdb = mongoClient.getDatabase("localdb");
            MongoCollection<Document> mycol1 = localdb.getCollection("mycol1");
            // 查找所有document
            FindIterable<Document> documents = mycol1.find();
            for (Document document : documents) {
                System.out.println(document);
            }
    
            System.out.println("--------------------------------");
    
            //查找name = 张三的document
            FindIterable<Document> documents1 = mycol1.find(new BasicDBObject("name", "张三"));
            for (Document document : documents1) {
                System.out.println(document);
            }
        }
    }
    

     

    相比于JDBC 是不是简单很多?只需要简单几行代码,要知道原生的JDBC 操作数据库可是需要一大堆代码的。

     

    Spring 整合MongoDB 

    首先引入相关的jar包,Spring 官方提供了Spring Data用于与各种数据库交互,我这里也使用了Spring Data。

    <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-commons</artifactId>
          <version>2.1.10.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.springframework.data</groupId>
          <artifactId>spring-data-mongodb</artifactId>
          <version>2.1.10.RELEASE</version>
        </dependency>
        <dependency>
          <groupId>org.mongodb</groupId>
          <artifactId>mongo-java-driver</artifactId>
          <version>3.11.0</version>
        </dependency>

    applicationContext-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/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/data/mongo https://www.springframework.org/schema/data/mongo/spring-mongo.xsd">
    
    
        <mongo:mongo-client host="127.0.0.1" port="27017" id="mongo"></mongo:mongo-client>
    
        <bean class="org.springframework.data.mongodb.core.MongoTemplate">
            <constructor-arg ref="mongo"></constructor-arg>
            <constructor-arg name="databaseName" value="localdb"></constructor-arg>
        </bean>
    </beans>

    Spring data 提供了MongoTemplate ,这个对象封装了MongoDB的一切操作。感兴趣的小伙伴可以看看源码。

    几个简单的测试demo:

    创建实体类User

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Document(collection = "mycol1")
    @EqualsAndHashCode
    public class User {
        @Id
        String id;
        String name;
        int age;
        String sex;
        Date birthhday;
    }
    
    @RunWith(value = SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = {"classpath:spring/applicationContext-*.xml"})
    public class MongoDBTestor {
    
        @Autowired
        private MongoTemplate mongoTemplate;
    
        @Test
        public void test1() {
    
            MongoDatabase db = mongoTemplate.getDb();
            System.err.println(db.getName());
            MongoIterable<String> mongoNames = db.listCollectionNames();
            MongoCursor<String> iterator = mongoNames.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
            }
        }
    
        @Test
        public void test2() {
            List<User> users = mongoTemplate.findAll(User.class);
            users.forEach(System.out::println);
    
            List<User> userList = mongoTemplate.find(new Query(Criteria.where("name").is("suben")), User.class);
            userList.forEach(System.out::println);
        }
    
        @Test
        public void test3() {
            ExecutableRemoveOperation.ExecutableRemove<User> remove = mongoTemplate.remove(User.class);
            DeleteResult all = remove.all();
            System.out.println(all.getDeletedCount());
        }
    
        @Test
        public void test4() {
    //        User user = new User();
    //        user.setAge(19);
    //        user.setName("张三");
    //        user.setSex("男");
    //        user.setRole(new Role("sdfsf","管理员","N"));
    //        user = mongoTemplate.insert(user);
    //        System.out.println(user);
            //
            User user = mongoTemplate.findById("5d7a6a82cabab751a36fe196", User.class);
            System.out.println(user);
        }
    }

     

    Spring Boot与MongoDB 整合

    现在正赶上Spring Boot大热的时候,一个搞Java开发的如果不会Spring Boot 就好像没学过Java一样。自然我们也少不了和Spring Boot 进行整合。

    引入需要的Spring Boot starter

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-data-mongodb</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-thymeleaf</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>

    application.yml配置

    server:
      port: 8080
    spring:
      mvc:
        date-format: yyyy-MM-dd
      http:
        encoding:
          charset: UTF-8
      jackson:
        time-zone: GMT+8
        date-format: yyyy-MM-dd
      data:
        mongodb:
          database: localdb
          host: localhost
          port: 27017

    同样的也需要创建一个实体类User

    @Data
    @AllArgsConstructor
    @NoArgsConstructor
    @Document(collection = "mycol1")
    @EqualsAndHashCode
    public class User {
        @Id
        String id;
        String name;
        int age;
        String sex;
        Date birthhday;
    }
    

     测试demo:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpbmongodbApplicationTests {
    
        @Autowired
        MongoTemplate mongoTemplate;
    
        @Test
        public void test1() {
    
            MongoDatabase db = mongoTemplate.getDb();
            MongoCollection<Document> mycol1 = db.getCollection("mycol1");
            FindIterable<Document> documents = mycol1.find();
            MongoCursor<Document> iterator = documents.iterator();
            while (iterator.hasNext()) {
                System.out.println(iterator.next());
            }
        }
    
        @Test
        public void test2() {
            List<User> users = mongoTemplate.find(new Query(Criteria.where("name").is("苏犇")), User.class);
            for (User user : users) {
                System.out.println(user);
            }
        }
    
        @Test
        public void test3() {
            User user = new User();
            user.setAge(12);
            user.setBirthhday(new Date());
            user.setName("李四");
            user.setSex("男");
    
            user = mongoTemplate.insert(user);
            System.out.println(user);
        }
    
    }
    

    本来到这里也就可以结束了,但是我突然有个想法,不知道 Spring Data + MongoDB 对JDK 8 中的一些特性支持怎么样。于是我在实体类中创建了一个LocalDate 类型的属性date ,如下

    再来测试一下数据测试插入:

    @RunWith(SpringRunner.class)
    @SpringBootTest
    public class SpbmongodbApplicationTests {
    
        @Autowired
        MongoTemplate mongoTemplate;
    
        .............
    
        @Test
        public void test4() {
            User user = new User();
            user.setAge(15);
            user.setBirthhday(new Date());
            user.setName("李四1");
            user.setSex("女");
            user.setDate(LocalDate.now());
            user = mongoTemplate.insert(user);
            System.out.println(user);
        }
    
    }
    

     程序运行成功,并且mongo db 的id 也自动给回填上了。

     查一下数据库

    可以看到刚才那条数据也正常插入mongodb了。并且可以看到无论是java.util.Date 还是 java.time.LocalDate 都会被已mongoDB的Date数据类型存入DB 。可以看到Spring Data + MongoDB 对JDK 8中的新特性LocalDate 支持还是非常好的。

    展开全文
  • 第21章 中文乱码问题与国际化 610 21.1 中文乱码问题产生的由来 610 21.1.1 常用字符集 610 21.1.2 对乱码产生过程的分析 612 21.2 中文乱码问题的解决方案 614 21.3 使用过滤器解决中文问题 616 21.4 让...
  • 选题的特色:本毕业设计的开题经过走访调查和文献查阅等多种方式,基本可以现实的需求相一致,并能体现用所的知识和计算机技术解决实际问题。 选题的创新点:该选题采用的均是计算机成熟的技术,在计算机技术...
  • 附件厦门大学2017年转专业考试第二志愿各专业复试分数线序号学院专业总分1公共事务学院公共管理类131.52管理学院酒店管理1053国际关系学院政治类139.54化学化工学院化学类1295建筑土木
  • 复旦大学的院、系、所有多少?

    千次阅读 2018-02-11 11:37:08
    这是2018年2月12日的统计结果,分类为我所添加,不一定有理: 文科:复旦学院  中国语言文学系 哲学学院历史学系 旅游学系文物和博物馆学系外国语言文学学院法学院国际关系与公共事务学院新闻学院经济学院管理学院...

    复旦大学的院、系、所、中心

    复旦的院、系、所、中心很多很多,也很杂,且很难分类。这是2018年2月12日的统计结果,分类为我所添加,不一定有理:


     文科:

    复旦学院  
    中国语言文学系
    哲学学院
    历史学系
    旅游学系
    文物和博物馆学系
    外国语言文学学院
    法学院
    国际关系与公共事务学院
    新闻学院

    经济学院
    管理学院 
    社会发展与公共政策学院

    理科:

    数学科学学院
    物理学系
    化学系
    高分子科学系
    环境科学与工程系
    信息科学与工程学院
    计算机科学技术学院
    软件学院
    微电子学院
    材料科学系
    航空航天系(原力学与工程科学系)
    生命科学学院
    大数据学院
    大气科学研究院
    类脑智能科学与技术研究院

    人类表型组研究院

    医学:

    基础医学院

    临床医学院(待恢复)
    药学院
    公共卫生学院

    护理学院

    经济政治

    国际文化交流学院

    马克思主义学院

    艺术教育中心

    体育:

    体育教学部


    分析测试中心
    实验动物科学部

    放射医学研究所

    古籍整理研究所

    历史地理

    中国历史地理研究所

    其他

    高等教育研究所
    现代物理研究所
    核科学与技术系
    神经生物学研究所
    发育生物学研究所
    国际问题研究院
    先进材料实验室
    专用材料与装备技术研究院
    生物医学研究院
    脑科学研究院
    出土文献与古文字研究中心
    文史研究院
    社会科学高等研究院
    高等学术研究院
    中国研究院
    继续教育学院
    网络教育学院


    展开全文
  • 该案例采用目前最流行、最规范的java ee架构,整个应用分为jpa实体层、eao层、业务逻辑层、mvc层和视图层,各层之间分层清晰,层层之间以松耦合的方法组织在一起。该案例既提供了ide无关的、基于ant管理的项目源码...
  • 数据化决策

    2016-04-11 15:18:18
    第4章 厘清待量化事物决策的关系 清晰定义“不确定性”和“风险” 为退伍军人事务部IT 安全项目进行的量化工作 第5章 校准训练:修正你的判断 校准练习:让“估计”变得更准确 你的估值范围=你的认知程度 90%的...
  • Struts2【UI标签、数据回显、资源国际化】 Struts2【OGNL、ValueStack】 Struts2【整合Spring】 :pencil:Mybatis Mybatis总结 Mybatis【入门】 Mybatis【配置文件】 Mybatis【关联映射】 Mybatis【缓存、代理、...
  • 1.1.1 爪哇岛的历史演变 2 1.1.2 爪哇岛基本生存规则 4 1.1.3 爪哇岛上新人新风尚 11 1.2 练习 15 1.2.1 搭建Java开发环境 15 1.2.2 体验Java程序开发 21 1.2.3 J2SE 5.0新特性实践 26 1.3 小结 35 第2章 ...
  • MySQL事务与MVCC如何实现的隔离级别 我说 SELECT COUNT(*) 会造成全表扫描,面试官让我回去等通知 阿里面试:说说一致性读实现原理? 为什么MySQL不建议使用delete删除数据? 工作以来总结的大厂SQL调优姿势 为啥...
  • 11.2.1 ServerSocketSocket示例: 开发一个Server-Client模型的程序 291 11.2.2 多点传送示例 293 11.2.3 打造你自己的QQ 295 11.3 小结 315 第12章 找个好管家——JMX 317 12.1 讲解 318 12.1.1 什么是 JMX...
  • 11.2.1 ServerSocketSocket示例: 开发一个Server-Client模型的程序 291 11.2.2 多点传送示例 293 11.2.3 打造你自己的QQ 295 11.3 小结 315 第12章 找个好管家——JMX 317 12.1 讲解 318 12.1.1 什么是 JMX...
  • asp.net知识库

    2015-06-18 08:45:45
    Ado.net NHibernate的关系? 动态创建数据库 SQL Server数据库安全规划全攻略 .net通用数据库访问组件SQL Artisan应用简介1 在Framework1.0下同时连接SqlServer和Oracle的一些体会 XML XPath XPath最通俗的教程...
  • 达内java培训目录

    2016-02-06 01:03:30
    持久层框架技术 ORM概念、Hibernate核心API、Hibernate实体映射技术、Hibernate关系映射技巧、HQL查询、OSCache及Hibernate缓存技术; 掌握JQuery核心API;了解JQuery基本设计原则;了解多种JQuery插件;掌握DWR的...
  • 软件工程教程

    热门讨论 2012-07-06 23:10:29
    对象 关系 对象 关系 类图和对象图的区别 包 包 一种分组机制,把各种各样的模型元素通过内在的语义连在一起成为一个整体就叫做包 包的关系 包--软件比赛作品 架构图--包图的变形 任务4 UML...
  • 作者通过总结各自多年的软件开发和教学培训经验,大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • 作者通过总结各自多年的软件开发和教学培训经验,大家分享了掌握Oracle SQL所独有的丰富功能的技巧所在,内容涵盖SQL执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧:...
  • 计算机网络(第四版+潘爱民)

    千次下载 热门讨论 2011-10-09 12:41:20
    1.3.5 服务协议的关系 1.4 参考模型 1.4.1 OSI参考模型 1.4.2 TCP/IP参考模型 1.4.3 OSI参考模型TCP/IP参考模型的比较 1.4.4 OSI模型和协议的缺点 1.4.5 TCP/IP参考模型的缺点 1.5 网络实例 1.5.1 Internet ...
  • Java开发详解.zip

    2019-09-02 17:46:13
    031103_【第11章:Java常用类库】_国际化程序笔记.pdf 031104_【第11章:Java常用类库】_System类笔记.pdf 031105_【第11章:Java常用类库】_日期操作类(Date、Calendar)笔记.pdf 031106_【第11章:Java常用类库】...
  • 疯狂JAVA讲义

    2014-10-17 13:35:01
    学生提问:使用组合关系来实现复用时,需要创建两个Animal对象,是不是意味着使用组合关系时系统开销更大? 159 5.9 初始化块 159 5.9.1 使用初始化块 160 5.9.2 初始化块和构造器 161 5.9.3 静态初始化块 162 ...
  • 2008年8月,为进一步抓住国际新科技革命为网络领域带来的难得发展机遇,加速提升学校在网络领域中的高新技术自主创新能力和持续竞争力,解决国家重大战略需求,北京邮电大学依托网络交换技术国家重点实验室成立了...
  • 申请学位类别 工 程 硕 士 学位授予单位 东 南 大 工程领域名称 软 件 工 程 论文答辩日期 研究方向 Android+HTML5 学位授予日期 答辩委员会主席 评阅人 硕士学位论文 基于Android+HTML5的移动...
  • 2 逻辑地址空间物理地址空间  9. 1. 3 动态加载  9. 1. 4 动态链接共享库  9. 1. 5 覆盖  9. 2 交换  9. 3 连续内存分配  9. 3. 1 内存保护  9. 3. 2 内存分配  9. 3. 3 碎片  9. 4 分页  9. 4. 1 ...
  • SQL语法大全

    2014-03-30 11:00:11
    1. ASPAccess数据库连接: dim conn,mdbfile mdbfile=server.mappath("数据库名称.mdb") set conn=server.createobject("adodb.connection") conn.open "driver={microsoft access driver (*.mdb)};uid=admin;...
  • 10.4.3 国际化和资源 468 10.4.4 用于本地化的资源 472 10.4.5 使用Visual Studio.NET的本地化样例 473 10.5 全局装配件高速缓冲存储器 483 10.5.1 本机图像生成器 483 10.5.2 全局装配件高速缓冲存储器...
  • Jeecg-Boot低代码开发平台,可以应用在任何J2EE项目的开发中,尤其适合SAAS项目、企业信息管理系统(MIS)、内部办公系统(OA)、企业资源计划系统(ERP)、客户关系管理系统(CRM)等,其半智能手工Merge的开发方式...

空空如也

空空如也

1 2
收藏数 30
精华内容 12
关键字:

学国际事务与国际关系