`
小杨学JAVA
  • 浏览: 904091 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

关于ibatis动态查询的语句(转载)

 
阅读更多

  网络上有大量的关于ibatis动态查询的语句,本人在此不再狗尾续貂。只说下让我印象很深刻的,其实是走了很大弯路的一个语句。

问题是这样的:

  1. A  表:  
  2.   id  
  3.   content  
  4.   type  
  1. B 表  
  2.   
  3.   id,  
  4.   name  
,B为字典表

 

其中A.type 就是B.Id,现在页面需要这样的展示内容:A.content 、A.type(实际是B.name)

这样的展示页面有两个入口:

1、正常的展示页面  sql语句

  1. select  
  2.       字段  
  3.   from    
  4.       表  
  5.   where   
  6.      A.type = B.id  

 

2、高级搜索展示  sql语句:

  1. select  
  2.       字段  
  3.   from    
  4.       表  
  5.   where   
  6.       A.type = B.id  
  7.     and  
  8.       A.type = ?  
  9.     and  
  10.       A.name like '%?%'  

 

 

当做动态查询的时候sql语句是这样写的:

  1. select  
  2.        字段  
  3.    from    
  4.        表  
  5.    <dynamic prepend="where">  
  6.      <isNotNull prepend="and" property="type">  
  7.         type = #type#  
  8.      </isNotNull>  
  9.       <isNotNull prepend="and" property="name">  
  10.         name like '%$name$%'  
  11.      </isNotNull>  
  12.      and  
  13.         A.type = B.id  
  14.   
  15.   </dynamic>  
  16.     

 

期间都是更改过几次但是在条件1或者是条件2的情况下总是会出现问题。郁闷啊!  A.type = B.id  可是必须填写的啊。中间还用过1=1等超级变态的用法,还是不好用。

 

 

解决后的sql语句:

  1. select  
  2.        字段  
  3.    from    
  4.        表  
  5.    where  
  6.      A.type = B.id  
  7.    <dynamic prepend="and" open="(" close=")">  
  8.      <isNotNull prepend="and" property="type">  
  9.         type = #type#  
  10.      </isNotNull>  
  11.       <isNotNull prepend="and" property="name">  
  12.         name like '%$name$%'  
  13.      </isNotNull>  
  14.    </dynamic>  

 

open和close的作用就是把动态语句和A.type = B.id分开,实际执行的sql如下:

select  字段  form 表 where   A.type = B.id  and (  type = ? and  name  like  "%参数%" )。

知识很浅,不要见笑,以资鼓励,聊以共勉!

分享到:
评论

相关推荐

    IBATIS动态查询语句.doc

    本文将深入探讨IBATIS动态查询语句的运用,解析其背后的逻辑与机制,以及如何利用这些特性来增强查询的灵活性与安全性。 ### IBATIS动态查询基础 IBATIS,现在更广为人知的名字为MyBatis,是一种半自动映射的持久...

    Ibatis复杂查询语句.doc

    总结起来,这个Ibatis查询语句充分展示了Ibatis处理复杂查询的能力,包括动态SQL、子查询、多表联接、条件判断、数据类型映射和迭代处理等功能。在实际开发中,这种灵活性使得Ibatis能够适应各种复杂的业务场景,...

    动态ibatis查询语句配置

    动态查询语句配置是Ibatis的一个重要特性,它允许我们在运行时根据业务需求构建灵活多变的SQL语句。这篇博文主要探讨的是如何在Ibatis中设置和使用动态SQL,以便实现更高效、更灵活的数据查询。 首先,我们需要理解...

    iBatis的动态SQL语句

    ### iBatis中的动态SQL语句详解 #### 引言 在进行数据库操作时,我们经常需要根据不同的条件构建不同的SQL语句。这种需求在实际开发中极为常见,尤其是在处理复杂的查询逻辑时。iBatis(现在通常被称为MyBatis)...

    ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc

    iBatis 中使用安全的拼接语句、动态查询、大于、小于、等于 iBatis 是一个流行的持久层框架,提供了许多强大的功能来帮助开发者构建高效、安全的数据库交互应用程序。本文将详细介绍 iBatis 中使用安全的拼接语句、...

    Ibatis常用sql语句

    此查询语句用于统计`MemberAccessLog`表中某成员在指定时间段内的各个动作的执行次数。`#memberId#`, `#start#`, `#end#`均为动态参数,分别代表成员ID和时间范围的开始与结束。 #### 4. 批量更新状态:批量更新...

    ibatis_动态查询条件

    iBatis 是一个基于 Java 的持久层框架,它提供了动态查询条件的功能,可以根据不同的条件生成不同的 SQL 语句。在 iBatis 中,动态查询条件是通过 `&lt;dynamic&gt;` 元素来实现的,该元素可以根据参数的值来生成不同的 ...

    Ibatis查询语句里,可以使用多表查询

    iBatis 支持在查询语句中进行多表查询,并能够将结果映射到相应的 Java 对象上。多表查询通常涉及到 JOIN 操作,例如内连接(INNER JOIN)、左连接(LEFT JOIN)等,这些操作可以帮助我们从多个相关联的表中获取所需...

    ibatis常用sql语句

    通过`&lt;select&gt;`标签,可以构建带有动态条件的SQL查询语句。`HashMap`的键值对可以用作查询条件,如`#memberId#`和`#start#`、`#end#`,分别代表成员ID和时间范围。这样的设计允许开发人员根据不同的业务需求灵活构建...

    ibatis动态SQL标签用法

    iBatis是Java持久层框架,提供了动态SQL标签来实现动态查询。动态SQL标签可以根据不同的条件生成不同的SQL语句,从而提高查询效率和灵活性。 动态SQL片段 iBatis提供了动态SQL片段的功能,可以将SQL语句拆分成小的...

    ibatis16个常用sql语句

    iBatis 16个常用SQL语句 iBatis是一个基于Java的持久层框架,提供了一个简洁的方式来访问和操作数据库。在iBatis中,SQL语句是...iBatis提供了一个灵活的方式来配置SQL语句,支持各种类型的输入参数和复杂的查询语句。

    在ibatis日志信息中打印SQL语句的方法(个人总结)

    在使用iBatis(现为MyBatis)作为持久层框架进行开发时,有时我们需要调试SQL语句,以便查看执行的SQL、优化性能或者解决查询问题。本文将详细讲解如何在iBatis日志信息中打印SQL语句,以便更好地理解和优化数据库...

    ibatis的动态查询

    ### ibatis的动态查询知识点详解 #### 一、模糊查询 **知识点1:** 在进行模糊查询时,ibatis支持两种不同的语法标记:`#` 和 `$`。 1. **使用 `$value$` 进行模糊查询:** - 在进行模糊查询时,使用 `$value$` ...

    iBatis执行非查询语句(CRUD,函数和过程)

    这篇博客“iBatis执行非查询语句(CRUD,函数和过程)”深入探讨了如何在iBatis中执行创建、读取、更新和删除(CRUD)操作,以及调用数据库存储过程和函数。 一、iBatis简介 iBatis最初由MyBatis的创始人Clinton ...

    ibatis动态多条件组合查询

    ibatis动态多条件组合查询 实例 说明

    ibatis查询语句配对.doc

    ### ibatis查询语句配对知识点详解 #### 一、ibatis简介 ibatis(现称为MyBatis)是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。ibatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。...

    ibatis UPDATE 动态XML与insert

    标题 "ibatis UPDATE 动态XML与insert" 涉及到的是MyBatis框架中对数据库数据进行更新(UPDATE)和插入(INSERT)操作的动态XML配置方式。MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射,...

    iBatis条件查询

    开发者可以在SQL Map中定义一个模板SQL,然后在Java代码中传入参数,iBatis会自动替换SQL中的占位符,生成实际的查询语句。这种方式既避免了硬编码SQL,又保持了SQL的灵活性。 例如,对于一个简单的用户查询场景,...

    WAS上log4j日志不能输出(ibatis)sql语句解决办法[借鉴].pdf

    WAS 上 log4j 日志不能输出(ibatis)sql 语句解决办法 在部署到 WAS 服务器上的 CMSII 系统中,ibatis 的 sql 语句不能输出日志的问题。解决该问题需要改变 WAS 的默认 LogFactory 实现类,使其使用 log4j 框架下...

    Ibatis查询Id列表.doc

    通过上述分析可以看出,文档中的内容主要是关于如何在Ibatis中构建动态SQL语句以查询特定条件下的ID列表。这些技巧对于提高数据库查询的灵活性和效率非常重要。开发者可以根据具体的业务需求调整各个动态SQL元素中的...

Global site tag (gtag.js) - Google Analytics