iBatis 3.x 动态SQL元素之实现
在iBatis 2.x中,可以使用$xxxx$语法在SQL中定义可动态插入的SQL元素。而在iBatis 3.x中已经发生了很大变化。
首先,语法变为 ${xxxx} 形式;
其实,你要使用的SQL元素必须是一个Java Bean的属性,也说是输入参数必须为Java Bean;在说明文档中也没有说明如何直接使用一个String类型的输入参数。
于是,我用DEBUG分析了iBatis 3.x的代码,发现还是有办法使用单个String类型的输入参数,但是你的动态SQL元素必须定义为${_parameter}。比如:
<select id="getRecordCount" parameterType="string" resultType="int">
select count(*) as recordNumber from (${_parameter}) t1
</select>
注:上面的${_parameter}不可修改为其它文字
相关文档:
MySQL:
SELECT column from table
ORDER BY RAND()
LIMIT 1
PostgreSQL:
SELECT column from table
ORDER BY RANDOM()
LIMIT 1
Microsoft SQL Server:
SELECT TOP 1 column from table
ORDER BY NEWID()
IBM DB2
SELECT column, RAND() as IDX
from table
ORDER BY IDX FETCH FIRST 1 ROWS ONLY
Thanks Ti ......
-- FUN:存储过程分页
-- @Table nvarchar(255), -- 表名
-- @Fields nvarchar(1000) = ' * ', -- 需要返回的列
-- @OrderField nvarchar(255), -- 排序的字段名,一般为唯一标识
-- @OrderType bit = 0, -- 设置排序类型, 非 0 值则降序
-- @PageSize int = 10, -- 每页有多少条记录
-- @PageIndex int = 1, -- 第 ......
SQL宝典
SQL必知必会第三版
SQL入门经典第四版
Sams Teach Yourself SQL in 10 Minutes Third Edition
SQL The Complete Reference
......
一:Select语句:
select 字段名 from 表名 where 条件 order by 排序
see:select distinct 从多个相同字段中抓唯一值
see:查找ld_det_andy表中有数据但ld_det_temp表中没数据的数据
select * from ld_det_a ......