对象关系映射

ModelMapper:从对象到对象的映射库

匿名 (未验证) 提交于 2019-12-03 00:38:01
1.ModelMapper入口类 ModelMapper这个工具的入口类就是ModelMapper,因此转换就需要从这个类入口.简单看下API addConverter() :顾名思义,添加转换器 addMappings() :添加映射器 createTypeMap() :创建A-B的转换器关系 getConfiguration() :获取配置 map() ;映射处理 2.简单Model-DTO转换 Paste_Image.png /** * 简单类-类转换 */ @ Test public void testModelToDTO () { User user = new User(); user.setId( 1L ); user.setNickname( "张三" ); user.setEmail( "101@qq.com" ); user.setHonor( "测试荣誉" ); ModelMapper modelMapper = new ModelMapper(); UserDTO userDTO = modelMapper. map (user, UserDTO.class); System.out.println(userDTO); } 这里转换替换是根据字段名匹配也就是当User和UserDTO中的字段名称一样就会自动转换. 3.自定义转换 自定义有很多转换,比如

以及Hibernate和Mybatis区别

匿名 (未验证) 提交于 2019-12-03 00:11:01
ORM框架? Object Relational Mapping,对象-关系映射。 项目中的业务实体有两种表现形式:对象和关系数据,即在内存中表现为对象,在数据库中表现为关系数据。 为什么需要ORM框架? ORM框架是对象关系映射,那为什么要映射mapping? 因为对象之间可以存在关联和继承关系,但是在数据库中,关系数据无法表达多对多关联和继承关系。(ps:在数据库原理中,会把逻辑上的多对多转换为多个一对关系才能实现)因此,对象和关系(业务实体的两种表现形式)想要映射正确,项目系统一般以中间件的形式,即持久层框架。 Hibernate? Hibernate是一个开源的对象关系映射框架。 它对jdbc进行了非常轻量级的对象封装,将pojo(普通的Java对象)与数据库表建立映射关系,是一个全自动的ORM框架,甚至自动生成SQL语句,自动执行。 因此,程序员可以随心所有地使用对象编程思维来操纵数据库。 Hibernate特点: Hibernate通过修改一个“持久化”对象的属性,从而修改数据库表中对应的记录数据 提供线程和进程两个级别的缓存提升应用程序性能 有丰富的映射方式将 Java对象之间的关系(POJO) 转换为 数据库表之间的关系 屏蔽不同数据库实现之间的差异。在Hibernate中只需通过“方言”的形式指定当前使用的数据库,就可以根据底层数据库的实际情况生成适合的SQL语句

NetCore+AutoMapper多个对象映射到一个Dto对象

匿名 (未验证) 提交于 2019-12-03 00:09:02
Ŀ¼ 一、 定义源映射类和被映射类DTO 二、注入AutoMapper 三、配置映射 四、写测试 一、定义源映射对象 为了体现AutoMapper映射特性,在SocialAttribute中的Name属性没有定义在People中,People的Ear属性也不存在与SocialAttribute和PhysicalAttribute中。 代码如下: /// <summary> /// 身体属性 /// </summary> public class PhysicalAttribute { public string Eye { get ; set ; } public string Mouth { get ; set ; } } PhysicalAttribute /// <summary> /// 社会属性 /// </summary> public class SocialAttribute { public int Age { get ; set ; } public bool IsMarried { get ; set ; } public string Name { get ; set ; } } SocialAttribute public class PeopleDto { public string Eye { get ; set ; } public string

MyBatis、JDBC相关知识

匿名 (未验证) 提交于 2019-12-02 23:57:01
引言   在mybatis的基础知识中我们已经可以对mybatis的工作方式窥斑见豹。但是,为什么还要要学习mybatis的工作原理?因为,随着mybatis框架的不断发展,如今已经越来越趋于自动化,从代码生成,到基本使用,我们甚至不需要动手写一句SQL就可以完成一个简单应用的全部CRUD操作。从原生mybatis到mybatis-spring,到mybatis-plus再到mybatis-plus-spring-boot-starter。spring在发展,mybatis同样在随之发展。 什么是 Mybatis   Mybatis 本是 apache 的一个开源项目 iBatis , 2010 年这个项目由 apache software foundation 迁移到了 google code ,并且改名为 MyBatis 。   iBatis 一词来源于 "internet" 和 "abatis" 的组合,是一个基于 java 的持久层框架。 iBatis 提供的持久层框架包括 SQLMaps 和 Data Access Objects(DAO) 基本功能   Mybatis 是支持普通 SQL 查询,存储过程和高级映射的优秀 持久层框架 。 MyBatis 消除 了几乎所有的 JDBC 代码和参数的手工设置 以及 结果集的检索 。 Mybatis 使用简单的 XML

Hibernate入门这一篇就够了

匿名 (未验证) 提交于 2019-12-02 23:57:01
Hibernate入门这一篇就够了 本博文主要讲解 介绍Hibernate框架,ORM的概念和Hibernate入门 ,相信你们看了就会使用Hibernate了! Hibernate是一种ORM框架,全称为 Object_Relative DateBase-Mapping ,在Java对象与关系数据库之间 建立某种映射,以实现直接存取Java对象 ! 既然Hibernate是关于Java对象和关系数据库之间的联系的话,也就是 我们MVC中的数据持久层->在编写程序中的DAO层... 首先,我们来回顾一下我们在DAO层写程序的历程吧: 在DAO层操作XML,将数据封装到XML文件上,读写XML文件数据实现CRUD 在DAO层使用原生JDBC连接数据库,实现CRUD 嫌弃JDBC的Connection\Statement\ResultSet等对象太繁琐,使用对原生JDBC的封装组件-->DbUtils组件 我们来看看使用DbUtils之后,程序的代码是怎么样的: public class CategoryDAOImpl implements zhongfucheng.dao.CategoryDao{ @Override publicvoidaddCategory(Category category) { QueryRunner queryRunner = new QueryRunner

EF-运行原理

匿名 (未验证) 提交于 2019-12-02 23:56:01
一、什么是 EF ?    实体架构( Entity Framework )是微软以来 ADO.Net 为基础开发出来的对象关系映射( ORM )解决方案,它解决了对象持久化问题,将程序员从编写麻烦的 SQL 语句中解放出来。 优点:    支持多种数据库(Microsoft SQL Server、Oracle和DB2等);    强劲的映射引擎,能很好地支持存储过程;    提供Visual Studio集成工具,进行可视化操作;    能够与ASP.NET、WPF、WCF、WCF Data Services进行很好的集成。 二、 ORM 常见ORM框架:      ORM不是产品,是框架的总称,面向对象的程序设计语言到关系数据库的映射。   使程序员既可以利用面向对象语言的简单易用性,又可以利用关系数据库的技术优势来实现应用程序的增删改查操作。     1. NHibernate:Hibernate在.NET平台下的版本     2. iBatis.NET:iBatis在.NET平台的实现     3.Linq to SQL(微软不再更新):.NET针对SQL server的ORM框架     4.ADO.NET Entity Framework:微软在.NET4.0推出的领域驱动开发模型。 注意:ADO.NET Entity Framework是微软以ADO

myBatis深入学习

匿名 (未验证) 提交于 2019-12-02 23:55:01
本文在前一篇文章的基础上记录了对mybatis的表之间的关系映射、延迟加载、缓存等高级功能的学习。 1.表之间的关系映射   既然要明确表之间的关系映射,那么首先要分析数据库中表之间的关系,假设数据库中现在有4张表:user(用户表,记录了购买商品的用户信息)、orders(订单表,记录了用户所创建的订单)、orderdetails(订单明细表,记录了订单的详细信息即购买商品的信息)、items(商品表,记录了商品信息),对数据库中表的分析要重点看表中的 主键、非空字段、外键 ,经过对表的分析,可以得到如下的数据模型分析:    一对一查询   一对一的查询在实现时可以使用resultType和resultMap实现,关于二者的区别如下:   resultType:使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加列名对应的属性,即可完成映射。如果没有查询结果的特殊要求建议使用resultType。   resultMap:需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,使用resultMap可以完成将关联查询映射pojo的属性中。resultMap可以实现延迟加载,resultType无法实现延迟加载。 一对多查询  

分库分表与负载均衡的一致性hash算法

匿名 (未验证) 提交于 2019-12-02 23:52:01
首先了解一下什么是一致性哈希,这里推荐一篇博客: http://blog.csdn.net/cywosp/article/details/23397179/ 在分布式应用中,扩容和收缩是一个半自动化的过程,在此期间,应用基本上是可用的,所以不能发生大规模动荡的意外,为了最小化潜在的影响,这时候需要使用到一致性hash算法实现负载均衡和分库分表,hash路由算法在分布式场景下极为重要的角色。 consistent hashing 算法早在 1997 年就在论文 Consistent hashing and random trees 中被提出,目前在cache 系统中应用越来越广泛; 比如你有 N 个 cache 服务器(后面简称 cache ),那么如何将一个对象 object 映射到 N 个 cache 上呢,你很可能会采用类似下面的通用方法计算 object 的 hash 值,然后均匀的映射到到 N 个 cache ; hash(object)%N 一切都运行正常,再考虑如下的两种情况; 1 一个 cache 服务器 m down 掉了(在实际应用中必须要考虑这种情况),这样所有映射到 cache m 的对象都会失效,怎么办,需要把 cache m 从 cache 中移除,这时候 cache 是 N-1 台,映射公式变成了 hash(object)%(N-1) ; 2

9. resultMap 结果映射集

匿名 (未验证) 提交于 2019-12-02 23:47:01
@Data public class CreditCard extends BankCard { /** * 消费额度 */ private String creditLine; } @Data public class DebitCard extends BankCard { /** * 存款金额 */ private String deposit; } resultmap是mybatis中最复杂的元素之一,它描述如何从结果集中加载对象,主要作用是定义映射规则、级联的更新、定制类型转化器。 以User类为例: class User{ private int userId; private String name; public User(long userId,String name){ this.userId = userId; this.name = name; } } id、result是最简单的映射,id为主键映射;result其他基本数据库表字段到实体类属性的映射。resultmap的xml如下: <resultMap type="User" id="userMap"> <id property="UserId" column="user_id" javaType="int" jdbcType="int"/> <result property="name" column

面试官都会问的Mybatis面试题

匿名 (未验证) 提交于 2019-12-02 23:35:02
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