Mybatis高级应用-2】的更多相关文章

前言 当我们学习heribnate的时候,也就是SSH框架的网上商城的时候,我们就学习过它对应的高级映射,一对一映射,一对多映射,多对多映射.对于SSM的Mybatis来说,肯定也是差不多的.既然开了头了,我们就也来简单说一些Mybatis的高级映射.当然说到这些东西的时候,最简单也最常用的就是级联查询,所以我们就以几个简单的级联查询为例,分别说一下Mybatis的一对一.一对多.多对多查询. 一.一对一映射 1.需求: 电商类做买卖,用户提交订单后,某宝根据订单信息和客户的姓名.地址派送,现在…
mybatis高级映射 一对一关联映射 需求:查询订单信息,关联查询用户信息(一个订单对应一个用户) (1)通过resultType实现 sql语句: select orders.* , USER.username, USER. sex , USER.address FROM orders , USER WHERE orders.userid = USER .id 创建pojo类 由于orders.java不能全部映射字段,所以要新建pojo 创建一个pojo继承包括查询字段较多的·一个po类…
MyBatis高级篇之整合ehcache缓存框架  2017-09-01  0 Comments  1,671 Views  0 Times 一.前言 MyBatis为我们提供了Cache接口,也提供了一些实现类,进入Cache接口源码,可以看到缓存对于MyBatis来说就是一个Map,比较简陋.但是大家都知道MyBatis是一个专注于持久层框架,与数据库打交道MyBatis是很专业的,但是对于缓存它就略显不足,即便如此MyBatis却提供了Cache接口的标准规范,谁做缓存专业,谁就来实现它,…
-------------------------siwuxie095 MyBatis 高级查询 1.MyBatis 作为一个 ORM 框架,也对 SQL 的高级查询做了支持, MyBatis 高级查询分为如下三种: (1)一对一 (2)一对多 (3)多对多 「MyBatis 高级查询 也被称为 MyBatis 高级结果映射」 2.案例:用户.订单.订单详情.商品的关系 (1)一对一 1)场景:订单和用户的关系 2)描述:相对于订单来说,一个订单只能属于一个用户 PS:实际上,订单和用户的关系是…
mybatis 高级映射和spring整合之逆向工程(7) 4.0 逆向工程 4.1 mybatis需要程序员自己编写sql语句,mybatis官方提供逆向工程,可以针对单表自动生成mybatis执行所需的代码(mapper.java,mapper.xml,po..) 企业实际开发中,常用的逆向工程方式: 由数据库的表生成java代码. 4.2 下载逆向工程 mybatis-generator-core-1.3.2-bundle 4.3 使用方法(会用) 4.3.1 运行逆向工程(建议使用jav…
mybatis 高级映射和spring整合之mybatis与Spring整合 3.0 mybatis和spring整合(掌握) 3.1 整合思路 需求spring通过单例方式管理SqlSessionFactory. spring和mybatis整合生成代理对象,使用SqlSessionFactory创建SqlSession.(spring和mybatis整合自动完成) 持久层的mapper都需要有spring进行管理. 3.2 整合环境 创建一个新的java工程(接近实际开发的工程结构) jar…
mybatis 高级映射和spring整合之查询缓存(5) 2.0 查询缓存 2.0.1 什么是查询缓存 mybatis提供缓存,用于减轻数据压力,提高数据库性能. mybatis提供一级缓存和二级缓存. 一级缓存是SqlSession级别的缓存: 在操作数据库时需要购造sqlSession对象,在对象中有一个数据结构(HashMap)用于存储缓存数据. 不同的sqlSession之间的缓存数据区域(HashMap)是互不影响的. 二级缓存是mapper级别的缓存: 多个sqlSession区操…
mybatis 高级映射和spring整合之高级映射 ----------------学习结构-------------------- 0.0 对订单商品数据模型进行分析 1.0 高级映射 1.1 一对一查询 1.2 一对多查询 1.3 多对多查询 1.4 resultMap总结 1.5 延迟加载 2.0 查询缓存 2.1 一级缓存 2.2 二级缓存(了解mybatis二级缓存使用场景) 3.0 mybatis和spring整合(掌握) 4.0 逆向工程(会用) ----------------…
有时侯,我们用SQL取得的结果需要映射到类似Map<key, Bean>这样的数据结构中或是映射到多个实体类中时,我们就需要使用到resultMap.下面用3个例子说明Mybatis高级结果映射的用法. <环境准备> 请参照上一篇blog<Mybatis Guide> <数据准备> 创建班级--学生表的一对多的数据结构 --创建班级表 CREATE TABLE tempdb..test_class ( class_id int NOT NULL PRIMAR…
MyBatis 高级查询 之前在学习 Mapper XML 映射文件时,说到 resultMap 标记是 MyBatis 中最重要最强大也是最复杂的标记,而且还提到后面会详细介绍它的高级用法. 听到高级用法不要觉得有多高级,说白了就是联表查询. MyBatis 支持四种联表查询方式: 一对一联表查询 一对多联表查询 多对一联表查询 多对多联表查询 联表查询需要用到 resultMap 标记两个子标记: association 标记:用于映射关联查询单个对象的信息 collection 标记:用于…
learn from:http://www.mybatis.org/mybatis-3/zh/sqlmap-xml.html#Result_Maps 关联查询 准备 关联结果查询(一对一) resultMap复用 集合(一对多) 3 关联查询 做查询之前,先修改几个配置.mapper.xml是在mybatis-config.xml中指定,那么我们每增加一个mapper都要增加一个配置,很麻烦.为了简化配置.需要将mapper接口和mapper.xml放到同一个文件下,并且接口和xml文件命名一致…
原文:http://www.cnblogs.com/edwinchen/p/4105278.html?utm_source=tuicool&utm_medium=referral 一.动态SQL 相信大家在用mybatis操作数据库时时都会碰到一个问题,假如现在我们有一个关于作者的list authorList,需要根据authorList里已有的作者信息在数据库中查询相应作者的博客信息.那么最容易想到的做法就是遍历authorList,获取相应的信息查询数据库. for(int i=0;I &l…
在阅读本文章时,先说几个mybatis中容易混淆的地方: 1. mybatis中的列不是数据库里的列而是查询里的列,可以是别名(如 select user_name as userName,这时column='userName' property="userName") 2.Mysql中使用自增主键时,useGeneratedKeys 用来获得自增主键填入类型对应的id属性,之后通过get方法得到 3.Map结尾是映射,Type是类型  resultType 和restltMap re…
1  订单商品数据模型 以订单商品数据为模型,来对mybaits高级关系映射进行学习.…
Mybatis是一个半自动的框架.相对于hibernate全自动模式,mybatis为开发人员提供了更加灵活的对sql语句操作的控制能力,有利于dba对相关的sql操作进行优化,同时也方便开发者构建复杂的sql操作.以下是Mybatis的相关高级应用,以供参考. Mybatis的官方文档:http://mybatis.github.io/mybatis-3/zh/index.html 通过配置类进行构建SqlSessionFactory Mybatis允许通过xml或配置类构建SqlSessio…
一.动态SQL 相信大家在用mybatis操作数据库时时都会碰到一个问题,假如现在我们有一个关于作者的list authorList,需要根据authorList里已有的作者信息在数据库中查询相应作者的博客信息.那么最容易想到的做法就是遍历authorList,获取相应的信息查询数据库. for(int i=0;I < authorList.size();i++) { …… //查询数据库代码 //select * from blog where author=#{author,jdbcType…
一.数据库数据和项目搭建过程 1.主要要四张表,分别为user用户信息表.items商品表.orderdetail订单明细表.orders订单表.表的结构和数据如下: 表结构 CREATE DATABASE mybatis DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci CREATE TABLE `items` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `name` VARCHAR(32) NOT NUL…
高级结果映射 MyBatis的创建基于这样一个思想:数据库并不是您想怎样就怎样的.虽然我们希望所有的数据库遵守第三范式或BCNF(修正的第三范式),但它们不是.如果有一个数据库能够完美映射到所有应用程序,也将是非常棒的,但也没有.结果集映射就是MyBatis为解决这些问题而提供的解决方案.例如,我们如何映射下面这条语句? <!-- Very Complex Statement --> <select id="selectBlogDetails" parameterTy…
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.3.1 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的查询,另外就是在 MyBatis 中使用存储过程的方法,处理存储过程的入参和出参方法,最后会介绍 Java 中的枚举方法和数据库表字段的处理方法. 6.1 高级结果映射 在关系型数据库中,我们经常要处理一对一.一对多的关系. 在 RBAC 权限系统中还存在着一个用户拥有多个角色.一个角色拥有多个权限…
jdk1.8.MyBatis3.4.6.MySQL数据库5.6.45.IntelliJ IDEA 2019.2.4 本章主要包含的内容为 MyBatis 的高级结果映射,主要处理数据库一对一.一对多的查询,另外就是在 MyBatis 中使用存储过程的方法,处理存储过程的入参和出参方法,最后会介绍 Java 中的枚举方法和数据库表字段的处理方法. 6.1 高级结果映射 在关系型数据库中,我们经常要处理一对一.一对多的关系. 在 RBAC 权限系统中还存在着一个用户拥有多个角色.一个角色拥有多个权限…
高级查询之多对多查询 查询条件:根据玩家名,查询游戏信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据玩家名查询游戏 * @param name 玩家名 * @return 玩家实体类 */ public PlayerEntity selectPlayerByName(String name); 接下来,我分别演示关联查询和子查询方式实现接口方法的映射. 关联查询方式 现在我们暂时先抛开 MyBatis 框架,直接从数据库出发写一写关联查询…
高级查询之一对多查询 查询条件:根据游戏名称,查询游戏账号信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据游戏名查询游戏账号 * @param name 游戏名 * @return 游戏实体类 */ public GameEntity selectGameByName(String name); 接下来,我分别演示关联查询和子查询方式实现接口方法的映射. 关联查询方式 现在我们暂时先抛开 MyBatis 框架,直接从数据库出发写一写关联查…
高级查询之一对一查询 查询条件:根据游戏角色ID,查询账号信息 我们在之前创建的映射器接口 GameMapper.java 中添加接口方法,如下: /** * 根据角色ID查询账号信息 * @param id 角色Id * @return 角色实体对象 */ public RoleEntity selectRoleById(int id); 接下来,我分别演示关联查询和子查询方式实现接口方法的映射. 关联查询方式: 现在我们暂时先抛开 MyBatis 框架,直接从数据库出发写一写关联查询的 SQ…
全部章节   >>>> 本章目录 3.1 一对一映射 3.1.1 自动化一对一映射 3.1.2 标签配置一对一映射 3.1.3 标签配置一对一映射 3.1.4 实践练习 3.2 一对一映射中的嵌套查询 3.2.1 标签嵌套查询属性 3.2.2 标签嵌套查询实现 3.2.3 实践练习 3.3 一对多映射 3.3.1 标签实现集合映射 3.3.2 标签和标签 3.3.3 实践练习 3.4 一对多映射中的嵌套查询 3.4.1 嵌套查询的层次 3.4.2 标签实现集合的嵌套查询 3.4.3…
设置延迟加载需要在mybatis.xml中设置 注: 侵入式延迟加载为真时是延迟加载 侵入式延迟加载为假时是深度延迟加载 <!-- 延迟加载和深度延迟加载 --> <settings> <!-- 延迟加载 --> <setting name="lazyLoadingEnabled" value="true" /> <!-- 侵入式延迟加载,默认值是true --> <setting name=&quo…
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="cn.cnsdhzzl.dao.StudentDao&q…
首先入门案例(并且拿到新增记录当前id) 1.创建mybatis-config.xml文件 <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> &l…
目录 1. 一对一查询 1.1 一对一嵌套结果查询 1.2 使用resultMap配置一对一映射 1.3 使用resultMap的association标签配置一对一映射 1.4 association标签查询(懒加载) 1. 一对一查询 1.1-1.3 我们假设场景为用户和角色一对一,根据数据库基本原理,我们把外键设置在用户一边,即在实体类中添加角色这个属性. 1.1 一对一嵌套结果查询 1.1.1嵌套结果查询的核心思想 核心思想:直接用slect标签通过数据库字段和实体类字段的自动映射. 首…
1.ResultMap的association与collection association与collection功能类似,区别是一对一与一对多,这里以association为例. 首先说明一下需求:通过员工ID获取员工信息,同时获取员工的角色,涉及到了员工信息表.角色表.还有二者的关联表.最简单的做法是写一个SQL语句,语句里写了三个表,互相关联进行查询,但这种方式存在问题:1.SQL语句不易维护 2.复用性不强 3.我只想获取用户的信息,不用角色信息时,查询了多余的信息,徒增消耗. 解决办法…
文章内容简介 1.回顾 2.Mybatis配置文件解析 3.Mybatis映射文件解析 ResultMap标签使用 自定义返回值处理(Map) 关联映射 主键映射 一.回顾 Mybatis是ORM(object relational Mapping)框架. 解决接口和Mapper文件映射,接口方法和mapper文件中sql语句的映射. ==二.Mybatis配置文件解析== 1.typeAliases标签用法 给封装数据的模型类起别名,目的是为了减少mapper文件中的配置. <!-- 别名配置…