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 ...
随机推荐
- Eclipse:Eclipse插件开发全套教程
分享是美德,作者为Eclipse核心工程师之一,全英文版,有不明白的地方欢迎探讨和咨询. http://www.vogella.com/tutorials/eclipse.html
- SaaS launch Kit成回收宝和友盟云合作纽带,帮助提升3倍上云效率
导语:叶飞表示,全球二手手机市场未来几年将发生巨大变革, 回收宝正进行积极布局.与阿里云开展紧密技术合作,回收宝期待成为这一变革的引领者. 7月26日,在阿里云上海峰会上,阿里云了发布SaaS生态战略 ...
- HR招聘_(九)_招聘方法论(面试环节·薪资谈判和心理把控)
.薪资谈判 薪资谈判在整个过程中非常重要,如果这一环出现问题前期的所有付出都功亏一篑,无法达成招聘目标. 谈判过程中需要遵循以下原则: 明确 通过面试后需要再次确认候选人的目前薪资和期望,虽然第一次电 ...
- Leetcode700.Search in a Binary Search Tree二叉搜索树中的搜索
给定二叉搜索树(BST)的根节点和一个值. 你需要在BST中找到节点值等于给定值的节点. 返回以该节点为根的子树. 如果节点不存在,则返回 NULL. class Solution { public: ...
- Leetcode695.Max Area of Island岛屿的最大面积
给定一个包含了一些 0 和 1的非空二维数组 grid , 一个 岛屿 是由四个方向 (水平或垂直) 的 1 (代表土地) 构成的组合.你可以假设二维矩阵的四个边缘都被水包围着. 找到给定的二维数组中 ...
- 想要快速完成一个Python项目,离不开这些开源库
链接:https://opensource.com/article/18/9/python-libraries-side-projects 在Python / Django世界中有一句话:我们为语言而 ...
- SQL优化经验总结34条
SQL优化经验总结34条 我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习.摘录.并汇总部分资料与大家分享! (1) 选择最有效率的表名顺序(只在基于规则的优化器中有效): OR ...
- 【JZOJ4922】【NOIP2017提高组模拟12.17】环
题目描述 小A有一个环,环上有n个正整数.他有特殊的能力,能将环切成k段,每段包含一个或者多个数字.对于一个切分方案,小A将以如下方式计算优美程度: 首先对于每一段,求出他们的数字和.然后对于每段的和 ...
- 【JZOJ4919】【NOIP2017提高组模拟12.10】神炎皇
题目描述 神炎皇乌利亚很喜欢数对,他想找到神奇的数对. 对于一个整数对(a,b),若满足a+b<=n且a+b是ab的因子,则成为神奇的数对.请问这样的数对共有多少呢? 数据范围 对于100%的数 ...
- JMeter与LoadRunner的对比
1. 界面.安装.协议支持.函数库.成本.开源 2. 都可以实现分布式负载,相对来说LoadRunner更强大一些 3. 都支持在windows和linux环境的负载生成器.控制台方面,Jmeter跨 ...