
MyBatis:7、动态 Sql
发布日期:2021-05-07 00:01:35
浏览次数:22
分类:技术文章
本文共 3058 字,大约阅读时间需要 10 分钟。
动态Sql
使用动态 SQL 可简化代码的开发,减少开发者的工作量,程序可以自动根据业务参数来决定 SQL 的组成。
-
if 标签
if 标签可以自动根据表达式的结果来决定是否将对应的语句到 SQL 中,如果条件不成立则不添加,如果条件成立则添加。
-
where 标签
where 标签可以自动判断是否要删除语句块中的 and 关键字,如果检测到 where 直接跟 and 拼接,则自动删除 and 。通常情况下 if 和 where 结合使用。
-
choose、when 标签
choose when 标签会按顺序判断其内部 when 标签中的 test 条件是否成立,如果有一个成立,则 choose 结束。
-
trim 标签
trim 标签中的 prefix 和 suffix 属性会被用于生成实际的 SQL 语句,会和标签内部的语句进行拼接,如果语句前后出现了 prefixOverrides 或者 suffixOverrides 属性中指定的值,MyBatis 框架会自动将其删除。
在这里,where 和 and 一遇到就会被删除。
-
set 标签
update t_account username=#{username}, password=#{password}, age=#{age}, set 标签用于 update 操作,会自动根据参数选择
-
foreach 标签
public List
findByIds(Account account); package com.xiaoxin.test;import com.xiaoxin.entity.Account;import com.xiaoxin.repository.AccountRepository;import org.apache.ibatis.io.Resources;import org.apache.ibatis.session.SqlSession;import org.apache.ibatis.session.SqlSessionFactory;import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.util.ArrayList;import java.util.List;import java.io.IOException;import java.io.InputStream;public class Test8 { public static void main(String[] args) throws IOException { InputStream inputStream = Resources.getResourceAsStream("config.xml"); SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); SqlSessionFactory factory = builder.build(inputStream); SqlSession sqlSession = factory.openSession(); AccountRepository accountRepository = sqlSession.getMapper(AccountRepository.class); Account account = new Account(); account.setId(1L); account.setUsername("陈小鑫"); account.setPassword("456789"); account.setAge(33); List
ids = new ArrayList (); ids.add(1L); ids.add(12L); ids.add(13L); account.setIds(ids); System.out.println(accountRepository.findByIds(account)); sqlSession.close(); }} foreach 标签可以迭代生成一系列值,这个标签主要用于 SQL 的 in 语句。
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月04日 15时27分30秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【java】316. 去除重复字母----学会栈的使用
2019-03-04
【java】227. 基本计算器 II---思路简单,代码清晰!!!
2019-03-04
【java】115. 不同的子序列----学会动态规划,时间复杂度O(n^2)!!!
2019-03-04
【java】92. 反转链表 II---无需额外空间,时间复杂度O(n)!!!
2019-03-04
【java】368. 最大整除子集---使用动态规划,快速解决子问题!!!
2019-03-04
莫比乌斯函数
2019-03-04
HDU - 6514 Monitor(二维差分+二维前缀和)
2019-03-04
LINUX延时函数使用
2019-03-04
数据结构第七章(图---总结一)
2019-03-04
2020-12-24
2019-03-04
JDBC——(5)使用Statement操作数据表的弊端
2019-03-04
JDBC——(6)PreparedStatement的使用
2019-03-04
JDBC——(6)PreparedStatement的使用——实现查询操作
2019-03-04
JDBC——小知识:PreparedStatement 和Statement的比较
2019-03-04
JDBC——(6)PreparedStatement的使用——图解查询操作流程
2019-03-04
JDBC——(6)PreparedStatement的使用——针对不同表的查询操作
2019-03-04
MyBatis——(3)MyBatis_接口式编程
2019-03-04
MyBatis——小知识:MyBatis_映射配置文件_参数值获取
2019-03-04
MyBatis——小知识:MyBatis_映射配置文件_#{}:更丰富的用法:
2019-03-04