Ibatis动态(dynamic)查询
Ibatis的动态查询使得数据操作变得非常的灵活,下次举出了常用的动态查询的属性信息:
Ibatis配置信息
- <!-- 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>
<!-- 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的信息
- 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;
- }
- }
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的信息
- 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;
- }
- }
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中的调用信息
- @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;
- }
@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)查询的更多相关文章
- ibatis 动态列查询问题解决
http://hi.baidu.com/java513/blog/item/ace7c516c400390d4a90a7c8.html 这个问题是因为你查询的sql的列是变化的,但是ibati ...
- ibatis动态查询条件
ibatis的调试相对困难,出错的时候主要依据是log4生成的log文件和出错提示,这方面要能比较熟练的看懂. 下面这个配置基本上包含了最复杂的功能:分页\搜索\排序\缓存\传值Hash表\返回has ...
- ibatis 动态查询
http://www.iteye.com/topic/393042最近做了很多动态的查询,尤其是排序,以及一些状态字段,所以就做了一个总的动态查询,以不变应万变,呵呵 ibatis 里面的sql代码: ...
- ibatis 中动态SQL查询和动态标签嵌套的使用
ibatis 动态查询对于从事 Java EE 的开发人员来说,iBatis 是一个再熟悉不过的持久层框架了,在 Hibernate.JPA 这样的一站式对象 / 关系映射(O/R Mapping)解 ...
- 记ibatis使用动态列查询问题(remapresults)
今天在项目开发中,遇到了一个问题:使用ibatis 动态查询列时,每次返回的结果列都是第一次查询的结果列,然而控制台执行的SQL语句时包含该结果列的.比如: <select id="g ...
- 转:ibatis动态sql
转:ibatis动态sql 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的 IF-ELSE条件语句和一连串 ...
- IBATIS动态SQL(转)
直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的字符串连接.对于这个问题,I ...
- IBATIS动态SQL
转自:http://www.cnblogs.com/phoebus0501/archive/2011/05/16/2048126.html 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值 ...
- IBATIS动态SQL(1)
转:IBATIS动态SQL 直接使用JDBC一个非常普遍的问题就是动态SQL.使用参数值.参数本身和数据列都是动态SQL,通常是非常困难的.典型的解决办法就是用上一堆的IF-ELSE条件语句和一连串的 ...
随机推荐
- Xcode8之后,苹果列出了最新App被拒十大原因
开发者在开发应用程序之前,熟悉苹果审核应用的技术.内容以及设计准则是非常重要的,可以大大降低应用审核被拒的可能性. 最近,苹果通过一个专门的页面给出了截止2016年10月10日应用提交审核被拒的十大原 ...
- Struts1应用、实现简单计算器、使用DispatchAction、显示友好的报错信息、使用动态Form简化开发
实现简单的支持加.减.乘.除的计算器 复制一份Struts1Demo修改:Struts1Calc 方案1: Struts1Calc 创建ActionForm: CalcForm extends Act ...
- UNIX网络编程——揭开网络编程常见API的面纱【上】
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...
- 学习TensorFlow,TensorBoard可视化网络结构和参数
在学习深度网络框架的过程中,我们发现一个问题,就是如何输出各层网络参数,用于更好地理解,调试和优化网络?针对这个问题,TensorFlow开发了一个特别有用的可视化工具包:TensorBoard,既可 ...
- 如何优雅地退出python程序
如何优雅地退出python程序 一个单模的python程序,启动之后要能够优雅地关闭.即当用户按Ctrl+C或者kill pid的时候,程序都能从容关闭.实现起来非常简单. is_running = ...
- Servlet概述-servlet学习之旅(一)
Servlet概述 servlet是server+applet的缩写.applet是运行于客户端浏览器的java小程序,java诞生的时候,因为applet而闻名于世,但是现在已经没有多少热使用了,而 ...
- 无刷新更新listview
闲来无事,写点水文吧!有用得着的可以参考下,无刷新更新listview是什么意思呢?举个例子,在订单类listview列表中,常常会有各种订单状态,拿商城类app来说,会有待付款,待收货,确认收货等等 ...
- SSH深度历险(八) 剖析SSH核心原理+Spring依赖注入的三种方式
在java开发中,程序员在某个类中需要依赖其它类的方法,则通常是new一个依赖类再调用类实例的方法,这种开发存在的问题是new的类实例不好统一管理,spring提出了依赖注入的思想,即依 ...
- Android优化之ArrayMap
ArrayMap的介绍 官方对ArrayMap也有说明:它不是一个适应大数据的数据结构,相比传统的HashMap速度要慢,因为查找方法是二分法,并且当你删除或者添加数据时,会对空间重新调整,在使用大量 ...
- 【Unity技巧】自定义消息框(弹出框)
写在前面 这一篇我个人认为还是很常用的,一开始也是实习的时候学到的,所以我觉得实习真的是一个快速学习工程技巧的途径. 提醒:这篇教程比较复杂,如果你不熟悉NGUI.iTween.C#的回调函数机制,那 ...