MyBatis 常用写法
程序员文章站
2022-10-16 14:28:01
MyBatis 常用写法 1、forEach 循环 forEach 元素的属性主要有 item, idnex, collection, open, separator, close。 1. collection:传入的 List 或 Array 或自己封装的 Map。 2. ......
mybatis 常用写法
1、foreach 循环
foreach 元素的属性主要有 item, idnex, collection, open, separator, close。
- collection:传入的 list 或 array 或自己封装的 map。
- item:集合中元素迭代时的别名。
- idnex:集合中元素迭代是的索引。
- open:where 后面表示以什么开始,如以‘(’开始。
- separator:表示在每次进行迭代是的分隔符。
- close:where后面表示以什么结束,如以‘)’结束。
//mapper中需要传递一个容器 public list<user> querybyidlist(list<integer> useridlist); <select id="querybyidlist" resultmap="baseresultmap" parametertype="map"> select * from user where userid in <foreach collection="useridlist" item="id" index="index" open="(" close=")" separator=","> #{id} </foreach> </select>
2、concat 模糊查询
//模糊查询使用concat拼接sql <select id="querybyname" resultmap="baseresultmap" paramtertype"string"> select * from user <where> <if test="name != null"> name like concat('%', concat(#{name}, '%')) </if> </where> </select>
3、if + where 标签
用 if 标签判断参数是否有效来进行条件查询。
<select id="getuserlist" resultmap="baseresultmap" paramtertype="com.demo.user"> select * from user <where> <if test="userid !=null and userid!= ''"> userid= #{userid} </if> <if test="name !=null and name!= ''"> and name= #{name} </if> <if phone="userid !=null and phone!= ''"> and phone= #{phone} </if> </where> </select>
where 动态语句中,where 标签会自动去掉 and 或 or。防止 where and 错误。
4、if + set
使用 set 标签可以动态的配置 set 关键字,使用 if + set 标签,如果某项为 null 则不进行更新。
<update id="updateuser" paramtertype="com.demo.user"> update user <set> <if test=" name != null and name != ''"> name = #{name}, </if> <if test=" phone != null and phone != ''"> phone = #{phone}, </if> </set> where userid = #{userid} </update>
5、if + trim 代替 where/set 标签
trim 可以更灵活的去处多余关键字的标签,可以实现 where 和 set 的效果。
<select id="getuserlist" resultmap="baseresultmap" paramtertype="com.demo.user"> select * from user <trim prefix="where" prefixoverrides="and|or"> <if test="userid !=null and userid!= ''"> userid= #{userid} </if> <if test="name !=null and name!= ''"> and name= #{name} </if> <if phone="userid !=null and phone!= ''"> and phone= #{phone} </if> </trim> </select> <update id="updateuser" paramtertype="com.demo.user"> update user <trim prefix="set" suffixoverrides=","> <if test=" name != null and name != ''"> name = #{name}, </if> <if test=" phone != null and phone != ''"> phone = #{phone}, </if> </trim> where userid = #{userid} </update>
5、choose(when, otherwise)标签
choose 标签是按顺序判断其内部 when 标签中的 test 条件是否成立,如果有一个成立,则 choose 结束。当 choose 中所有 when 的条件都不满足,则执行 otherwise 中的 sql。类似 java 中的 switch 语句,choose 为 switch,when 为 case,otherwise 则为 default。
<select id="selectcustomerbycustnameandtype" parametertype="map" resultmap="baseresultmap"> select * from user <choose> <when test="utype == 'name'"> where name = #{name} </when> <when test="utype == 'phone'"> where phone= #{phone} </when> <when test="utype == 'email'"> where email= #{email} </when> <otherwise> where name = #{name} </otherwise> </choose> </select>
上一篇: 怎么获取泛型T.class类?
推荐阅读
-
【QT】QT从零入门教程(九):QT常用控件 [QSlider、QSpinBox、QComboBox、QRadioButton]
-
Anaconda 常用使用技巧总结
-
荐 总结:JavaScript常用的数组方法
-
【QT】QT从零入门教程(八):QT常用控件 [QLabel、QPushButton、QLineEdit、QTextEdit]
-
写Tensorflow遇到的bug和常用Python方法总结
-
mybatis之旅第三篇-SqlMapConfig.xml全局配置文件解析
-
一起学爬虫——urllib库常用方法用法总结
-
Java Maven:spring boot + Mybatis连接MySQL,通用mapper的增删改查,映射实现多表查询
-
Qt入门教程-Qt常用窗口部件介绍-10
-
一篇文章弄懂PHP和HTML的嵌套写法