对象关系映射

Mybatis常见面试题总结

泄露秘密 提交于 2019-12-23 08:31:48
1、什么是Mybatis? (1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 (3)通过xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java对象和 statement中sql的动态参数进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将结果映射为java对象并返回。(从执行sql到返回result的过程)。 2、Mybaits的优点: (1)基于SQL语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL写在XML里,解除sql与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态SQL语句,并可重用。 (2)与JDBC相比,减少了50%以上的代码量,消除了JDBC大量冗余的代码,不需要手动开关连接; (3)很好的与各种数据库兼容(因为MyBatis使用JDBC来连接数据库,所以只要JDBC支持的数据库MyBatis都支持)。 (4

Mybatis学习--Mapper.xml映射文件

只谈情不闲聊 提交于 2019-12-23 08:23:03
本文转载自: https://www.cnblogs.com/lcngu/p/5470695.html 作者:lcngu 转载请注明该声明。 简介    Mapper.xml 映射文件中定义了操作数据库的 sql ,每个 sql 是一个 statement ,映射文件是 mybatis 的核心。   映射文件中有很多属性,常用的就是 parameterType( 输入类型 )、 resultType( 输出类型 )、resultMap()、rparameterMap()。 parameterType(输入类型)    1、 #{}与${}   #{} 实现的是向 prepareStatement 中的预处理语句中设置参数值, sql 语句中 #{} 表示一个占位符即 ? 。 1 <!-- 根据id查询用户信息 --> 2 < select id ="findUserById" parameterType ="int" resultType ="user" > 3 select * from user where id = #{id} 4 </ select >   使用占位符 #{} 可以有效防止 sql 注入 ,在使用时不需要关心参数值的类型, mybatis 会自动进行 java 类型和 jdbc 类型的转换。 #{} 可以接收简单类型值或 pojo 属性值,如果

[转贴]什么是ORM

夙愿已清 提交于 2019-12-21 01:09:17
对象关系映射(Object Relational Mapping,简称ORM)是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。 简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将java程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种形式转换到另外一种形式。 这也同时暗示者额外的执行开销;然而,如果ORM作为一种中间件实现,则会有很多机会做优化,而这些在手写的持久层并不存在。 更重要的是用于控制转换的元数据需要提供和管理;但是同样,这些花费要比维护手写的方案要少;而且就算是遵守ODMG规范的对象数据库依然需要类级别的元数据。 对象-关系映射(Object/Relation Mapping,简称ORM),是随着面向对象的软件开发方法发展而产生的。面向对象的开发方法是当今企业级应用开发环境中的主流开发方法,关系数据库是企业级应用环境中永久存放数据的主流数据存储系统。对象和关系数据是业务实体的两种表现形式,业务实体在内存中表现为对象,在数据库中表现为关系数据。内存中的对象之间存在关联和继承关系,而在数据库中,关系数据无法直接表达多对多关联和继承关系。因此,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。 面向对象是从软件工程基本原则(如耦合、聚合、封装)的基础上发展起来的

resultMap和resultType的区别

好久不见. 提交于 2019-12-20 23:51:36
Mybatis中输出映射resultType与resultMap的区别 (原文地址: http://blog.csdn.net/acmman/article/details/46509375 ) 总结 基本映射 :(resultType)使用resultType进行输出映射,只有查询出来的列名和pojo中的属性名一致,该列才可以映射成功。(数据库,实体,查询字段,,这些全部都得一一对应) 高级映射 :(resultMap) 如果查询出来的列名和pojo的属性名不一致,通过定义一个resultMap对列名和pojo属性名之间作一个映射关系。(高级映射,字段名称可以不一致,通过映射来实现) 一、resultType 使用resultType进行输出映射,只有查询出来的列名和pojo(实体bean)中的属性名一致,该列才可以映射成功。 如果查询出来的列名和pojo中的属性名全部不一致,没有创建pojo对象。 只要查询出来的列名和pojo中的属性有一个一致,就会创建pojo对象。 1、输出简单类型 1).需求 用户信息的综合查询列表总数,通过查询总数和上边用户综合查询列表才可以实现分页。 2).mapper.xml [html] view plain copy < mapper namespace= "cn.edu.hpu.mybatis.mapper.UserMapper" > <!--

MyBatis框架之基本知识介绍

假如想象 提交于 2019-12-19 04:09:41
前身背景: 前身是iBatis,为Apache的一个开源项目。2010年迁移到了Google Code,改名为MyBatis.2013年迁移到Github。 MyBatis框架以及ORM MyBatis是一个开源的数据持久层框架,内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射。作为持久层框架,主要思想是将程序中的大量的SQL语句分离出来,配置在相应的配置文件中,这样可以在不修改代码的情况下,直接在配置文件中的修改SQL。 ORM(Object/Relational Mapping)对象关系映射。是一种数据持久化的技术。在对象模型和关系型数据库之间建立关系,并且提供了一种机制,通过JavaBean对象去操作数据库表中的数据。MyBatis通过简单的XML或者注解进行配置和原始映射,将实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。 MyBatis环境搭建: 1.下载jar包, 官方网站: http://mybatis.org .(目前官网在国内受限制,若可以访问到,所有下载链接全部引导至github上-----推荐下载mybatis-3.2.2.zip和mybatis-3-mybatis-3.2.2.zip) github网址:https://github.com/mybatis/mybatis-3/releases. 2

初始MyBatis

橙三吉。 提交于 2019-12-19 02:30:46
为什么使用框架 框架的优势如下: 1.不用再考虑公共问题,框架已经帮我们做好了。 2.可以专心用于业务逻辑,保证核心业务逻辑的开发质量。 3.结构统一,便于学习和维护。 4.框架中继承了前人的经验,可以帮助新手写出稳定、性能优良而且结构优美的高质量程序。 什么是框架 框架(Framework)是一个提供了可重用的公共结构的半成品。 框架就是应用程序的“骨架”,开发者可以在这个骨架上加入自己的东西。 2.MyBatis介绍及其环境搭建 MyBatis前身是iBatis,本是Apache的一个开源的项目 ORM框架 实体类和SQL语句之间建立映射关系 特点 基于SQL语法,简单易学 能了解底层封装过程 SQL语句封装在配置文件中,便于统一管理与维护,降低程序的耦合度 方便程序代码调试 什么是数据持久化 数据持久化就是将内存中的数据模型转换为存储模型,已经将存储模型转换为内存中的数据模型的统 称。 什么是ORM ORM(Object/Relational Mapping)即对象/关系映射,是一种持久化技术。 在对象模型和关系数据库模型之间建立起对应关系,并且提供了一种机制,通过JavaBean对象去操作 数据库表中的数据。 MyBatis通过简单的XML或者注解进行配置和原始映射,将实体类和SQL语句之间建立映射,是一种半 自动化的ORM实现。 MyBatis环境搭建 1.下载jar包

ORM实现原理

久未见 提交于 2019-12-18 13:10:41
1.什么是ORM ORM的全称是Object Relational Mapping,即对象关系映射。它的实现思想就是将关系数据库中表的数据映射成为对象,以对象的形式展现,这样开发人员就可以把对数据库的操作转化为对这些对象的操作。因此它的目的是为了方便开发人员以面向对象的思想来实现对数据库的操作。 2.什么是Hibernate 对于Hibernate的称呼有很多,比如工具、技术、框架以及解决方案等,这些都可以,重要的是大家要知道它的作用。在这里我习惯性称它为框架,它是一种能实现ORM的框架。能实现ORM这个功能的框架有很多,Hibernate可以说是这些框架中最流行、最受开发者关注的,甚至连JBoss公司也把它吸收进来,利用它在自己的项目中实现ORM功能。 3.ORM的实现原理 现在在Java领域大家对Hibernate的讨论很多,比如它的优缺点、如何应用、错误如何解决以及把它和Struts/Spring等框架相结合作为整个系统的解决方案。在这里我想和大家探讨一些更深层次的话题,那就是Hibernate是如何实现ORM的功能?如果让我们自己开发一款实现ORM功能的框架需要怎么做?其实这些问题就是围绕着一个词,那就是“映射”,如果我们知道如何实现这种映射那么我们也能够开发出自己的一款ORM框架。会使用Hibernate的开发人员都知道,在使用它实现ORM功能的时候,主要的文件有:映射类

五分钟理解一致性哈希算法(consistent hashing)

喜你入骨 提交于 2019-12-18 10:32:24
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 1、 平衡性(Balance) :平衡性是指哈希的结果能够尽可能分布到所有的缓冲中去,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。 2、 单调性(Monotonicity) :单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够保证原有已分配的内容可以被映射到原有的或者新的缓冲中去,而不会被映射到旧的缓冲集合中的其他缓冲区。 3、 分散性(Spread) : 在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可 能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不 同缓冲中去,降低了系统存储的效率

五分钟理解一致性哈希算法(consistent hashing)

不羁的心 提交于 2019-12-18 10:19:10
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 简介: 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT)实现算法,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简 单哈希算法带来的问题,使得分布式哈希(DHT)可以在P2P环境中真正得到应用。 一致性hash算法提出了在动态变化的Cache环境中,判定哈希算法好坏的四个定义: 平衡性(Balance): 平衡性是指 哈希的结果能够尽可能分布到所有的缓冲中去 ,这样可以使得所有的缓冲空间都得到利用。很多哈希算法都能够满足这一条件。 单调性(Monotonicity): 单调性是指如果已经有一些内容通过哈希分派到了相应的缓冲中,又有新的缓冲加入到系统中。哈希的结果应能够 保证原有已分配的内容可以被映射到原有的或者新的缓冲中去 ,而不会被映射到旧的缓冲集合中的其他缓冲区。 分散性(Spread): 在分布式环境中,终端有可能看不到所有的缓冲,而是只能看到其中的一部分。当终端希望通过哈希过程将内容映射到缓冲上时,由于不同终端所见的缓冲范围有可能不同,从而导致哈希的结果不一致,最终的结果是相同的内容被不同的终端映射到不同的缓冲区中。这种情况显然是应该避免的,因为它导致相同内容被存储到不同缓冲中去, 降低了系统存储的效率

ElasticSearch(5)-Mapping

戏子无情 提交于 2019-12-18 10:08:21
一、Mapping概述 映射 为了能够把日期字段处理成日期,把数字字段处理成数字,把字符串字段处理成全文本(Full-text)或精确的字符串值,Elasticsearch需要知道每个字段里面都包含了什么类型。这些类型和字段的信息存储(包含)在映射(mapping)中。 正如《数据吞吐》一节所说,索引中每个文档都有一个类型(type)。 每个类型拥有自己的映射(mapping)或者模式定义(schema definition)。一个映射定义了字段类型,每个字段的数据类型,以及字段被Elasticsearch处理的方式。映射还用于设置关联到类型上的元数据。 这里只是入门。 例如,可以使用映射来定义: 字符串字段是否作为全文本搜索字段 哪些字段包含数字,日期或地理信息 文档中所有字段的值是否应该被索引到_all字段 日期值的格式 自定义规则来控制动态添加的字段的映射 映射类型与type :即一个索引中有多个type,从逻辑上对文档进行划分、每个索引有一个或多个映射类型,类型是对Document划分的逻辑组,索引中每个文档都有一个类型( type ),每个类型拥有自己的映射或者模式定义(schema definition) 。每个映射类型包括: 关联到类型上的元数据,比如:_index, _type, _id, and _source 字段或属性的定义,比如:字段类型,每个字段的数据类型