网络上有大量的关于ibatis动态查询的语句,本人在此不再狗尾续貂。只说下让我印象很深刻的,其实是走了很大弯路的一个语句。
问题是这样的:
,B为字典表
其中A.type 就是B.Id,现在页面需要这样的展示内容:A.content 、A.type(实际是B.name)
这样的展示页面有两个入口:
1、正常的展示页面 sql语句
- select
- 字段
- from
- 表
- where
- A.type = B.id
:
2、高级搜索展示 sql语句:
- select
- 字段
- from
- 表
- where
- A.type = B.id
- and
- A.type = ?
- and
- A.name like '%?%'
当做动态查询的时候sql语句是这样写的:
- select
- 字段
- from
- 表
- <dynamic prepend="where">
- <isNotNull prepend="and" property="type">
- type = #type#
- </isNotNull>
- <isNotNull prepend="and" property="name">
- name like '%$name$%'
- </isNotNull>
- and
- A.type = B.id
-
- </dynamic>
-
期间都是更改过几次但是在条件1或者是条件2的情况下总是会出现问题。郁闷啊! A.type = B.id 可是必须填写的啊。中间还用过1=1等超级变态的用法,还是不好用。
解决后的sql语句:
- select
- 字段
- from
- 表
- where
- A.type = B.id
- <dynamic prepend="and" open="(" close=")">
- <isNotNull prepend="and" property="type">
- type = #type#
- </isNotNull>
- <isNotNull prepend="and" property="name">
- name like '%$name$%'
- </isNotNull>
- </dynamic>
open和close的作用就是把动态语句和A.type = B.id分开,实际执行的sql如下:
select 字段 form 表 where A.type = B.id and ( type = ? and name like "%参数%" )。
知识很浅,不要见笑,以资鼓励,聊以共勉!
分享到:
相关推荐
IBATIS动态查询语句.doc
Ibatis复杂查询语句.doc
iBatis最全的动态SQL语句,你需要的都有,资源在于大家共享
Ibatis查询语句里,可以使用多表查询,返回多个表的值.doc
ibatis常用的sql语句,很全的一篇文档。。。
ibatis常用sql语句,简单易懂,方便查询,初学者宝典
NULL 博文链接:https://raymondwang1314.iteye.com/blog/1195820
这个文件中包含了许多ibatis的查询语句,能够让你很清楚的知道,如何实现动态的查询。
ibatis_动态查询条件详解及需要注意的地方
ibatis中使用安全的拼接语句,动态查询,大于、小于、等于.doc
ibatis查询语句配对.doc
在ibatis日志信息中打印SQL语句的方法(个人总结)
ibatis动态多条件组合查询 实例 说明
ibatis16个常用sql语句
WAS上log4j日志不能输出(ibatis)sql语句解决办法[借鉴].pdf
ibatis sql 语句的编写 ,包括增删改查,很简单 很实用 ,对初学者是很好的选择
NULL 博文链接:https://yhq1212.iteye.com/blog/1772214
Ibatis多表查询
自己整理的非常好用 好东西向大家分享 └ ^o^ ┘
操作数据库 iBATIS查询,java 和spring的配置方法