博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MyBats动态SQL之set标签、trim标签、foreach标签
阅读量:5249 次
发布时间:2019-06-14

本文共 3247 字,大约阅读时间需要 10 分钟。

update操作之set标签

直接上例子说明

//接口中的方法为int update(User user); try {                                                              sqlSession = MyBatisUtil.getSqlSession();                      User user = new User();                                        user.setId(3);                                                 user.setAccount("solider76");                                  user.setUser_name("士兵76号");                                    int num = sqlSession.getMapper(UserDao.class).update(user);    sqlSession.commit();                                           System.out.println(num);                                   } catch(Exception e){
   throw new RuntimeException(e.getMessage()); } finally { MyBatisUtil.closeSqlSession(sqlSession); }

映射文件:

update web_user
account = #{account},
password = #{password},
user_name =#{user_name}
where id=#{id}

set标签会自动检索最后一个逗号,并清除。

trim自定义标签

有时候如果有些标签用起来不尽人意,可以用trim标签自定义标签,比如where标签的等价trim元素为

...

执行trim标签时,会首先动态前置WHERE,并且通过prefixOverrides检索去掉无关的and 或or 

而set标签的等价trim元素为

...

首先会动态前置SET,并通过suffixOverrides去掉无关紧要的,

foreach标签

如果判断的条件在某个集合中,类似select * from web_user where id in(1,2,3,4)

此时需要使用foreach标签

//接口中的方法为List
foreach(int[] ids); try { sqlSession = MyBatisUtil.getSqlSession(); Integer[] ids = new Integer[]{ 1 , 2 , 3 }; List
list = sqlSession.getMapper(UserDao.class).foreach01(ids); logger.debug(list); } finally { MyBatisUtil.closeSqlSession(sqlSession); }

映射文件:

collection中可以写array、list、map中的key,具体是什么要看接口中的参数类型

DEBUG [main] - ==>  Preparing: select * from web_user where id in ( ? , ? , ? ) DEBUG [main] - ==> Parameters: 1(Integer), 2(Integer), 3(Integer)TRACE [main] - <==    Columns: id, account, password, user_nameTRACE [main] - <==        Row: 1, wukong, wukong, 悟空TRACE [main] - <==        Row: 2, wuneng, wuneng, 悟能TRACE [main] - <==        Row: 3, solider76, wujing, 士兵76号DEBUG [main] - <==      Total: 3

 

转载于:https://www.cnblogs.com/qingyaxuan/p/6416302.html

你可能感兴趣的文章
重置GNOME-TERMINAL
查看>>
redis哨兵集群、docker入门
查看>>
hihoCoder 1233 : Boxes(盒子)
查看>>
codeforces水题100道 第二十二题 Codeforces Beta Round #89 (Div. 2) A. String Task (strings)
查看>>
c++||template
查看>>
[BZOJ 5323][Jxoi2018]游戏
查看>>
编程面试的10大算法概念汇总
查看>>
条件断点 符号断点
查看>>
Python Web框架Django (五)
查看>>
.net学习之继承、里氏替换原则LSP、虚方法、多态、抽象类、Equals方法、接口、装箱拆箱、字符串------(转)...
查看>>
python的多行注释
查看>>
连接Oracle需要jar包和javadoc文档的下载
查看>>
UVA 10976 - Fractions Again?!
查看>>
Dreamweaver cc新版本css单行显示
查看>>
【android】安卓的权限提示及版本相关
查看>>
JavaScript可否多线程? 深入理解JavaScript定时机制
查看>>
IOS基础学习
查看>>
Java基础教程——网络基础知识
查看>>
Kruskal基础最小生成树
查看>>
浅谈算法和数据结构: 一 栈和队列
查看>>