`

Mybatis3查询语句映射

 
阅读更多

查询语句是相对复杂的一项了

 

基本的查询属性模板

 

<select 
		id=”selectPerson” 
		parameterType=”int” 
		parameterMap=”deprecated” 
		resultType=”hashmap” 
		resultMap=”personResultMap” 
		flushCache=”false” 
		useCache=”true” 
		timeout=”10000” 
		fetchSize=”256” 
		statementType=”PREPARED” 
		resultSetType=”FORWARD_ONLY” 
		> 

 

 解释

 

 

id  在命名空间中唯一的标识符,可以被用来引用这条语句。 

parameterType  将会传入这条语句的参数类的完全限定名或别名。 

parameterMap  这是引用外部 parameterMap 的已经被废弃的方法。使用内联参数映射和 parameterType 属性。 

resultType  从这条语句中返回的期望类型的类的完全限定名或别名。注意集合情形,那应该是集合可以包含的类型,而不能是集合本身。使用 resultType或 resultMap,但不能同时使用。 

 

resultMap  命名引用外部的resultMap。返回map是MyBatis 最具力量的特对其有一个很好的理解的话,许多复杂映射的情形就能被解决使用 resultMap 或 resultType,但不能同时使用。 

flushCache  将其设置为 true,无论语句什么时候被调用,都会导致缓存空。默认值:false。 

useCache  将其设置为 true,将会导致本条语句的结果被缓存。默认值:

timeout   这个设置驱动程序等待数据库返回请求结果,并抛出异常时最大等待值。默认不设置(驱动自行处理)。 

fetchSize  这是暗示驱动程序每次批量返回的结果行数。默认不设置(自行处理)。 

statementType  STATEMENT,PREPARED 或 CALLABLE 的一种。这会让 My使用选择使用 Statement,PreparedStatement或 CallableStatem默认值:PREPARED。 

resultSetType  FORWARD_ONLY|SCROLL_SENSITIVE|SCROLL_INSENSIT中的一种。默认是不设置(驱动自行处理)。 

 

搜索条件的判断

 

	<select id=”findActiveBlogLike” parameterType=”Blog” resultType=”Blog”>
		SELECT * FROM BLOG WHERE state = "ACTIVE‟
		<if test="title ! null ">
			AND title like #{title} 
		</if>
		<if test="author ! null and author.name ! =null">
			AND title like #{author.name} 
		</if>
	</select>

 

 防止where语句的错误

对于可能出现where空,可where and的错误使用<where>标签会自动判断是否加入where关键字

 

	<select id=”findActiveBlogLike” parameterType=”Blog” resultType=”Blog”>
		SELECT * FROM BLOG
		<where>
			<if test=”state ! null ”>
				state = #{state} 
			</if>
			<if test=”title ! null ”>
				AND title like #{title} 
			</if>
			<if test=”author ! null and author.name ! =null”>
				AND title like #{author.name} 
			</if>
		</where>
	</select>

 

防止set空或逗号错误

对于可能在update时set值的多重判断后set空值或set值后逗号数量不对的错误使用<set>标签可自动判断处理

 

	<update id="updateAuthorIfNecessary" parameterType="domain.blog.Author">
		update Author
		<set>
			<if test="username != null">username=#{username},</if>
			<if test="password != null">password=#{password},</if>
			<if test="email != null">email=#{email},</if>
			<if test="bio != null">bio=#{bio}</if>
		</set>
		where id=#{id}
	</update>

 

处理集合in使用foreach标签

 

	<select id="selectPostIn" resultType="domain.blog.Post">
		SELECT *
		FROM POST P
		WHERE ID in
		<foreach item="item" index="index" collection="list" open="("
			separator="," close=")">
			#{item} 
		</foreach>
	</select>

 

 

分享到:
评论

相关推荐

    关于MyBatis找不到映射文件的问题

    在MyBatis中,映射文件是用于定义SQL语句和Java对象之间的映射关系的配置文件。通常情况下,映射文件会被放在资源目录(resources)下的某个子目录(如mapper)下。在MyBatis的核心配置文件mybatis-config.xml中,...

    MyBatis一对多映射

    在MyBatis中,我们可以通过配置XML映射文件或者注解来实现这种映射,以便在查询主表时,能够自动加载与之关联的从表数据。 二、XML配置方式的一对多映射 1. 主表实体类:定义主表对应的Java类,通常包含一个集合...

    Mybatis案例一所用建表语句

    3. 如何在Mybatis中编写XML映射文件和Mapper接口,实现SQL的执行。 通过以上内容,你可以了解Mybatis如何与MySQL数据库配合,创建和管理数据库表。在实际开发中,理解并熟练运用这些知识点,能帮助你更高效地进行...

    Mybatis高级映射查询

    2. 映射文件与 XML 映射元素:Mybatis 的映射文件通常以 `.xml` 结尾,如 `mybatis3.xml`,它包含了 SQL 语句和结果集映射。在映射文件中,`&lt;select&gt;`, `&lt;insert&gt;`, `&lt;update&gt;`, `&lt;delete&gt;` 元素分别对应 SQL 的查询...

    Mybatis-03 SQL映射文件

    在MyBatis中,SQL映射文件起着至关重要的作用,它是连接数据库和Java代码的桥梁,允许开发者灵活地控制SQL语句的编写。本文将深入探讨MyBatis框架中的SQL映射文件配置,主要包括以下几个方面: 1. **基本结构** ...

    Mybatis-Plus映射实现过程

    3. **XML配置(Mapper XML)**:在Mybatis-Plus中,XML配置文件不再是必需的。默认情况下,Mybatis-Plus会根据实体类和Mapper接口自动生成相应的SQL语句。如果你仍然希望使用XML文件进行更复杂的SQL配置,可以通过@...

    实现Mybatis框架中一对多关联映射的查询操作。

    - 在对应的UserMapper.xml文件中,编写SQL查询语句,并进行关联映射配置。这里会使用`&lt;resultMap&gt;`定义映射规则,`&lt;association&gt;`标签来处理一对多关系。 ```xml &lt;!-- 基本字段映射 --&gt; &lt;!-- 一对多关联...

    mybatis自动生成语句XML版本

    在XML映射文件中,MBG会为每个数据库表生成插入(insert)、更新(update)、删除(delete)和查询(select)等基本操作的SQL语句。这些语句可以通过Mapper接口在业务逻辑中调用,大大简化了数据库操作。 总的来说...

    Java的MyBatis框架中Mapper映射配置的使用及原理解析

    Mapper映射配置文件是MyBatis的核心组成部分,用于定义SQL查询和结果映射。 首先,我们来看一下Mapper的XML配置文件。Mapper的XML文件通常放在项目的`resources`目录下,以`.xml`为扩展名,与对应的Java接口处于...

    mybatis动态sqlSQL 映射 XML 文件是所有 sql 语句

    mybatis动态sql:SQL 映射 XML 文件是所有 sql 语句放置的地方。需要定义一个 workspace,一般定义为对应的接口类的路径。写好 SQL 语句映射文件后需要在 MyBAtis 配置文件 mappers 标签中引用。

    mybatis关联映射源码

    MyBatis是一个强大的Java持久层框架,它简化了数据库操作,允许开发者将SQL语句直接集成到Java代码中。在MyBatis中,关联映射是处理对象关系映射(ORM)的重要部分,用于描述实体类之间的关联关系,如一对一...

    MyBatis关联映射代码

    这种映射允许我们在查询时自动处理关联对象,而无需手动编写复杂的SQL语句。关联映射分为嵌套查询(Nested Select)和嵌套结果(Nested ResultMap)两种方式。 1. 嵌套查询:在查询主表数据时,通过子查询来获取...

    MyBatis执行SQL并将结果映射成Java对象.docx

    MyBatis是一个流行的Java持久层框架,它简化了与数据库之间的交互,允许开发者将SQL查询直接映射到Java对象。这个文档主要介绍了MyBatis框架的核心概念和基本使用步骤。 首先,MyBatis的配置文件分为两个部分:全局...

    mybatis入门实例(mysql数据库,带建表语句)

    MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解进行配置和原始映射,将接口和Java的POJOs...

    详解Java的MyBatis框架中SQL语句映射部分的编写

    在Java的MyBatis框架中,SQL语句映射部分是整个ORM(对象关系映射)过程中的核心组件,它负责将SQL查询结果转化为Java对象。这篇教程将深入讲解SQL映射XML文件的编写,主要关注`resultMap`以及增删查改(CRUD)的...

    Mybatis关联映射Demo

    Mybatis关联映射是数据库操作中的一个重要概念,它允许我们在SQL查询中处理一对多、多对一、多对多等复杂关系。在这个"Mybatis关联映射Demo"中,我们将深入探讨如何在Mybatis框架中实现这些关系映射,以便更好地理解...

    springmvc+mybatis+分页查询

    - **Mapper XML文件**:编写SQL语句和结果映射,可以进行复杂的查询和参数绑定。 - **SqlSession**:执行SQL的会话对象,通过SqlSessionFactory创建,用于执行增删改查操作。 - **ResultMap**:配置映射规则,将...

    mybatis3.x源码深度解析与最佳实践.pdf

    ResultMapping 是 MyBatis 中的结果映射,该对象负责将 SQL 语句的执行结果映射成 Java 对象。 3.16 Discriminator Discriminator 是 MyBatis 中的鉴别器,该对象负责将 SQL 语句的执行结果映射成 Java 对象。 4....

    mybatis直接执行sql语句后续之一

    在IT行业中,MyBatis是一个广泛使用的持久层框架,它允许开发者直接编写SQL语句,提供了灵活的数据访问和映射机制。这篇博客“mybatis直接执行sql语句后续之一”可能探讨了如何在MyBatis中高效且有效地执行SQL操作。...

    MyBatis的关联映射

    **MyBatis关联映射详解** 在Java开发中,MyBatis作为一个优秀的持久层框架,提供了灵活的数据映射功能,使得数据库操作变得简单而高效。其中,关联映射是MyBatis中的一个重要特性,用于处理数据库中复杂的关系,如...

Global site tag (gtag.js) - Google Analytics