1.接口

public interface MemberMapperDynamicSQL {

    public List<Members> selectMembersByIf(Members member);

}

2.配置文件

<mapper namespace="com.dao.MemberMapperDynamicSQL">

    <!--
OGNL表达式
&的转义字符为 &amp;
'的转义字符为 &quot;
-->
<select id="selectMembersByIf" resultType="members"> select * from members where 1 = 1 <if test="id != null &amp;&amp; id != &quot;&quot;">
and id = #{id}
</if> <if test="member_name != null &amp;&amp; member_name != &quot;&quot;">
and member_name like #{member_name}
</if> </select> </mapper>

3.测试

    public static void main(String[] args) throws IOException {
SqlSession session = getSqlSession();
try {
// 面向接口方式
MemberMapperDynamicSQL mapper = session.getMapper(MemberMapperDynamicSQL.class);
Members member = new Members();
// member.setId(1);
// member.setMember_name("%云%");
List<Members> list = mapper.selectMembersByIf(member);
System.out.println(list);
session.commit();
} finally {
// 关闭session
session.close();
}
}

4.在全局配置文件中加入log打印日志

    <settings>
<setting name="logImpl" value="STDOUT_LOGGING"/>
</settings>

5.打印结果

==>  Preparing: select * from members where 1 = 1
==> Parameters:
<== Columns: id, member_name, pass_word, age
<== Row: 1, 张三, 123456, 25
<== Row: 2, 李四, 123456, 25
<== Row: 3, 关云长, 123456, 54
<== Row: 4, 关云长, 123456, 54
<== Total: 4
[Member [id=1, member_name=张三, password=123456, age=25], Member [id=2, member_name=李四, password=123456, age=25], Member [id=3, member_name=关云长, password=123456, age=54], Member [id=4, member_name=关云长, password=123456, age=54]]

条件成立则拼接相应的条件,不成立则不拼接

Mybatis之动态SQL&OGNL表达式的更多相关文章

  1. mybatis 的动态sql语句是基于OGNL表达式的。

    mybatis 的动态sql语句是基于OGNL表达式的.可以方便的在 sql 语句中实现某些逻辑. 总体说来mybatis 动态SQL 语句主要有以下几类:1. if 语句 (简单的条件判断)2. c ...

  2. MyBatis的动态SQL详解

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑,本文详解mybatis的动态sql,需要的朋友可以参考下 MyBatis 的一个强大的特性之一通常是它 ...

  3. Mybatis解析动态sql原理分析

    前言 废话不多说,直接进入文章. 我们在使用mybatis的时候,会在xml中编写sql语句. 比如这段动态sql代码: <update id="update" parame ...

  4. mybatis 使用动态SQL

    RoleMapper.java public interface RoleMapper { public void add(Role role); public void update(Role ro ...

  5. MyBatis框架——动态SQL、缓存机制、逆向工程

    MyBatis框架--动态SQL.缓存机制.逆向工程 一.Dynamic SQL 为什么需要动态SQL?有时候需要根据实际传入的参数来动态的拼接SQL语句.最常用的就是:where和if标签 1.参考 ...

  6. MyBatis探究-----动态SQL详解

    1.if标签 接口中方法:public List<Employee> getEmpsByEmpProperties(Employee employee); XML中:where 1=1必不 ...

  7. mybatis中的.xml文件总结——mybatis的动态sql

    resultMap resultType可以指定pojo将查询结果映射为pojo,但需要pojo的属性名和sql查询的列名一致方可映射成功. 如果sql查询字段名和pojo的属性名不一致,可以通过re ...

  8. mybatis.5.动态SQL

    1.动态SQL,解决关联sql字符串的问题,mybatis的动态sql基于OGNL表达式 if语句,在DeptMapper.xml增加如下语句; <select id="selectB ...

  9. MyBatis的动态SQL详解-各种标签使用

    MyBatis的动态SQL是基于OGNL表达式的,它可以帮助我们方便的在SQL语句中实现某些逻辑. MyBatis中用于实现动态SQL的元素主要有: if choose(when,otherwise) ...

随机推荐

  1. JMeter 脚本请求错误 HTTP Status 415 的解决

    然后在http请求上点击右键,添加配置元件-http信息头管理器,在信息头管理器上,添加一个参数,名称:Content-Type,值:application/json.然后在http请求上,conte ...

  2. 二、部署DHCP

    *本文转自https://blog.51cto.com/lumay0526/2046957 简述 DHCP是Dynamic Host Configuration Protocol的缩写,中文称动态主机 ...

  3. C++大数运算模板

    #include<iostream> #include<cstring> #include<cstdio> #include<iomanip> #inc ...

  4. 将linux的root用户的家目录由/root切换为/home/root

    步骤1,先以root登录,然后创建目录/home/root步骤2,vi /etc/passwd里root用户的家目录为/home/root:步骤3,cp -rf /root/ /home/将原来的ro ...

  5. [转帖]Linux下逻辑地址、线性地址、物理地址详细总结

    Linux下逻辑地址.线性地址.物理地址详细总结 https://www.cnblogs.com/alantu2018/p/9002441.html 总结的挺好的 现在应该是段页式管理 使用MMU和T ...

  6. Linux7 安装python3.5.4

    1.首先修改yum配置文件 因为yum使用python2,因此替换为python3后可能无法正常工作,继续使用这个python2.7.5 因此修改yum配置文件(vi /usr/bin/yum). 把 ...

  7. Python3中真真假假True、False、None等含义详解

    概述 在Python中,不仅仅和类C一样的真假类似,比如1代表真,0代表假.Python中的真假有着更加广阔的含义范围,Python会把所有的空数据结构视为假,比如[](空列表).{}(空集合).'' ...

  8. 如何用Java实现条件编译

    在 C 或 C++ 中,可以通过预处理语句来实现条件编译.代码如下: #define DEBUG #IFDEF DEBUUG /* code block 1 */ #ELSE /* code bloc ...

  9. Linux 基础 目录介绍

    /bin           存放二进制可执行文件(ls  cat   clear)等等 ,常用基础命令在这个目录下 /etc           存放系统管理和配置文件   如 passwd   用 ...

  10. pyrhon 第一个小购物车例子

    product_list=[[],[],[],[]] shopping_list=[] salary = input("请输入你的工资:") if salary.isdigit() ...