Mybatis的mapper.xml文件详解
1、#{}和${}的区别:
#{}表示一个占位符号,#{}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,#{}中可以写成value或其它名称。
#{}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
${}表示一个拼接符号,会引用sql注入,所以不建议使用${}。
${}接收输入参数,类型可以是简单类型,pojo、hashmap。
如果接收简单类型,${}中只能写成value。
${}接收pojo对象值,通过OGNL读取对象中的属性值,通过属性.属性.属性...的方式获取对象属性值。
2、selectOne和selectList的区别:
selectOne表示查询出一条记录进行映射。如果使用selectOne可以实现使用selectList也可以实现(list中只有一个对象)。
selectList表示查询出一个列表(多条记录)进行映射。如果使用selectList查询多条记录,不能使用selectOne。
如果使用selectOne报错:
org.apache.ibatis.exceptions.TooManyResultsException:
Expected one result (or null) to be returned by selectOne(), but found: 4
3、在映射文件中通过parameterType指定输入参数的类型。
4、在映射文件中通过resultType指定输出结果的类型。
5、resultType:
使用resultType实现较为简单,如果pojo中没有包括查询出来的列名,
需要增加列名对应的属性,即可完成映射。
如果没有查询结果的特殊要求建议使用resultType。
6、resultMap:
需要单独定义resultMap,实现有点麻烦,如果对查询结果有特殊的要求,
使用resultMap可以完成将关联查询映射pojo的属性中。
resultMap可以实现延迟加载,resultType无法实现延迟加载。
6.1、resultMap:
使用association和collection完成一对一和一对多高级映射(对结果有特殊的映射要求)。
association:
作用:将关联查询信息映射到一个pojo对象中。
场合:为了方便查询关联信息可以使用association将关联订单信息映射为用户对象的pojo属性中,
比如:查询订单及关联用户信息。
使用resultType无法将查询结果映射到pojo对象的pojo属性中,根据对结果集查询遍历的需要选择使用resultType还是resultMap
collection:
作用:将关联查询信息映射到一个list集合中。
场合:为了方便查询遍历关联信息可以使用collection将关联信息映射到list集合中,
比如:查询用户权限范围模块及模块下的菜单,
可使用collection将模块映射到模块list中,将菜单列表映射到模块对象的菜单list属性中,
这样的作的目的也是方便对查询结果集进行遍历查询。如果使用resultType无法将查询结果映射到list集合中。
Mybatis入门例子(http://blog.csdn.net/javawebrookie/article/details/52654526)
mybatis官网(http://www.mybatis.org/mybatis-3/zh/index.html)
分享到:
相关推荐
mybatis-MyBatis-Plugin 是一个专为 MyBatis 设计的 Eclipse 插件,它可以提供对 MyBatis 的 mapper.xml 文件中的自动补全和提示功能。该插件能够识别 mapper.xml 文件中的 class 类型以及其他元素,并提供相应的...
首先,当我们使用`SqlSession.getMapper()`方法来获取一个Mapper接口的实例时,例如`BookMapper bookMapper = SqlSession().getMapper(BookMapper.class)`,MyBatis是如何找到对应的mapper.xml文件并绑定接口方法的...
在使用Mybatis-Plus时,有时我们可能会遇到mapper.xml文件未被正确读取的问题,这通常是由于配置不正确导致的。本文将详细讲解mybatis-plus的mapper.xml路径配置的常见问题,并提供解决策略。 首先,我们需要理解...
MyBatis允许通过注解或XML配置文件的方式定义Mapper。在两者同时存在的情况下,注解的优先级高于XML配置。这意味着,如果同一个方法在XML映射文件和注解中都被定义,那么注解定义的方法将会被优先使用。 #### ...
configuration.xml文件是MyBatis的配置文件,用于配置数据源相关的参数和映射文件Mapper.xml。以下是一个简单的configuration.xml文件示例: ```xml <property name="driver" value="com.mysql.jdbc....
《MyBatis Generator Eclipse 插件详解》 MyBatis Generator (MBG) 是一个强大的工具,用于自动化 MyBatis 框架的代码生成过程。在开发过程中,MBG 能够帮助开发者自动生成 SQL 映射文件、Java POJO 类以及 MyBatis...
Mybatis Generator(MBG)是一款强大的代码生成工具,它能够自动生成Java实体类、Mapper接口以及对应的XML映射文件,极大地提高了开发效率。在给定的"MybatisGenerator.zip"压缩包中,包含了一个可以直接运行的main...
Mybatis的Mapper接口和Mapper XML文件是其核心部分,它们定义了SQL的执行逻辑。 SpringBoot整合Mybatis主要涉及以下几个步骤: 1. 添加依赖:在SpringBoot的pom.xml文件中添加Mybatis和其Spring Boot starter依赖...
3. **Mapper文件与接口关联跳转**:在Mapper接口或XML文件中,插件支持双向跳转,即点击接口方法可以直接跳转到相应的XML映射文件,反之亦然。这种关联跳转功能极大地增强了代码的可阅读性和可维护性。 4. **SQL...
《SpringBoot整合Mybatis实践详解》 在现代Java开发中,SpringBoot因其便捷的配置、自动化的特性,已经成为主流的微服务框架。而Mybatis作为轻量级的持久层框架,以其灵活的SQL操作和良好的扩展性,深受开发者喜爱...
`generatorConfig.xml` 文件是MyBatis Generator(MBG)工具的核心配置文件,它用于定义如何自动生成Java源代码、XML映射文件以及SQL语句。MBG是一个强大的工具,可以极大地提高开发效率,减少手动编写重复代码的...
### 从零搭建Spring Boot脚手架:手写Mybatis通用Mapper详解 #### 前言 本文将探讨如何在Spring Boot项目中集成一个自定义的Mybatis通用Mapper,以达到简化开发流程的目的。在之前的篇章中,我们已经集成了国内广...
总结来说,SpringMVC+Mybatis+Web的配置涉及多个层次的文件,包括SpringMVC的`spring-mvc.xml`、Mybatis的`mybatis-config.xml`和`mybatis-spring.xml`、Web应用的`web.xml`以及Spring的全局配置`applicationContext...
MyBatis Generator(MBG)是一个强大的工具,用于自动生成Java源代码和XML配置文件,大大简化了开发人员的工作,特别是在处理与数据库交互时。它根据数据库中的表信息,能够生成DAO层、Model层以及Mapper XML文件,...
generator是一个自动生成代码的工具,其主要功能是基于数据库表结构生成Java实体类、Mapper XML文件以及DAO层的Java代码。通过预先定义好的配置,generator可以自动化处理这些常见但繁琐的任务,从而让开发者更多地...
【标题】: "mybatis笔记.zip" 是一个包含MyBatis框架详解的压缩包,源自知名讲师的"狂神说"系列教程。 【描述】: "Mybatis狂神说完整笔记,typora带图片" 指出这是一份详尽的MyBatis学习笔记,由流行的markdown编辑...
### MyBatis 教程详解 #### 一、MyBatis 概述 **MyBatis** 是一款优秀的持久层框架,它简化了基于 Java 的应用程序与数据库交互的过程。相较于传统的 JDBC 方式,MyBatis 提供了一系列强大的功能,使得开发者能够...
**Spring MVC + MyBatis 3.x 超简完整可运行Demo详解** Spring MVC 和 MyBatis 是Java开发中的两大重要框架,它们在企业级Web应用开发中扮演着核心角色。Spring MVC作为Spring框架的一部分,负责处理HTTP请求并将其...
2. **Mapper接口**:定义业务接口,使用MyBatis的注解@Mapper或XML配置文件映射SQL。 3. **事务管理**:Spring的PlatformTransactionManager可管理MyBatis的事务,实现事务的统一控制。 4. **Spring的AOP**:利用AOP...