对象关系映射

备战2020春招,这次彻底搞懂MyBatis,这些面试题没白刷(附答案)

﹥>﹥吖頭↗ 提交于 2019-12-28 02:54:15
前言: 春招面试题MyBatis篇来咯!!! Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。程序员直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高。 最近有好多朋友在准备春招,所以小编也会多出一些面试专题的文章给有需要的人,所以记得给我点个关注哦 一.MyBatis 框架的缺点: 1、SQL 语句的编写工作量较大,尤其当字段多、关联表多时,对开发人员编写 SQL 语句的功底有一定要求。 2、SQL 语句依赖于数据库,导致数据库移植性差,不能随意更换数据库。 二.MyBatis 框架适用场合: 1、MyBatis 专注于 SQL 本身,是一个足够灵活的 DAO 层解决方案。 2、对性能的要求很高,或者需求变化较多的项目,如互联网项目,MyBatis 将是 不错的选择。 三.MyBatis 与 Hibernate 有哪些不同? 1、Mybatis 和 hibernate 不同,它不完全是一个 ORM 框架,因为 MyBatis 需要 程序员自己编写 Sql 语句。 2、Mybatis 直接编写原生态 sql,可以严格控制 sql 执行性能,灵活度高,非常 适合对关系数据模型要求不高的软件开发,因为这类软件需求变化频繁,一但需

mybatise

丶灬走出姿态 提交于 2019-12-27 05:48:20
JDBC public static void main(String[] args) { ResultSet resultSet = null; PreparedStatement preparedStatement = null; Connection connection = null; try { // 加载驱动 Class.forName("com.mysql.jdbc.Driver"); // 创建数据库连接 String url = "jdbc:mysql://127.0.0.1:3306/mybatis_0505"; String user = "root"; String password = "123456"; connection = DriverManager.getConnection(url, user, password); // 创建statmenet String sql = "SELECT * FROM tb_user WHERE id = ?"; preparedStatement = connection.prepareStatement(sql); // 设置参数、执行sql,2个参数,第一个是参数的下标,从1开始,第二个参数数据查询条件数据 preparedStatement.setLong(1, 1L); resultSet =

MyBatis ResultMap

时光怂恿深爱的人放手 提交于 2019-12-26 23:40:28
MyBatis 真正强大之处就在这些映射语句,也就是它的魔力所在。对于它的强大功能,SQL 映射文件的配置却非常简单。 如果您比较SQL 映射文件配置与JDBC 代码,您很快可以发现,使用SQL 映射文件配置可以节省95%的代码量。MyBatis 被创建来专注于SQL,但又给您自己的实现极大的空间。 需要配置的基本元素 1. cache – 配置给定模式的缓存 2. cache-ref – 从别的模式中引用一个缓存 3. resultMap – 这是最复杂而却强大的一个元素了,它描述如何从结果集中加载对象 4. sql – 一个可以被其他语句复用的SQL 块 5. insert – 映射INSERT 语句 6. update – 映射UPDATE 语句 7. delete – 映射DELEETE 语句 8. select - 映射SELECT语句 配置注意 SQL 映射XML 文件只有一些基本的元素需要配置,并且要按照下面的顺序来定义 写好SQL语句映射文件后,需要在MyBAtis主配置文件mappers标签中引用! 例如: [html] view plain copy <!--mappers是告诉MyBatis 去哪寻找映射SQL 的语句。可以使用类路径中的资源引用,或者使用字符,输入确切的URL 引用。--> < mappers > < mapper resource =

Mybatis篇

只谈情不闲聊 提交于 2019-12-26 02:39:01
1.Mybatis比IBatis比较大的几个改进是什么 1>接口绑定,包括注解绑定和xml绑定 2>动态sql有原来的节点配置变成ONGL表达式(#{}) 3>在一对一(多对一),一对多的时候引进了associateion,在一对多的时候引入了collection节点,不过都是在resultMap里配置 2.什么是MyBatis的接口绑定,有什么好处 接口映射就是在MyBatis中任意定义接口,然后把接口里面的方法和SQL语句绑定,我们直接调用接口方法就可以了 比sqlSession提供的方法我们可以有更加灵活的选择和设置 // 加载接口 UserDao userDao = sqlSession.getMapper(UserDao.class); 3.接口绑定有几种实现方式,分别是怎么实现的? 接口绑定有两种实现方式 1>注解式---在接口上面加上@select-@update等注解里面包含Sql语句来绑定 2>xml方式--SQL来绑定,xml文件里面是我namespace必须为接口的全限定名 4.什么情况下用注解绑定,什么情况下用xml绑定 用SQL语句较简单时,用注解绑定 用SQL语句比较复杂时,用xml ,一般用xml 5.MyBatis实现一对一有几种方式?具体怎么操作的 有联合查询和嵌套查询 联合查询时几个表联合查询,只查询一次

Linux 内核中的 Device Mapper 机制

瘦欲@ 提交于 2019-12-25 16:11:08
Device Mapper 是 Linux2.6 内核中支持逻辑卷管理的通用设备映射机制,它为实现用于存储资源管理的块设备驱动提供了一个高度模块化的内核架构,如图 1。 图1 Device Mapper的内核体系架构 在内核中它通过一个一个模块化的 target driver 插件实现对 IO 请求的过滤或者重新定向等工作,当前已经实现的 target driver 插件包括软 raid、软加密、逻辑卷条带、多路径、镜像、快照等,图中 linear、mirror、snapshot、multipath 表示的就是这些 target driver。Device mapper 进一步体现了在 Linux 内核设计中策略和机制分离的原则,将所有与策略相关的工作放到用户空间完成,内核中主要提供完成这些策略所需要的机制。Device mapper 用户空间相关部分主要负责配置具体的策略和控制逻辑,比如逻辑设备和哪些物理设备建立映射,怎么建立这些映射关系等等,而具体过滤和重定向 IO 请求的工作由内核中相关代码完成。因此整个 device mapper 机制由两部分组成–内核空间的 device mapper 驱动、用户空间的device mapper 库以及它提供的 dmsetup 工具。在下文中,我们分内核和用户空间两部分进行介绍。 内核部分 Device mapper

【SSH进阶之路】Hibernate映射——多对一单向关联映射(四)

随声附和 提交于 2019-12-24 14:01:52
【SSH进阶之路】Hibernate基本原理(一) ,小编介绍了Hibernate的基本原理以及它的核心,採用对象化的思维操作关系型数据库。 【SSH进阶之路】Hibernate搭建开发环境+简单实例(二) ,小编搭建了基本Hibernate的开发环境,并做了一个简单实例。对它的基本原理有了一个理性的认识。 【SSH进阶之路】Hibernate基本映射(三) ,我们介绍了Hibernate的基本映射(即对一个实体进行映射)的相关概念,并给大家实现相关实例。比較简单。 这篇博客。我们開始介绍基于基本映射的关联关系映射。 概念 基本映射是对一个实体进行映射,关联映射就是处理多个实体之间的关系,将关联关系映射到数据库中,所谓的关联关系在对象模型中有一个或多个引用。 分类 关联关系分为上述七种,可是因为相互之间有各种关系,能够简化,比如:多对一与一对多映射,仅仅是側重的角度不正确而已。 映射技巧 映射技巧是小编写映射文件的过程。总结的经典内容,总共分为四步,咋看不是特别易懂,可是效果非常好。以下我们以实例看技巧。 (1)写凝视 格式为:?属性,表达的是本对象与?的?关系。 解释:在写映射文件之前先写凝视。将问号的地方填上对应的内容。比如:<!-- group属性,表达的是本对象(User)与Group的多对一的关系--> (2)写映射的框架(拷模版) 多对一 <many-to-one

初识MyBatis

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-24 13:57:29
MyBatis框架   MyBatis是一个优秀的数据持久层框架,在实体类和SQL语句之间建立映射关系,是一种半自动化的ORM实现。其封装性要低于Hibernate,性能优秀,并且小巧、简单易学,现在应用也越来越广泛。 数据持久化概念   数据持久化是将内存中的数据模型转换为存储模型,以及将存储模型转换为内存中的数据模型的统称。例如,文件的存储、数据的读取等都是数据持久化操作。数据模型可以是任何数据结构或对象模型,存储模型可以是关系模型、XML、二进制流等。 MyBatis框架简介   MyBatis是一个开源的数据持久层框架。它内部封装了通过JDBC访问数据库的操作,支持普通的SQL查询、存储过程和高级映射,几乎消除了所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis作为持久层框架,其主要思想是将程序中的大量SQL语句剥离出来,配置在配置文件中,实现SQL的灵活配置。这样做的好处是将SQL与程序代码分离,可以在不修改程序代码的情况下,直接在配置文件中修改SQL。   MyBatis的前身是iBatis,本身是Apache的一个开源项目,2010年这个项目有Apache Software Foundation迁移到了Google Code,并改名为MyBatis。2013年迁移到Github。 ORM介绍   ORM(Object/Relational

Java 包中重要接口介绍

喜欢而已 提交于 2019-12-24 11:29:01
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> --applet:applet是一种Java程序。它一般运行在支持Java的Web浏览器内。因为它有完整的Java API支持,所以applet是一个全功能的Java应用程序。 --awt:用于创建用户界面和绘制图形图像的所有分类 --beans:包含与开发 beans 有关的类,即基于 JavaBeansTM 架构的组件。 --io:通过数据流、序列化和文件系统提供系统输入和输出。 .Serializable 串行化,将对象存储到介质(如文件、内在缓冲区等)中或是以二进制方式通过网络传输。 类通过实现 java.io.Serializable 接口以启用其序列化功能。 .Closeable Closeable 是可以关闭的数据源或目标。 .Flushable Flushable 是可刷新数据的目标地。 --lang:提供利用 Java 编程语言进行程序设计的基础类。 .Appendable 能够被追加 char 序列和值的对象。 .CharSequence CharSequence 是 char 值的一个可读序列。 .Cloneable 此类实现了 Cloneable 接口,以指示 Object.clone() 方法可以合法地对该类实例进行按字段复制。 .Comparable<T>

Hibernate一对一关联映射配置

烈酒焚心 提交于 2019-12-24 06:27:29
一、一对一关联 Hibernate提供了两种映射一对一关联关系的方式:按照外键映射和按照主键映射。下面以员工账号和员工档案表为例,介绍这两种映射方式,并使用这两种映射方式分别完成以下持久化操作: (1)保存员工档案的同时分配给员工一个账号。 (2)加载员工档案的同时加载账号信息。 按照外键映射: 关系图: ①创建实体类:Resume、Users 并封装属性 public class Resume { //档案id private Integer resid; //档案名称 private String resname; //档案编号 private String rescardno; //员工对象 private Users users; } public class Users { //员工id private Integer userid; //员工姓名 private String username; //员工密码 private String userpass; //档案对象 private Resume resume; } ② 配置小配置 Users.hbm.xml 注:property-ref="users" 表明Resume的users属性建立了从Users对象到Resume对象的关联 <?xml version="1.0" encoding="UTF-8"?> <

一、MyBatis简介

杀马特。学长 韩版系。学妹 提交于 2019-12-24 01:14:08
1.发展历史 MyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到 Github 。【 百度百科 】 2.简介 MyBatis 是一个优秀的基于java的持久层框架,它内部封装了JDBC,使开发者只需关注SQL语句,而不用再花费精力去处理诸如注册驱动、创建Connection、配置Statement等繁杂过程。 MyBatis 通过xml或注解的方式将要执行的各种statement(statement、prepareStatement)配置起来,并通过java对象和Statement中SQL的动态参数进行映射生成最终执行的SQL语句,最后由MyBatis 框架执行SQL并将结果映射成java对象并返回。 MyBatis是一个支持 普通 SQL 查询 , 存储过程 和 高级映射 的优秀 持久层框架 。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及对结果集的检索封装。MyBatis可以使用简单的 XML或注解 用于配置和原始映射,将接口和Java的POJO(Plain Old Java Objects,普通的Java对象)映射成数据库中的记录。 3.MyBatis 与Hiberna