mybatis之动态SQL
2023-06-13 09:15:11 时间
Mybatis框架的动态SQL技术是一种根据特定条件动态拼装SQL语句的功能,它存在的意义是为了 解决 拼接SQL语句字符串时的痛点问题。
if
if标签可通过test属性的表达式进行判断,若表达式的结果为true,则标签中的内容会执行;反之 标签中的内容不会执行
<!--List<Emp> getEmpListByCondition(Emp emp);-->
<select id="getEmpListByMoreTJ" resultType="Emp">
select * from t_emp where 1=1
<if test="ename != '' and ename != null">
and ename = #{ename}
</if>
<if test="age != '' and age != null">
and age = #{age}
</if>
<if test="sex != '' and sex != null">
and sex = #{sex}
</if>
</select>
where
where和if一般结合使用:
a>若where标签中的if条件都不满足,则where标签没有任何功能,即不会添加where关键字
b>若where标签中的if条件满足,则where标签会自动添加where关键字,并将条件最前方多余的
and去掉 注意:where标签不能去掉条件最后多余的and
<select id="getEmpListByMoreTJ2" resultType="Emp">
select * from t_emp
<where>
<if test="ename != '' and ename != null">
ename = #{ename}
</if>
<if test="age != '' and age != null">
and age = #{age}
</if>
<if test="sex != '' and sex != null">
and sex = #{sex}
</if>
</where>
</select>
trim
trim用于去掉或添加标签中的内容
常用属性:
prefix:在trim标签中的内容的前面添加某些内容
prefixOverrides:在trim标签中的内容的前面去掉某些内容
suffix:在trim标签中的内容的后面添加某些内容
suffixOverrides:在trim标签中的内容的后面去掉某些内容
<select id="getEmpListByMoreTJ" resultType="Emp">
select * from t_emp
<trim prefix="where" suffixOverrides="and">
<if test="ename != '' and ename != null">
ename = #{ename} and
</if>
<if test="age != '' and age != null">
age = #{age} and
</if>
<if test="sex != '' and sex != null">
sex = #{sex}
</if>
</trim>
</select>
choose、when、otherwise
choose、when、 otherwise相当于if...else if..else
<!--List<Emp> getEmpListByChoose(Emp emp);-->
<select id="getEmpListByChoose" resultType="Emp">
select <include refid="empColumns"></include> from t_emp
<where>
<choose>
<when test="ename != '' and ename != null">
ename = #{ename}
</when>
<when test="age != '' and age != null">
age = #{age}
</when>
<when test="sex != '' and sex != null">
sex = #{sex}
</when>
<when test="email != '' and email != null">
email = #{email}
</when>
</choose>
</where>
</select>
foreach
<!--int insertMoreEmp(List<Emp> emps);-->
<insert id="insertMoreEmp">
insert into t_emp values
<foreach collection="emps" item="emp" separator=",">
(null,#{emp.ename},#{emp.age},#{emp.sex},#{emp.email},null)
</foreach>
</insert>
<!--int deleteMoreByArray(int[] eids);-->
<delete id="deleteMoreByArray">
delete from t_emp where
<foreach collection="eids" item="eid" separator="or">
eid = #{eid}
</foreach>
</delete>
<!--int deleteMoreByArray(int[] eids);-->
<delete id="deleteMoreByArray">
delete from t_emp where eid in
<foreach collection="eids" item="eid" separator="," open="(" close=")">
#{eid}
</foreach>
</delete>
我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=1fomewdxp7l2
相关文章
- PL/SQL语句_sql语句declare用法
- MyBatis多条件查询、动态SQL、多表操作、注解开发详细教程
- MyBatis——动态SQL总结
- mybatis的常用动态sql标签
- MyBatis-动态SQL
- MyBatis框架:第九章:动态SQL语句
- 什么是pl/sql语句_过程化SQL有三种循环结构
- mybatis中的动态sql表现为_MybatisPlus
- MyBatis动态SQL日志和缓存
- 【MyBatis-Plus】MyBatis-Plus插件机制以及通用Service、新功能
- Spark SQL报错:org.apache.spark.sql.catalyst.errors.package$TreeNodeException 排查记录
- Mybatis动态SQL查询 --(附实战案例--8888个字--88质量分)
- mybatis 详解(十)—— 逆向工程编程语言
- mybatis 详解(五)——动态SQL编程语言
- MySQL动态SQL:实现动态查询的高效方式。(mysql动态sql)
- 掌握Oracle动态SQL拼接技巧,实现查询性能优化(oracle动态sql拼接)
- Java数据持久层框架 MyBatis之API学习七(动态 SQL详解)编程语言
- Mybatis学习总结(五):动态sql详解编程语言
- MyBatis动态sql之trim、where、set标签
- MySQL服务器的SQL模式(sql_mode变量)
- MyBatis执行SQL的两种方式
- Oracle锁表SQL: 掌握锁表操作必知要点(oracle锁表sql)
- Oracle访问SQL:初探编写方式(oracle访问sql)
- 文件Linux快速导入SQL文件的方法(linux导入sql)
- 如何使用 MySQL 导入 SQL 文件?(mysql导入sql文件)
- 数据库利用SQL文件建立MSSQL数据库的步骤(sql文件建立mssql)
- 快捷高效:Oracle批量执行SQL脚本技巧指南(oracle批量执行sql脚本)
- 了解Oracle跟踪SQL的必备工具(oracle跟踪sql工具)
- SQL Server导出SQL文件:实现快速数据备份(sqlserver导出sql文件)
- MySQL实现SQL脚本查询与操作(mysql执行sql脚本)
- serverMySQL 与 SQL Server 的比较与选择(mysql 和 sql)
- 使用Oracle动态SQL脚本提升数据库性能(oracle中动态sql)
- Oracle SQL 实现数据传值(oracle sql传值)