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. Xcode8之后,苹果列出了最新App被拒十大原因

    开发者在开发应用程序之前,熟悉苹果审核应用的技术.内容以及设计准则是非常重要的,可以大大降低应用审核被拒的可能性. 最近,苹果通过一个专门的页面给出了截止2016年10月10日应用提交审核被拒的十大原 ...

  2. Struts1应用、实现简单计算器、使用DispatchAction、显示友好的报错信息、使用动态Form简化开发

    实现简单的支持加.减.乘.除的计算器 复制一份Struts1Demo修改:Struts1Calc 方案1: Struts1Calc 创建ActionForm: CalcForm extends Act ...

  3. UNIX网络编程——揭开网络编程常见API的面纱【上】

    Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...

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

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

  5. 如何优雅地退出python程序

    如何优雅地退出python程序 一个单模的python程序,启动之后要能够优雅地关闭.即当用户按Ctrl+C或者kill pid的时候,程序都能从容关闭.实现起来非常简单. is_running = ...

  6. Servlet概述-servlet学习之旅(一)

    Servlet概述 servlet是server+applet的缩写.applet是运行于客户端浏览器的java小程序,java诞生的时候,因为applet而闻名于世,但是现在已经没有多少热使用了,而 ...

  7. 无刷新更新listview

    闲来无事,写点水文吧!有用得着的可以参考下,无刷新更新listview是什么意思呢?举个例子,在订单类listview列表中,常常会有各种订单状态,拿商城类app来说,会有待付款,待收货,确认收货等等 ...

  8. SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式

           在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...

  9. Android优化之ArrayMap

    ArrayMap的介绍 官方对ArrayMap也有说明:它不是一个适应大数据的数据结构,相比传统的HashMap速度要慢,因为查找方法是二分法,并且当你删除或者添加数据时,会对空间重新调整,在使用大量 ...

  10. 【Unity技巧】自定义消息框(弹出框)

    写在前面 这一篇我个人认为还是很常用的,一开始也是实习的时候学到的,所以我觉得实习真的是一个快速学习工程技巧的途径. 提醒:这篇教程比较复杂,如果你不熟悉NGUI.iTween.C#的回调函数机制,那 ...