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 ...
随机推荐
- 【vue】imitate-beautiful-thing
我从未见过这么美妙的项目,当然与我接触的项目少有关,但是这个项目满满的艺术气息,让人沉醉,让人忍不住的去研究代码. 先放项目地址:https://github.com/eidonlon/imitate ...
- 谷歌浏览器flash被禁用解决方法
谷歌浏览器访问设置:chrome://settings/content/flash 把要启动flash插件的网址添加进去
- 『Power AI by AI』 PAI-AutoML2.0重磅发布
PAI-AutoML调参服务是通过算法的方式解放用户调节算法参数的工作.自2018年8月发布PAI-AutoML1.0版本以来,该功能已经帮助众多PAI的中小企业用户提升了模型的准确性,得到了不错的反 ...
- Django项目:CRM(客户关系管理系统)--53--44PerfectCRM实现账号快速注册登陆
# gbacc_ajax_urls.py # ————————42PerfectCRM实现AJAX全局账号注册———————— from django.conf.urls import url fro ...
- 读书笔记--Head First C#目录
1.c#助你快速开发2.都只是代码3.对象4.类型与引用5.封装6.继承7.接口与抽象类8.枚举与集合9.读/写文件10.异常处理11.事件与委托12.复习与预习13.控件与图片14.captain ...
- 直接在安装了redis的Linux机器上操作redis数据存储类型--hash类型
一.概述: 我们可以将Redis中的Hashes类型看成具有String Key和String Value的map容器.所以该类型非常适合于存储值对象的信息.如Username.Password和 ...
- maven编译报错 错误: -source 1.5 中不支持 lambda 表达式
ji与基于maven的工程java应用程序非web应用的 参考这个https://www.cnblogs.com/softidea/p/6256543.html 但是java应用里边是没有这个配置的, ...
- NOIP模拟赛 17.10.10
初次见面(firstmeet)[题目背景]雾之湖边,静得可怕.露米娅出神凝望.黑白连衣裙,像极了绽放的墨黑和洁白的莲.身边的雾之湖,倒映着血色天空.酒红的双眸,映照一切.低声浅笑,双臂伸直,她悄无声息 ...
- mybatis中使用包装对象
在实际的应用中,很多时候我们需要的查询条件都是一个综合的查询条件,因此我们需要对已经存在的实体进行再一次的包装,以方便我们进行查询操作,于是包装对象的作用就很明显了,在这里我举一个简单的例子 1.首先 ...
- Liferay 7:如何在Liferay Portlet中使用Angular, React, Vue.js等前端框架
https://web.liferay.com/zh/web/ivan.zaera/blog/-/blogs/modern-frontend-workflows-in-liferay-portal L ...