Ibatis动态(dynamic)查询

简介: Ibatis的动态查询使得数据操作变得非常的灵活,下次举出了常用的动态查询的属性信息: Ibatis配置信息 Xml代码  <!-- Dynamic Sql -->    <typeAlias alias="Student" type="com.ibatis.Student" />      <typeAlias alias="StudentDTO

Ibatis的动态查询使得数据操作变得非常的灵活,下次举出了常用的动态查询的属性信息:
Ibatis配置信息
Xml代码 复制代码  收藏代码
  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.               
  13.             <isNotNull prepend="AND" property="sname">  
  14.                 sname = #sname#  
  15.             </isNotNull>  
  16.         </dynamic>  
  17.         <dynamic prepend="order by">  
  18.             <isParameterPresent>  
  19.                 <isEqual prepend="order by" property="sort" compareValue="1">  
  20.                     sname desc,socre  
  21.                 </isEqual>  
  22.                   
  23.                 <isEqual prepend="order by" property="sort" compareValue="2">  
  24.                     sname asc,socre  
  25.                 </isEqual>  
  26.             </isParameterPresent>  
  27.         </dynamic>  
  28.     </select>  

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

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

Java中的调用信息
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.     }  

动态查询中的常用属性:
属性关键字 含义
<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
目录
相关文章
|
27天前
|
前端开发 UED
next/dynamic的动态导入
next/dynamic的动态导入
|
5月前
|
SQL
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
自定义SQL,可以利用MyBatisPlus的Wrapper来构建复杂的Where条件,如何自定义SQL呢?利用MyBatisPlus的Wrapper来构建Wh,在mapper方法参数中用Param注
|
7月前
|
SQL 缓存
IBATIS别名SELECT(缓存字段)引起的问题(动态sql)
IBATIS别名SELECT(缓存字段)引起的问题(动态sql)
|
7月前
|
SQL Java 数据库连接
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
Java【付诸实践 01】使用org.apache.ibatis.plugin.Interceptor拦截器实现全局mapper.xml参数注入(可用于切换数据库实例schema)源码实例分享
172 0
|
7月前
|
SQL 关系型数据库 数据库连接
Hasor【环境搭建 03】Dataway接口配置服务使用DataQL聚合查询引擎(SQL执行器实现分页查询举例说明+报错 Query dialect missing 原因分析及解决)
Hasor【环境搭建 03】Dataway接口配置服务使用DataQL聚合查询引擎(SQL执行器实现分页查询举例说明+报错 Query dialect missing 原因分析及解决)
152 0
|
XML Java 数据库连接
MyBatis参数映射问题解决教程: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 wit
MyBatis参数映射问题解决教程: org.apache.ibatis.type.TypeException: Error setting non null for parameter #1 wit
969 1
|
JSON Java API
Elasticsearch Dynamic Mapping(动态映射机制)
Elasticsearch Dynamic Mapping(动态映射机制)
Elasticsearch Dynamic Mapping(动态映射机制)
|
JSON druid Java
Apache Druid自定义扩展模块-数据解析器
一.简述 Apache Druid已有的扩展模块很多包括:HDFS存储使用的druid-hdfs-storage,Kafka数据接入使用的druid-kafka-indexing-service,将MySQL做为元数据库使用的mysql-metadata-storage,数据排重使用的druid-datasketches;但有时这些也无法满足我们实际应用场景下的特殊需求,那么必要的二次开发增加自定义的模块就成了必然。
5448 0