Ibatis的动态查询使得数据操作变得非常的灵活,下次举出了常用的动态查询的属性信息:
Ibatis配置信息

  1. <!-- Dynamic Sql -->
  2. <typeAlias alias="Student" type="com.ibatis.Student" />
  3. <typeAlias alias="StudentDTO" type="com.ibatis.StudentDTO" />
  4. <select id="dynamicGetStudent" parameterClass="StudentDTO"
  5. resultClass="Student">
  6. select *
  7. from student
  8. <dynamic prepend="WHERE">
  9. <isNotEqual prepend="AND" property="sid" compareValue="0">
  10. sid = #sid#
  11. </isNotEqual>
  12. <isNotNull prepend="AND" property="sname">
  13. sname = #sname#
  14. </isNotNull>
  15. </dynamic>
  16. <dynamic prepend="order by">
  17. <isParameterPresent>
  18. <isEqual prepend="order by" property="sort" compareValue="1">
  19. sname desc,socre
  20. </isEqual>
  21. <isEqual prepend="order by" property="sort" compareValue="2">
  22. sname asc,socre
  23. </isEqual>
  24. </isParameterPresent>
  25. </dynamic>
  26. </select>
<!-- Dynamic Sql -->
  <typeAlias alias="Student" type="com.ibatis.Student" />
	<typeAlias alias="StudentDTO" type="com.ibatis.StudentDTO" />
	<select id="dynamicGetStudent" parameterClass="StudentDTO"
		resultClass="Student">
		select *
		from student
		<dynamic prepend="WHERE">
			<isNotEqual prepend="AND" property="sid" compareValue="0">
				sid = #sid#
			</isNotEqual>

			<isNotNull prepend="AND" property="sname">
				sname = #sname#
			</isNotNull>
		</dynamic>
		<dynamic prepend="order by">
			<isParameterPresent>
				<isEqual prepend="order by" property="sort" compareValue="1">
					sname desc,socre
				</isEqual>

				<isEqual prepend="order by" property="sort" compareValue="2">
					sname asc,socre
				</isEqual>
			</isParameterPresent>
		</dynamic>
	</select>

Student的信息

  1. package com.ibatis;
  2. import java.util.Date;
  3. public class Student {
  4. private int sid;
  5. private String sname;
  6. private String major;
  7. private Date birth;
  8. private int socre;
  9. public int getSid() {
  10. return sid;
  11. }
  12. public void setSid(int sid) {
  13. this.sid = sid;
  14. }
  15. public String getSname() {
  16. return sname;
  17. }
  18. public void setSname(String sname) {
  19. this.sname = sname;
  20. }
  21. public String getMajor() {
  22. return major;
  23. }
  24. public void setMajor(String major) {
  25. this.major = major;
  26. }
  27. public Date getBirth() {
  28. return birth;
  29. }
  30. public void setBirth(Date birth) {
  31. this.birth = birth;
  32. }
  33. public int getSocre() {
  34. return socre;
  35. }
  36. public void setSocre(int socre) {
  37. this.socre = socre;
  38. }
  39. @Override
  40. public String toString() {
  41. String content = "Sid="+this.sid+"\t"+"Sname="+this.sname+"\t"+this.birth.toLocaleString();
  42. return content;
  43. }
  44. }
package com.ibatis;

import java.util.Date;

public class Student {
	private int sid;
	private String sname;
	private String major;
	private Date birth;
	private int socre;
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getMajor() {
		return major;
	}
	public void setMajor(String major) {
		this.major = major;
	}
	public Date getBirth() {
		return birth;
	}
	public void setBirth(Date birth) {
		this.birth = birth;
	}
	public int getSocre() {
		return socre;
	}
	public void setSocre(int socre) {
		this.socre = socre;
	}

	@Override
	public String toString() {
		String content = "Sid="+this.sid+"\t"+"Sname="+this.sname+"\t"+this.birth.toLocaleString();
		return content;
	}

}

StudentDTO的信息

  1. package com.ibatis;
  2. import java.util.Date;
  3. public class StudentDTO {
  4. private int sid;
  5. private String sname;
  6. private String major;
  7. private Date birth;
  8. private int socre;
  9. private int sort;
  10. public int getSort() {
  11. return sort;
  12. }
  13. public void setSort(int sort) {
  14. this.sort = sort;
  15. }
  16. public int getSid() {
  17. return sid;
  18. }
  19. public void setSid(int sid) {
  20. this.sid = sid;
  21. }
  22. public String getSname() {
  23. return sname;
  24. }
  25. public void setSname(String sname) {
  26. this.sname = sname;
  27. }
  28. public String getMajor() {
  29. return major;
  30. }
  31. public void setMajor(String major) {
  32. this.major = major;
  33. }
  34. public Date getBirth() {
  35. return birth;
  36. }
  37. public void setBirth(Date birth) {
  38. this.birth = birth;
  39. }
  40. public int getSocre() {
  41. return socre;
  42. }
  43. public void setSocre(int socre) {
  44. this.socre = socre;
  45. }
  46. @Override
  47. public String toString() {
  48. String content = "Sid="+this.sid+"\t"+"Sname="+this.sname+"\t"+this.birth.toLocaleString();
  49. return content;
  50. }
  51. }
package com.ibatis;

import java.util.Date;

public class StudentDTO {
	private int sid;
	private String sname;
	private String major;
	private Date birth;
	private int socre;
	private int sort;
	public int getSort() {
		return sort;
	}
	public void setSort(int sort) {
		this.sort = sort;
	}
	public int getSid() {
		return sid;
	}
	public void setSid(int sid) {
		this.sid = sid;
	}
	public String getSname() {
		return sname;
	}
	public void setSname(String sname) {
		this.sname = sname;
	}
	public String getMajor() {
		return major;
	}
	public void setMajor(String major) {
		this.major = major;
	}
	public Date getBirth() {
		return birth;
	}
	public void setBirth(Date birth) {
		this.birth = birth;
	}
	public int getSocre() {
		return socre;
	}
	public void setSocre(int socre) {
		this.socre = socre;
	}

	@Override
	public String toString() {
		String content = "Sid="+this.sid+"\t"+"Sname="+this.sname+"\t"+this.birth.toLocaleString();
		return content;
	}

}

Java中的调用信息

  1. @SuppressWarnings("unchecked")
  2. public static void main(String[] args) {
  3. List<Student> list = dao.dynamicGetStudent(studentDTO);
  4. for(Student student : list){
  5. System.out.println("name:"+student.getSname());
  6. }
  7. System.out.println("size:"+list.size());
  8. }
  9. @Override
  10. public List dynamicGetStudent(StudentDTO studentDTO) {
  11. List result = null;
  12. try {
  13. result = sqlMapClient.queryForList("dynamicGetStudent",studentDTO);
  14. } catch (SQLException e) {
  15. // TODO Auto-generated catch block
  16. e.printStackTrace();
  17. }
  18. return result;
  19. }
@SuppressWarnings("unchecked")
	public static void main(String[] args) {
		List<Student> list = dao.dynamicGetStudent(studentDTO);
		for(Student student : list){
			System.out.println("name:"+student.getSname());
		}
		System.out.println("size:"+list.size());
	}
@Override
	public List dynamicGetStudent(StudentDTO studentDTO) {
		List result = null;
		try {
			result = sqlMapClient.queryForList("dynamicGetStudent",studentDTO);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return result;
	}

动态查询中的常用属性:

属性关键字 含义
<isEqual> 如果参数相等于值则查询条件有效
<isNotEqual> 如果参数不等于值则查询条件有效
<isGreaterThan> 如果参数大于值则查询条件有效
<isGreaterEqual> 如果参数等于值则查询条件有效
<isLessEqual> 如果参数小于值则查询条件有效。如下所示:<isLessEqual prepend = ”AND” property = ”age” compareValue = ”18” >ADOLESCENT = ‘TRUE’</isLessEqual>
<isPropertyAvailable> 如果参数有使用则查询条件有效。
<isNotPropertyAvailable> 如果参数没有使用则查询条件有效
<isNull> 如果参数为NULL则查询条件有效
<isNotNull> 如果参数不为NULL则查询条件有效
<isEmpty> 如果参数为空则查询条件有效
<isNotEmpty> 如果参数不为空则查询条件有效
<isParameterPresent> 如果参数类不为NULL则查询条件有效
<isNotParameterPresent> Checks to see if the parameter object is not present (null). Example Usage

Ibatis动态(dynamic)查询的更多相关文章

  1. ibatis 动态列查询问题解决

      http://hi.baidu.com/java513/blog/item/ace7c516c400390d4a90a7c8.html   这个问题是因为你查询的sql的列是变化的,但是ibati ...

  2. ibatis动态查询条件

    ibatis的调试相对困难,出错的时候主要依据是log4生成的log文件和出错提示,这方面要能比较熟练的看懂. 下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回has ...

  3. ibatis 动态查询

    http://www.iteye.com/topic/393042最近做了很多动态的查询,尤其是排序,以及一些状态字段,所以就做了一个总的动态查询,以不变应万变,呵呵 ibatis 里面的sql代码: ...

  4. ibatis 中动态SQL查询和动态标签嵌套的使用

    ibatis 动态查询对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解 ...

  5. 记ibatis使用动态列查询问题(remapresults)

    今天在项目开发中,遇到了一个问题:使用ibatis 动态查询列时,每次返回的结果列都是第一次查询的结果列,然而控制台执行的SQL语句时包含该结果列的.比如: <select id="g ...

  6. 转:ibatis动态sql

    转:ibatis动态sql 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的 IF-ELSE条件语句和一连串 ...

  7. IBATIS动态SQL(转)

    直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的字符串连接.对于这个问题,I ...

  8. IBATIS动态SQL

    转自:http://www.cnblogs.com/phoebus0501/archive/2011/05/16/2048126.html 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值 ...

  9. IBATIS动态SQL(1)

    转:IBATIS动态SQL 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的 ...

随机推荐

  1. String放入运行时常量池的时机与String.intern()方法解惑

    运行时常量池概述 Java运行时常量池中主要存放两大类常量:字面量和符号引用.字面量比较接近于Java语言层面的常量概念,如文本字符串.声明为final的常量值等. 而符号引用则属于编译原理方面的概念 ...

  2. Spark技术内幕:Storage 模块整体架构

    Storage模块负责了Spark计算过程中所有的存储,包括基于Disk的和基于Memory的.用户在实际编程中,面对的是RDD,可以将RDD的数据通过调用org.apache.spark.rdd.R ...

  3. Linux下的一些常用命令(一)

    在Linux环境下敲各种命令是再正常不过了,尤其是现在大多少服务器均为Linux系统,但是我又记不住这么多命令,只是偶尔在项目做完发布到服务器上的时候会涉及到,所以在网上找了一些命令,在此记录一下~ ...

  4. Android学习路线指南

    看到这位大牛的博文,不禁得感概,我最近也遇到了很多问题,内心彷徨不堪,转载大牛这篇博文,是为了更好的勉励自己.原文地址在最后面. 前言 看到一篇文章中提到"最近几年国内的初级Android程 ...

  5. IE下的deflate模式

    浏览器有一个非常有用的特性:自动解压. 在使用AJAX请求数据的时候,数据在服务器端压缩传输,在浏览器端自动解压,请求直接得到解压后的结果. 在Request Header中,一般会列出浏览器支持的压 ...

  6. 学习TensorFlow,TensorBoard可视化网络结构和参数

    在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可 ...

  7. ExpandableListView简单应用及listview模拟ExpandableListView

    首先我们还是来看一些案例,还是拿搜狐新闻客户端,因为我天天上下班没事爱看这个东东,上班又没时间看新闻,上下班路途之余浏览下新闻打发时间嘛.           看这个效果挺棒吧,其实实现起来也不难,我 ...

  8. hive中使用case、if:一个region统计业务(hive条件函数case、if、COALESCE语法介绍:CONDITIONAL FUNCTIONS IN HIVE)

    前言:Hive ql自己设计总结 1,遇到复杂的查询情况,就分步处理.将一个复杂的逻辑,分成几个简单子步骤处理. 2,但能合在一起的,尽量和在一起的.比如同级别的多个concat函数合并一个selec ...

  9. HTTP 消息结构

    HTTP 消息结构 HTTP是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议. 一个HTTP"客户端"是一个应用程序(Web浏览 ...

  10. 【Unity Shaders】Reflecting Your World —— 在Unity3D中创建一个简单的动态Cubemap系统

    本系列主要参考<Unity Shaders and Effects Cookbook>一书(感谢原书作者),同时会加上一点个人理解或拓展. 这里是本书所有的插图.这里是本书所需的代码和资源 ...