MyBatis动态SQL(二)
1.foreach
foreach语句用来遍历数组和集合对象。标签中的属性:
collection属性:值有三种list、array、map
open属性:表示调用的sql语句前缀添加的内容
close属性:表示调用的sql语句后缀添加的内容
separator属性:分隔符,表示每一次迭代元素之间用什么分隔
item属性:表示迭代时,每个元素的别名
index属性:表示当前循环的索引位置
映射文件配置代码:
<select id="queryByList" parameterType="list" resultMap="baseMap">
select * from t_user where no in
<foreach collection="nos" open="(" close=")" separator="," item="no">
#{no}
</foreach>
</select>
方法的接口代码:
//list,map参数必须添加注解@param不然配置文件会找不着参数而报错
public List<User> queryByList(@Param("nos")List<Integer> nos);
测试代码:
public class TestSQL {
public static IUserDao mapper = IUserMapper.getIUserMapper();
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
list.add(1009);
list.add(1111);
List<User> user = mapper.queryByList(list);
for (User user2 : user) {
System.out.println(user2);
}
}
}
测试结果:

2.bind
bind元素就是在OGNL表达式中创建一个变量,然后在整个表达式范围内都可以使用。
映射文件配置代码:
<select id="queryById" resultType="user" parameterType="int">
<bind name="abc" value="1009"/>
select *
from t_user
<where>
<if test="no=null" >
no=${abc}
</if>
</where>
</select>
测试结果:

3.sql块
sql片段一般用来定义sql中的列属性。如下例子:
映射文件配置代码:
<!-- 定义好sql片段 -->
<sql id="sql">
no,name,age
</sql>
<select id="queryByList" parameterType="list" resultMap="baseMap">
select
<!-- 引用定义好的sql片段 -->
<include refid="sql"></include>
from t_user where no in
<foreach collection="nos" open="(" close=")" separator="," item="no">
#{no}
</foreach>
</select>
<insert id="add" parameterType="user">
insert into t_user(
<!-- 引用定义好的sql片段 -->
<include refid="sql"></include>
) values(#{no},#{name},#{age})
</insert>
测试结果:

MyBatis动态SQL(二)的更多相关文章
- MyBatis 动态SQL(十二)
动态条件查询 以下是我们数据库表 tb_user 的记录: 假设现在有一个需求,就是根据输入的用户年龄和性别,查询用户的记录信息.你可能会说,这太简单了,脑袋里立马蹦出如下的 SQL 语句: SELE ...
- MyBatis动态SQL之一使用 if 标签和 choose标签
bootstrap react https://segmentfault.com/a/1190000010383464 xml 中 < 转义 to thi tha <if test=&qu ...
- Mybatis动态sql及分页、特殊符号
目的: mybatis动态sql(案例:万能查询) 查询返回结果集的处理 mybatis的分页运用 mybatis的特殊符号 mybatis动态sql(案例:万能查询) 根据id查询 模糊查询 (参数 ...
- Mybatis 动态sql(转载)
原文地址:http://www.cnblogs.com/dongying/p/4092662.html 传统的使用JDBC的方法,相信大家在组合复杂的的SQL语句的时候,需要去拼接,稍不注意哪怕少了个 ...
- mybatis实战教程(mybatis in action)之八:mybatis 动态sql语句
mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...
- 9.mybatis动态SQL标签的用法
mybatis动态SQL标签的用法 动态 SQL MyBatis 的强大特性之一便是它的动态 SQL.如果你有使用 JDBC 或其他类似框架的经验,你就能体会到根据不同条件拼接 SQL 语句有多么 ...
- 自己动手实现mybatis动态sql
发现要坚持写博客真的是一件很困难的事情,各种原因都会导致顾不上博客.本来打算写自己动手实现orm,看看时间,还是先实现一个动态sql,下次有时间再补上orm完整的实现吧. 用过mybatis的人,估计 ...
- Mybatis动态SQL单一基础类型参数用if标签
Mybatis动态SQL单一基础类型参数用if标签时,test中应该用 _parameter,如: 1 2 3 4 5 6 <select id="selectByName" ...
- 超全MyBatis动态SQL详解!( 看完SQL爽多了)
MyBatis 令人喜欢的一大特性就是动态 SQL. 在使用 JDBC 的过程中, 根据条件进行 SQL 的拼接是很麻烦且很容易出错的. MyBatis 动态 SQL 的出现, 解决了这个麻烦. My ...
- Mybatis动态SQL简单了解 Mybatis简介(四)
动态SQL概况 MyBatis 的强大特性之一便是它的动态 SQL 在Java开发中经常遇到条件判断,比如: if(x>0){ //执行一些逻辑........ } Mybatis应用中,S ...
随机推荐
- HDFS应用实例
- TZOJ 4651 zry和他的的灯泡们(lca)
描述 zry有一个收集灯泡的习惯,他把灯泡的阴极都共地,阳极连成一颗树,这样的话,他只要在任意一个灯泡的阳极加上合适的电压,所有灯泡都能亮起来.不幸的是,有一对灯泡之间的阳极连线断掉了,这样的话,这颗 ...
- 【python之路30】反射
一.反射 1.反射的基本介绍: 反射是所有程序的专有名词,在java,C#语言中都存在反射,那么什么是反射呢? python中 的反射概括来说:是通过字符串的形式导入模块,并通过字符串的形式去模块中寻 ...
- leyou_01_环境搭建
1.乐优商城项目搭建 前端技术: 基础的HTML.CSS.JavaScript(基于ES6标准) JQuery Vue.js 2.0以及基于Vue的框架:Vuetify 前端构建工具:WebPack ...
- SSM2-搭建maven常见的错误以及解决方法
1.项目中的jdk版本电脑自带的jdk版本不一致 mavne-parent 的pom.xml文件 <!-- java编译插件 --> <plugin> <groupId& ...
- 【笔记】Python3导入包规则
例如:这里给出了一种可能的包结构(在分层的文件系统中): sound/ 顶层包 __init__.py 初始化 sound 包 formats/ 文件格式转换子包 __init__.py wavrea ...
- 【solr】schemaFactory配置相关schema.xml
schemaFactory配置相关schema.xml 关于schemaFactory的配置困扰我半天啦,下面来总结一下. 话说,好像是从5.0以后就已经没有schema.xml啦,这是由于Solr ...
- 策略模式(Strategy)(策略类,场景不同策略不同,环境策略分离组合,)
(定义一组算法,将每个算法都封装起来,并且使它们之间可以互换.) 例:button 与 listener ,在使用时具体根据情况实例化listener,做不同的操作. 背景 在软件开发中常常遇到这 ...
- PHP快速导出Excel文件 (采用xlsx Writer)
<?php include_once("xlsxwriter.class.php"); ini_set('display_errors', 0); ini_set('log_ ...
- 大数据概念(4V)