<?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">
<!--namespace:命名空间名是唯一的,规则:所在包名+当前配置文件名称 -->
<mapper namespace="cn.hd.model.userMapper">
<resultMap type="userbean" id="baseMap">
<id column="userid" property="userid"/>
<result column="name" property="username"/>
</resultMap>
<select id="queryAll" resultMap="baseMap">
select userid , username as name from t_user
</select>
<select id="queryAll1" resultType="userbean">
select userid,username,realname,t2.name as depname
from t_user t1
left join t_data t2 on t1.did=t2.id
</select>
<!-- 多对一配置的第一种方式:没有延迟加载机制,association -->
<resultMap type="userbean" id="baseMap1">
<id column="userid" property="userid"/>
<result column="username" property="username"/>
<association property="data" javaType="cn.hd.model.Databean" >
<id column="depid" property="id"/>
<result column="depname" property="name"/>
<result column="pid" property="pid"/>
</association>
</resultMap>
<select id="queryAll2" resultMap="baseMap1">
select userid,username,realname,t2.pid as pid ,t2.id as depid, t2.name as depname
from t_user t1
left join t_data t2 on t1.did=t2.id
</select>
<!-- 多对一配置的第二种方式:延迟加载机制,会产生n+1问题 -->
<resultMap type="userbean" id="many2oneMap">
<id column="userid" property="userid"/>
<result column="username" property="username"/>
<association fetchType="lazy" property="data" javaType="databean" select="findDataById" column="did">
</association>
</resultMap>
<select id="findDataById" parameterType="int" resultType="databean">
select * from t_data where id=#{v}
</select>
<select id="many2oneQuery" resultMap="many2oneMap">
select * from t_user
</select>
<!-- 一对多两种方式配置:1)没有延迟加载 -->
<resultMap type="databean" id="one2ManyMap1">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="userlist" ofType="userbean" >
<id column="userid" property="userid"/>
<result column="username" property="username"/>
</collection>
</resultMap>
<select id="one2ManyQuery1" resultMap="one2ManyMap1">
select t1.*,t2.* from t_data t1
left join t_user t2 on t1.id=t2.did
</select>
<!-- 一对多两种方式配置:2)有延迟加载 产生N+1 -->
<resultMap type="databean" id="one2ManyMap2">
<id property="id" column="id"/>
<result property="name" column="name"/>
<collection property="userlist" ofType="userbean" select="findUserByDid" column="id" >
<id column="userid" property="userid"/>
<result column="username" property="username"/>
</collection>
</resultMap>
<select id="findUserByDid" resultType="userbean" parameterType="int">
select * from t_user where did=#{value}
</select>
<select id="one2ManyQuery2" resultMap="one2ManyMap2">
select * from t_data
</select>
</mapper>
分享到:
相关推荐
Spring、SpringMVC和Mybatis是Java开发中最常用的三大开源框架,它们的整合使用,通常被称为SSM框架。这个框架组合提供了完整的后端服务解决方案,包括依赖注入(DI)、面向切面编程(AOP)、模型-视图-控制器(MVC...
MybatisX是一个强大的Mybatis扩展框架,旨在简化Mybatis在实际开发中的使用,提高开发效率。版本1.5.7是该框架的一个稳定版本,它包含了一系列优化和新功能,以满足开发者的需求。 MybatisX的核心特性包括: 1. **...
MybatisGenerate是一个强大的工具,主要用于自动化生成Mybatis相关的代码,以提高开发效率并减少手动编写重复性工作的负担。这个工具是基于tk.mybatis框架的,它整合了Mybatis的优秀特性,使得开发者能够更加便捷地...
MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJOs...
MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎所有的 JDBC 代码以及设置参数和获取结果集的工作。MyBatis 可以通过简单的 XML 或注解来配置和映射原始类型、接口和 ...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。在深入探讨MyBatis 3.2.6版本的源码之前,我们首先需要了解MyBatis的基本概念和功能。 MyBatis的核心部分主要包括SqlSessionFactory、...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip mybatis-plus最新代码生成器项目源码 :mybatis-plus-generator.zip ...
项目名称:MyBatis-Cipher - 高效数据脱敏工具 项目简介: MyBatis-Cipher 是一款基于 Java 语言开发的数据库敏感信息加密解密方案,专为 MyBatis 设计。它能够在数据进出数据库(DB)的过程中自动对敏感信息进行...
MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...
这个压缩包文件“mybatisx.zip”包含了多个版本的MybatisX插件,包括MybatisX-1.4.16.zip、MybatisX-1.4.8.zip、MybatisX-1.4.6.zip以及MybatisX-1.1.2.zip。这些版本的差异可能体现在功能增强、性能优化或者修复...
在MyBatis中,`mybatis-3-config.dtd` 和 `mybatis-3-mapper.dtd` 是两个至关重要的DTD(Document Type Definition)文件,它们定义了MyBatis配置文件和映射文件的结构和规则。 首先,让我们深入了解一下`mybatis-3...
mybatis在持久层框架中还是比较火的,一般项目都是基于ssm。虽然mybatis可以直接在xml中通过SQL语句操作数据库,很是灵活。但正其操作都要通过SQL语句进行,就必须写大量的xml文件,很是麻烦。mybatis-plus就很好的...
本篇文章将详细介绍两个针对MyBatis框架的IntelliJ IDEA插件——MyBatisCodeHelper-Pro和MybatisX,它们都是为了提升MyBatis开发体验而设计的。 首先,我们来看MyBatisCodeHelper-Pro。这款插件是专为MyBatis开发者...
MyBatis-Flex: 一个优雅的 MyBatis 增强框架。很轻量,MyBatis-Flex 整个框架只依赖 MyBatis,再无其他任何第三方依赖。只增强,MyBatis-Flex 支持 CRUD、分页查询、多表查询、批量操作,但不丢失 MyBatis 原有的...
MyBatis是一款流行的Java持久层框架,它的设计理念是通过简单的XML或注解用于配置和映射原始类型、接口和Java POJOs(Plain Old Java Objects,普通老式Java对象)为数据库中的记录。MyBatis可以与各种数据库交互,...
MyBatis是一款强大的Java持久层框架,它将SQL与Java代码分离,使开发者可以更方便地操作数据库。这篇“MyBatis入门到精通”的学习资料是针对初学者设计的,旨在帮助新手快速掌握MyBatis的基本用法和高级特性。 1. *...
MyBatis是一款流行的持久层框架,支持SQL查询、存储过程以及高级映射,它极大地简化了Java应用和数据库之间的交互。与ORM框架Hibernate相比,MyBatis的灵活性更高,对于需要复杂查询和精细操作的场景更为适用。...
MyBatis是一个优秀的Java持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的...
本工程为 MyBatis-Plus 的官方示例,项目结构如下: mybatis-plus-sample-quickstart: 快速开始示例 mybatis-plus-sample-quickstart-springmvc: 快速开始示例(Spring MVC版本) mybatis-plus-sample-reduce-...