我又来提问了,ibatis中数据库查询语句的书写问题

问题描述

我写了一个查询语句: SELECT * FROM (SELECT a.*, ROWNUM rn FROM (SELECT * FROM tf_tr_specification where <isNotEmpty property="TechSpecification.speci_no" > speci_no=#TechSpecification.speci_no# </isNotEmpty> <isNotEmpty property="TechSpecification.speci_name" prepend="AND"> speci_name=#TechSpecification.speci_name# </isNotEmpty> <isNotEmpty property="TechSpecification.speci_name" prepend="AND"> speci_name=#TechSpecification.speci_name# </isNotEmpty> <isNotEmpty property="TechSpecification.issue_date" prepend="AND"> ( BETWEEN issue_date=TO_DATE(#TechSpecification.issue_date#, 'YYYY-MM-DD') </isNotEmpty> <isNotEmpty property="TechSpecification.issue_date1" prepend="AND"> issue_date=TO_DATE(#TechSpecification.issue_date1#, 'YYYY-MM-DD') ) </isNotEmpty> <isNotEmpty property="TechSpecification.revise_date" prepend="AND"> (BETWEEN revise_date=TO_DATE(#TechSpecification.revise_date#, 'YYYY-MM-DD') </isNotEmpty> <isNotEmpty property="TechSpecification.revise_date1" prepend="AND"> revise_date2=TO_DATE(#TechSpecification.revise_date1# , 'YYYY-MM-DD') ) </isNotEmpty> ) a) WHERE rn BETWEEN (#Pagination.currentPage#-1)*#Pagination.PAGE_SIZE# AND (#Pagination.currentPage#)*#Pagination.PAGE_SIZE# </select> 但是现在如果第一条查询的那个条件不存在的话,后面每一个都会在前面加一个AND,数据库查询语句就会报错,而且where也不知道加在哪里,这个要怎么处理呢?

解决方案

加入<dynamic> 标签:where 1=1 <dynamic prepend="and"> <isNotEmpty prepand="and" property="TechSpecification.speci_no" > .....</dynamic>
解决方案二:
最好的解决方案就是用dynamic标签,这是ibatis对动态sql的很不错的一个支持。其次单纯的解决第一个查询不存在后面条件多个and可以用where 1=1

时间: 2024-10-25 14:33:18

我又来提问了,ibatis中数据库查询语句的书写问题的相关文章

php5-新手提问:php中数据库查询语句错误$mysqli-&amp;amp;gt;query()有错怎么回事?

问题描述 新手提问:php中数据库查询语句错误$mysqli->query()有错怎么回事? 问的东西在这 解决方案 sql语句直接数据库中查询有没有问题. 一般是sql语法错误 解决方案二: 能帮我看看吗?我找不出sql语法错误 解决方案三: 你的SQL语句连接的时候注意空格,检查一下where和and这两处前面有没有空格. 另外最后用参数化查询,既可以防止注入攻击,也更直观,还提高效率. 解决方案四: 你的SQL语句连接的时候注意空格,检查一下where和and这两处前面有没有空格. 另外最

jdbc查询数据库的方法-jdbc中数据库查询我的那个方法更好?有更好的办法吗?求大神指点

问题描述 jdbc中数据库查询我的那个方法更好?有更好的办法吗?求大神指点 /* 查询数据库表t1中的数据/public void select() { //连接数据库 getDBCconnect(); try { //sql语句 String sql=""select * from t1 where id=1""; //创建要执行sql语句的对象 sta= con.createStatement(); //执行sql语句并将得到的结果放到结果集中 ResultSe

c#-C#中数据库查询过于复杂

问题描述 C#中数据库查询过于复杂 WorkPieceDataDA.Update(ds, "WorkPieceData"); 解决方案 打语句不是更快.sqlcommand 解决方案二: 你可以自己封装一个参数更少的方法........ 解决方案三: 不知道什么,细节太少了 解决方案四: 不知道什么,信息不全,或者我还需要修炼.

SQL邮件自动应答(根据收到的邮件中的查询语句回复语句执行结果)

语句|执行 SQLMail可以收发邮件,可能好多人都有xp_sendmail发送过邮件,这里介绍一种邮件服务器接收邮件后,根据邮件内容(只能是查询语句)把邮件中的查询语句执行后的结果以附件形式自动返回给发送邮件者. eg: 发送邮件,邮件内容为: select top 10 id,name from sysobjects则服务器自动回复邮件,内容为上述查询语句的执行结果,以附件形式发送. 1:当然是先配置好SQL邮件服务了,这方面的资料比较多,此处不赘述. 2: 把sp_processmail稍

oracle中sql查询语句,求助

问题描述 oracle中sql查询语句,求助 比如有两张表 用户表User {id name }成绩表Score {id userid coursename courseScore}现在怎么查找每个用户的最高成绩 解决方案 select distinct u.idu.names.courseScore from User as uinner join ( select max(courseScore) as courseScore userid from Scoregroup by userid

PHP中SQL查询语句的id=%d解释(推荐)_php实例

在SQL语句中有一些写的是这样的: 'SELECT id FROM dbname WHERE xx_id = %d;', $bl['student_id'] 其中的"xx_id = %d",这里的%d指的是要取一个十进制的数(d的意思就是decimal十进制的意思),十进制数的内容就是后面的$bl['student_id']这个. 以上所述是小编给大家介绍的PHP中SQL查询语句的id=%d解释,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的! 以上是小编为您

PHP中SQL查询语句的id=%d解释(推荐)

在SQL语句中有一些写的是这样的: 'SELECT id FROM dbname WHERE xx_id = %d;', $bl['student_id'] 其中的"xx_id = %d",这里的%d指的是要取一个十进制的数(d的意思就是decimal十进制的意思),十进制数的内容就是后面的$bl['student_id']这个. 以上所述是小编给大家介绍的PHP中SQL查询语句的id=%d解释,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

海量数据库查询语句_MsSql

以下代码说明了我们实例中数据库的"红头文件"一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名   [Gid] [int] IDENTITY (1, 1) NOT NULL ,--本表的id号,也是主键   [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件的标题   [fariqi] [datetime] NULL ,--发布日期  

通用SQL数据库查询语句精华使用简介

精华|数据|数据库|语句 一. 简单查询 简单的Transact-SQL查询只包括选择列表.FROM子句和WHERE子句.它们分别说明所查询列.查询的表或视图.以及搜索条件等. 例如,下面的语句查询testtable表中姓名为"张三"的nickname字段和email字段. SELECT nickname,email FROM testtable WHERE name='张三'  (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表.星号.表达式.变量