Mybatis中动态SQL多条件查询
Mybatis中动态SQL多条件查询
|
mybatis中用于实现动态SQL的元素有: if:用if实现条件的选择,用于定义where的字句的条件。 choose(when otherwise)相当于Java中的switch语句,通常when和otherwise一起使用。 where:简化SQL语句中的where条件。 set 解决SQL语句中跟新语句 我们课已通过几个例子来看一下这几个元素的运用场景: if: <select id="queryEmp" resultType="cn.test.entity.Emp"> select * from emp where 1=1 <if test="deptNo!=null"> and deptno=#{deptNO} </if> <if test="deptName!=null"> and deptno=#{deptName} </if> </select> 注:<if test="deptNo!=null">中 的deptNo是指实体类中的属性或字段; choose: <select id="queryEmp" resultType="cn.test.entity.Emp"> select * from emp where 1=1 <choose> <when test="deptNo!=null"> and deptno=#{deptNo} </when> <when test="deptName!=null"> and deptname=#{deptName} </when> <otherwise> and personnum>#{personNum} </otherwise> </choose> </select> 注:上面也说了,choose相当于Java中的switch语句;当第一个when满足时;就只执行第一个when中的条件。当when中的条件都不满足时;就会执行默认的的;也就是otherwise中的语句。 where: <select id="queryEmp" resultType="cn.test.entity.Emp"> select * from emp <where> <if test="deptNo!=null"> and deptno=#{deptNO} </if> <if test="deptName!=null"> and deptno=#{deptName} </if> </where> </select> 注: where下面第一个if语句中以and开头,也可以省略第一个and ,如果第一个if语句中有and;mybatis会将第一个and忽略。 set: <update id="updateEmp" parameterType="cn.test.entity.Emp" flushCache="true"> update emp <set> <if test="empName!=null">empname=#{empName},</if> <if test="job!=null">job=#{job}</if> </set> where empno=#{empNo} </update> 注: 在mybatis中的SQL语句结尾不能加“;”,这样会导致mybatis无法识别字符;导致SQL语句的语法错误;出现 java.sql.SQLSyntaxErrorException: ORA-00911: 无效字符的错误。的异常。
|
Mybatis中动态SQL多条件查询的更多相关文章
- MyBatis中动态SQL元素的使用
掌握MyBatis中动态SQL元素的使用 if choose(when,otherwise) trim where set foreach <SQL>和<include> 在应 ...
- Mybatis中动态SQL语句中的parameterType不同数据类型的用法
Mybatis中动态SQL语句中的parameterType不同数据类型的用法1. 简单数据类型, 此时#{id,jdbcType=INTEGER}中id可以取任意名字如#{a,jdbcType ...
- MyBatis中动态SQL语句完成多条件查询
一看这标题,我都感觉到是mybatis在动态SQL语句中的多条件查询是多么的强大,不仅让我们用SQL语句完成了对数据库的操作:还通过一些条件选择语句让我们SQL的多条件.动态查询更加容易.简洁.直观. ...
- mybatis之动态SQL操作之查询
1) 查询条件不确定,需要根据情况产生SQL语法,这种情况叫动态SQL /** * 持久层 * @author AdminTC */ public class StudentDao { /** * ...
- mybatis的动态sql及模糊查询
1.动态sql 使用类似于jstl表达式来实现 2.模糊查找 用一个对象来封装条件 步骤: 1)新建一个条件实体 package com.hy.mybatis.entity; public class ...
- mybatis中动态SQL之trim详解
一. 背景 之前mybatis中<where>.<update>.<if>.<foreach>标签用的多,知道有<trim>这个标签,但很少 ...
- 阶段3 1.Mybatis_08.动态SQL_03.mybatis中动态sql语句-foreach和sql标签
foreach标签 in的查询 sql语句好写,但是传参在映射文件里面改怎么传呢 定义一个List<Integer>成员变量,然后生成get和set 定义一个新的查询方法 open:开始符 ...
- 阶段3 1.Mybatis_08.动态SQL_02.mybatis中动态sql语句-where标签的使用
这里的userSex是实体类里面的属性名,而不是数据库内的字段名称 一个老王改成性别女,为了区分一下 增加sex字段的查询 where标签 用上where和刚才的执行效果是一样的 where标签使我们 ...
- mybatis中的.xml文件总结——mybatis的动态sql
resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过re ...
随机推荐
- section
@RenderSection("Header") @section Header { <div class="view"> @foreach ( ...
- UVa 10562 Undraw the Trees 看图写树
转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 10562Undraw the Trees 给定字符拼成的树,将 ...
- PAT L3-001. 凑零钱
$01$背包,路径记录,贪心. 可以将物品从大到小排序之后进行背包,同时记录路径. #include<map> #include<set> #include<ctime& ...
- 【SQL】oralce中使用group by和case when按照条件求和
假设我们有一个Salary 薪水表.这个表的字段分别为:id, name, salary, level 在这个表中,每个人有不同的级别(level).我们要根据不同的级别统计相同级别员工的薪水总和. ...
- 【前端必备】三、JS篇
1.运算符与隐式类型转换 类型判断: typeof constructor.toString().indexOf() NaN是numberArray.Date.Null都是Objectfunction ...
- Java基于数据源的数据库访问
☞ 概述 最早接触的Java访问数据库,是通过jdbc接口.后来工作之后,一般是在服务器(如weblogic)配置数据源,通过JNDI使用数据源:最近需要在程序中动态构造数据源,查了些资料,备录于此. ...
- Xamarin XAML语言教程模板页面TemplatedPage
Xamarin XAML语言教程模板页面TemplatedPage 模板页面TemplatedPage 在上文中我们提到了TemplatedPage,它被称为模板页面,用来显示控件模版.Templat ...
- 数据库SQL归纳(二)
数据定义功能 对象 创建 修改 删除 架构 CREATE SCHEMA DROP SCHEMA 表 CREATE TABLE ALTER TABLE DROP TABLE 视图 CREATE VIEW ...
- 初雪-Diary?
who care ------------2018 11 6-------------- 终于AK一场啦 ------------2018 10 18-------------- 嗯....今天T2多 ...
- BZOJ 2152 聪聪可可(点分治)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2152 [题目大意] 给出一棵树,问任取两点之间距离为3的倍数的概率是多少 [题解] 树 ...