对象关系映射

hibernate集合映射(转载)

梦想与她 提交于 2019-12-01 19:45:01
POJOs如下: Customer类---->customer表 Order类对应---->orders表 customer(1)<----->(n)order public class Customer { private String id; private String username; private String password; private Timestamp registerTime; private int age; private Set<Order> orders = new HashSet<Order>(); /*setter and getter method*/ } public class Order { private String id; private String orderNumber; private int balance; private Customer customer; /*setter and getter method*/ } Set集合映射: Hibernate为集合映射提供了专用的标签元素,Set集合映射,就使用<set>标签表示: <?xml version="1.0" encoding="utf-8"?> <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate

震惊!!!SSM居然是这样的!

北战南征 提交于 2019-12-01 19:30:20
SSM框架 SSM ( Spring+SpringMVC+MyBatis )框架集由 Spring 、 MyBatis 两个开源框架整合而成( SpringMVC 是 Spring 中的部分内容)。常作为数据源较简单的 web 项目的框架。 一、 Spring 部分    Spring 就像是整个项目中装配 bean 的大工厂,在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。    Spring 的核心思想是 IoC (控制反转),即不再需要程序员去显式地 `new` 一个对象,而是让 Spring 框架帮你来完成这一切。 1 、 Spring 的运行流程 第一步:加载配置文件 ApplicationContext ac = new ClassPathXmlApplicationCont ext("beans.xml"); , ApplicationContext 接口,它由 BeanFactory 接口派生而来,因而提供了 BeanFactory 所有的功能。配置文件中的 bean 的信息是被加载在 HashMap 中的,一个 bean 通常包括, id , class , property 等, bean 的 id 对应 HashMap 中的 key , value 呢就是 bean 第二步:调用 getBean 方法,

mybatis中一对一关系映射

∥☆過路亽.° 提交于 2019-12-01 13:58:52
一对一关系中普通的配置方式 一.多表连接查询语句: <select id="selectStudentWithAddress" parameterType="int" resultMap="StudentWithAddressResult"> select s.stud_id, s.name, s.email,s.dob,s.phone, a.addr_id, a.street, a.city, a.state, a.zip,a.country from students s left outer join addresses a on s.addr_id=a.addr_id where stud_id=#{id} </select> 1. 把所有的查询结果,在一个resultMap中映射 <resultMap type="Student" id="StudentWithAddressResult"> <id property="studId" column="stud_id" /> <result property="name" column="name" /> <result property="email" column="email" /> <result property="phone" column="phone" /> <!--adderss是Student的内置对象

Mybatis最权威的知识点

ぐ巨炮叔叔 提交于 2019-12-01 13:28:54
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

SpringMVC和hibernate工作流程描述

半世苍凉 提交于 2019-12-01 12:27:18
SpringMVC 工作流程描述 (1)向服务器发送HTTP请求,请求被前端控制器 DispatcherServlet 捕获。 (2)DispatcherServlet 根据 <servlet-name>-servlet.xml 中的配置对请求的URL进行解析,得到请求资源标识符(URI)。 然后根据该URI,调用 HandlerMapping 获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以 HandlerExecutionChain 对象的形式返回。 (3)DispatcherServlet 根据获得的Handler,选择一个合适的 HandlerAdapter 。(附注:如果成功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(...)方法)。 (4)提取Request中的模型数据,填充Handler入参,开始执行Handler( Controller )。 在填充Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作: HttpMessageConveter : 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换为指定的响应信息。 数据转换:对请求消息进行数据转换。如String转换成Integer、Double等。 数据根式化

Mybatis----基础

柔情痞子 提交于 2019-12-01 09:03:57
概述:   Hibernate 标准的ORM框架。Hibernate 框架是提供了全面的数据库封装机制的 “全自动” ORM,即实现了 POJO 和数据库表之间的映射,以及 SQL 的自动生成和执行。 MyBatis   1、持久层框架   2、相对于Hibernate,MyBatis 只能算作是 “半自动” ORM。其着力点,是在 POJO 类与 SQL 语句之间的映射关系。也就是说,MyBatis 并不会为程序员自动生成 SQL 语句。具体的 SQL 需要程序员自己编写,然后通过 SQL 语句映射文件,将 SQL 所需的参数,以及返回的结果字段映射到指定 POJO。因此,MyBatis 成为了“全自动”ORM 的一种有益补充。   3、MyBatis 可以prepareStatement (参考jdbc)中的输入参数自动进行输入映射,并将查询结果集自动映射成java对象。 MyBatis框架   配置SqlMapConfig.xml(是Mybatis的全局配置文件。配置了数据源,事务等运行环境)   配置Mapper.xml(映射文件) 如何操作数据库? 首先通过配置文件创建 SqlsessionFactory(会话工厂)---->创建SqlSession(会话工厂创建SqlSession(接口):作用:发出sql语句)----->Executor

阿里最新38道Java面试题解析(MyBatis+消息队列+Redis)

∥☆過路亽.° 提交于 2019-12-01 08:48:55
一、谈谈你对 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 的过程)。 二、MyBaits 的优缺点有哪些? § 优点: 1. 基于 SQL 语句编程,相当灵活,不会对应用程序或者数据库的现有设计造成任何影响,SQL 写在 XML 里,解除 SQL 与程序代码的耦合,便于统一管理;提供XML标签,支持编写动态 SQL 语句,并可重用; 2. 与 JDBC 相比,减少了代码量,消除了 JDBC 大量冗余的代码,不需要手动开关连接; 3. 很好的与各种数据库兼容(因为

【简明翻译】Hibernate 5.4 Getting Started Guide 官方入门文档

吃可爱长大的小学妹 提交于 2019-12-01 07:43:47
前言 最近的精力主要集中在Hibernate上,在意识到Hibernate 5 的中文资料并不多的时候,我不得不把目光转向Hibernate的官方doc,学习之余简要翻一下入门文档。 原文地址: https://docs.jboss.org/hibernate/orm/5.4/quickstart/html_single/ ,勘误请在评论区留言 原文序 使用面向对象软件和关系型数据库可能既麻烦且耗时。开发成本往往会因数据在软件和数据库中的数据范式(paradigm)表现不一而显著地增长,Hibernate就是一种Java语言环境下的一个对象/关系映射 解决方案(ORM框架),对象/关系映射(ORM)的概念,则代指一种将数据的对象模型形式,即在软件中的表现形式,和数据模型形式,即数据库中的表现形式,这两种形式的数据相映射的技术。可以参照 Wikipedia上的ORM词条 以获得更详细的了解。 虽然Hibernate并不要求用户需要有非常丰富的SQL编程经验,但是对于一些概念的基本理解着实可以让你更快更全面的理解Hibernate,特别是对数据建模原理的理解就显得尤为重要,这两篇文章可以帮助你快速开始理解这些原理 dataModeling101 、 DataModeling(wiki) 。 Hibernate负责Java class和数据库表的映射工作,同时也会处理两者间数据格式的映射

mybatis关键查询

旧时模样 提交于 2019-12-01 07:41:20
一、一对一关联 1.1、提出需求   根据班级id查询班级信息(带老师的信息) 1.2、创建表和数据   创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系。 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMENT, 7 c_name VARCHAR(20), 8 teacher_id INT 9 ); 10 ALTER TABLE class ADD CONSTRAINT fk_teacher_id FOREIGN KEY (teacher_id) REFERENCES teacher(t_id); 11 12 INSERT INTO teacher(t_name) VALUES('teacher1'); 13 INSERT INTO teacher(t_name) VALUES('teacher2'); 14 15 INSERT INTO class(c_name, teacher_id) VALUES('class_a', 1); 16 INSERT INTO class(c_name

MyBatis中的关联查询

柔情痞子 提交于 2019-12-01 07:25:50
一:在使用MyBatis进行关联查询的时候,首先要确定表与表之间的关联关系   表与表之间一般存在三种关系,即一对一,一对多,多对多关系。   下面分别就三种关系讲解 1.一对一和一对多在Mybatis中进行关联查询的思路都是一样的,在一个实体类中创建另一个实体类的对象作为当前类的属性,这样的话数据库中表与表之间的关联关系就体现在了我们的实体类当中 如下,在我们的账单类(SmbmsBill)中添加了一个供应商类(SmbmsProvider)的对象 当我们查寻所有订单的时候就可以连带的把该账单上的供应商也一并查询出来 2.接下来我们开始创建接口以及查询方法 方法创建完成之后在我们的Mapper的配置文件中编写对应方法的实现 由于我们要查询的结果包含了两张表中的数据,MyBatis的自动映射无法把关联对象中的数据自动映射成功,所以我们需要进行手动映射 3.创建相应的resultMap节点 <resultMap id="SmbmsProviderResult" type="SmbmsBill">  <!--在此处需要主对象手动指定id和result节点进行手动映射-->  <!--property代表关联对象在实体类中的属性名 javaType 代表他的类型--> <association property="smbmsProvider" javaType="SmbmsProvider"