`
cnflat
  • 浏览: 13078 次
  • 性别: 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学习笔记整合架构

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

    Mybatis学习笔记之动态SQL揭秘

    主要给大家介绍了关于Mybatis学习笔记之动态SQL的相关资料,小编觉得挺不错的,对大家学习或者使用Mybatis会有一定的帮助,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    Mybatis 学习笔记——原生DAO实现数据增删改查SQL

    Mybatis 学习笔记——原生DAO实现数据增删改查SQL:https://blog.csdn.net/qq_24598601/article/details/83037252

    MyBatis学习笔记

    介绍MyBatis框架的搭建,增删改查、动态SQL的使用,MyBatis与Spring的整合

    mybatis学习笔记资料

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

    Mybatis学习笔记大全.docx

    MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apache software foundation迁移到了google code,并且改名为MyBatis。2013年11月迁移到Github。 iBATIS一词来源于“internet”和“abatis”的组合,是一个...

    MyBatis3学习笔记.pdf

    所传资源为实训的Mybatis零基础入门笔记,非常适合现学现用的开发者。 MyBatis 是一款优秀的持久层框架,它支持自定义 SQL、存储过程以及高级映射。MyBatis 免除了几乎 所有的 JDBC 代码以及设置参数和获取结果集的...

    mybatis-md笔记.zip

    MyBatis-MD笔记是一种结合了MyBatis和Markdown技术的学习和记录方式,旨在帮助开发者更有效地学习和理解MyBatis框架,并将所学知识以文档形式记录下来。这种学习方法将技术和文档相结合,具有极大的灵活性和可读性,...

    mybatis学习笔记

    1.4 mybatis下载 4 1.5 创建mysql数据库 5 1.6 Mybatis入门程序 5 1.6.1 需求 5 1.6.2 第一步:创建java工程 6 1.6.3 第二步:加入jar包 6 1.6.4 第三步:log4j.properties 6 1.6.5 第四步:SqlMapConfig.xml 6 ...

    MySQL学习笔记、学习文档

    MySQL入Ar ]很简单学习笔记李国华.dox Oracle查看表结构.txt SQL作业代理禁用.txt sql.txt SQL-Transaction事物一起执行.txt sq和oracle的区别.txt sysobjects中type字段值意思txt W3School例句.txt 按照中文首字母...

    程序员面试刷题的书哪个好-LearnMybatis:学习Mybatis

    MyBatis学习笔记 - - - - - 1.简介 MyBatis是什么 MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。 MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。 MyBatis 可以使用简单...

    Mybatis(学习笔记):入门项目创建流程

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

    批量更新效率之争:MyBatis、MyBatis-Plus与JdbcTemplate等六法比较.zip

    包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...

    MySQL批量更新效率对比:原生MyBatis、MyBatis-Plus与JdbcTemplate等六种方法.zip

    包括MyBatis-Plus提供的批量更新,JdbcTemplate提供的批量更新,在xml中循环拼接sql批量更新、case when语句批量更新、replace into方式批量更新、ON DUPLICATE KEY UPDATE批量更新。 适用于对Spring Boot和数据库...

    mybatis-learnling

    不定时进行调整和补充,需要关注更新的请 Watch、Star、Fork如果你只是单纯要阅读的话,建议移步 CSDN 或者 oschina 上观看,访问速度快很多:CSDN:oschina:目录mybatis学习笔记(8)-动态sql.mdmybatis学习笔记(9)-...

    javaMybatis个人整理(印象笔记导入即可)

    Mybatis 通过 xml 或注解的方式将要执行的各种 statement 配置起来,并通过 java对象和 statement 中 sql 的动态参数进行映射生成最终执行的 sql 语句,最后由 Mybatis框架执行 sql 并将结果映射为 java 对象并返回...

    Mybatis笔记.zip

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。... 本文档包含了Mybatis的基础学习课件与笔记标注。

    MyBatis学习导图和资源

    有关Mybaits的学习路线与知识点,压缩包中有相关word文档(尚硅谷的学习笔记),含有相关的源代码(模块使用了父子关系),使用了maven工程的创建方式,mysql数据库,idea开发工具。 含有Mybaits官网中的使用手则。 ...

Global site tag (gtag.js) - Google Analytics