`
cnflat
  • 浏览: 13599 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

mybatis学习笔记4-动态SQL

    博客分类:
  • JAVA
阅读更多
mybatis支持在mapper中配置动态sql,根据传入参数确定sql语句中的where条件。个人认为框架支持动态sql是挺好的。不过如果编程之前能预知sql使用情况的,多写几个静态sql对于系统性能还是有好处的,毕竟动态sql还是需要做一次代码解析的。

mybatis的动态sql具体的机制包括:
1. if:普通的条件判断,比较适合在一个固定条件的前提下叠加动态条件。例如:
<select id="findUser3" resultMap="usermap">
	select 
		a.id as user_id,
		a.name as user_name,
		a.sex as user_sex,
		a.age as user_age
	from T_User a where a.age=20
	<if test="name!=null">
		AND a.name=#{name}
	</if>
</select>

2. choose,when,otherwise:类似switch,满足其中一个when分支或otherwise
3. where,if:单存使用if语句在没有固定where条件的时候,容易造成最终组装出来的sql语法错误。增加where标记可以避免。例如:
<select id="findUser4" resultMap="usermap">
	select 
		a.id as user_id,
		a.name as user_name,
		a.sex as user_sex,
		a.age as user_age
	from T_User a
	<where>
		<if test="name!=null">
			a.name=#{name}
		</if>
		<if test="fname!=null">
			AND a.fname=#{fname}
		</if>
	</where>
</select>

4. foreach.特别适用于使用in条件查询的情况。一开始不知道in里面要放多少个条件,可以使用foreach来接收一个列表,动态生成一个sql。例如:
<select id="findUserByIds" resultMap="usermap">
	select 
		a.id as user_id,
		a.name as user_name,
		a.sex as user_sex,
		a.age as user_age
	from T_User a where a.id in
	<foreach collection="list" index="index" item="item"
		open="(" close=")" separator=",">
		#{item}
	</foreach>
</select>
分享到:
评论

相关推荐

    MyBatis-Plus 学习笔记.pdf

    MyBatis-Plus 学习笔记 MyBatis-Plus 是一个基于 MyBatis 的增强工具,旨在简化开发、提高效率。它提供了许多实用的特性和功能,例如无侵入、损耗小、强大的 CRUD 操作、支持 Lambda 形式调用、支持多种数据库、...

    MyBatis学习笔记1

    【标题】"MyBatis学习笔记1" 涉及的知识点主要集中在MyBatis这一流行的持久层框架上。MyBatis是一个优秀的Java ORM(对象关系映射)框架,它允许开发者将SQL查询与Java代码分离,使得数据库操作更加灵活且易于维护。...

    Mybatis-kuang--master.zip

    "Mybatis-kuang--master.zip" 这个压缩包文件很可能是狂神(Kuang Shen)提供的一个关于Mybatis学习资源的集合,包括了他的笔记和一些练习题目。 在Mybatis的学习中,首先需要了解的是它的基本概念和架构。Mybatis ...

    mybatis学习笔记

    MyBatis 的精髓在于 SQL 映射文件(例如:iBatis学习笔记中的映射文件),其中定义了 SQL 语句、参数和结果集映射。这些映射可以包含动态 SQL,使得 SQL 语句更加灵活,可以根据传入的参数动态生成不同的 SQL。 4....

    MyBatis学习笔记.zip

    在"MyBatis学习笔记.zip"这个压缩包中,包含了四天的学习内容,分别以"MyBatis_day1"、"MyBatis_day2"、"MyBatis_day3"和"MyBatis_day4"命名,这些笔记可能详细阐述了MyBatis的核心概念和使用方法。让我们逐一解析...

    【MyBatis学习笔记四】——MyBatis分页.zip

    在MyBatis的XML配置文件中,可以编写如下的动态SQL片段来实现分页: ```xml SELECT * FROM user &lt;!-- 添加其他条件 --&gt; ORDER BY id != null and pageSize &gt; 0"&gt; LIMIT #{start}, #{pageSize} ``` ...

    Mybatis学习笔记

    本学习笔记是作者在大学期间深入学习Mybatis后的整理,旨在帮助初学者快速入门并掌握其核心概念与功能。 笔记共分为11个章节,涵盖Mybatis的基础到高级应用,以下是主要知识点的详细讲解: 1. **Mybatis简介**:...

    Mybatis学习笔记整合架构

    Mybatis通过xml或注解的方式将要执行的各种statement(statement、preparedStatemnt、CallableStatement)配置起来,并通过java对象和statement中的sql进行映射生成最终执行的sql语句,最后由mybatis框架执行sql并将...

    MyBatis学习笔记

    - **动态SQL**: MyBatis允许在XML映射文件或注解中编写动态SQL,这使得SQL的编写更加灵活,可以根据条件动态地生成不同的SQL片段。 - **结果映射**: MyBatis可以自动将查询结果映射到Java对象。这包括基本类型、...

    Mybatis源码学习-代码+笔记

    Mybatis 源码的学习可以帮助开发者理解其内部机制,包括动态SQL的解析、SQL映射文件与Java对象的映射、事务管理等核心功能。这个项目提供了从基础到进阶的完整学习路径,适用于不同层次的开发者。 2. **Maven项目...

    Mybatis学习笔记+学习源码.zip

    在本学习资源中,你将找到一份详尽的Mybatis学习笔记和源码,这将极大地助力你的学习过程,尤其是对自学者而言。这份笔记被认为是非常有价值且深入的,作者在其中倾注了大量的精力,确保了内容的全面性和实用性。 ...

    SSM 框架整合教程:一、MyBatis-尚硅谷学习笔记 2022 年

    - "SSM框架整合教程:一、MyBatis——尚硅谷学习笔记 2022 年.md":Markdown格式的学习笔记,详细记录了教程中的关键知识点和步骤。 - "SSM框架整合教程:一、MyBatis——尚硅谷学习笔记 2022 年.pdf":PDF版本的...

    mybatis学习笔记LBY.pdf

    ### Mybatis学习笔记知识点 #### 1. Mybatis 相关概念 ##### 1.1 什么是 Mybatis Mybatis 是一款优秀的持久层框架,它支持普通的 SQL 查询、存储过程以及高级映射等功能。该框架简化了 JDBC 的使用,允许开发者以...

    马士兵 mybatis学习笔记

    马士兵老师的MyBatis学习笔记主要涵盖了以下几个核心知识点: 1. **MyBatis安装与环境搭建**:首先,你需要配置Java开发环境,并了解Maven或Gradle构建工具,因为MyBatis通常与这些工具结合使用来管理依赖。然后,...

    【狂神说】mybatis学习总结笔记(全)PDF格式文档 MyBatis.pdf

    MyBatis学习总结笔记 MyBatis是一个优秀的持久层框架,它支持自定义SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码以及设置参数和获取结果集的工作。MyBatis可以通过简单的XML或注解来配置和映射原始...

Global site tag (gtag.js) - Google Analytics