以下数据库为Oracle
>控制分页:
select * from( select t.*,ROW_NUMBER() over(order by t.last_update desc) as num from SYS_ROLE_T t where 1=1 <if test="role_name!=null and role_name!=''"> and role_name like '%'||#{role_name}||'%' //模糊查找 </if> order by t.last_update desc //与上面的排序要一致 )Tab where Tab.num BETWEEN (#{first}) AND (#{end})
>传入array:
<select id="getCompanyTotal" parameterType="map" resultType="long"> select Count(*) from SYS_ROLE_T t where 1=1 and company_id in <foreach item="item" index="index" collection="ids" //ids是数组名,item表示遍历数组时的每个值 open="(" separator="," close=")">#{item} </foreach> <if test="role_name!=null and role_name!=''"> and role_name like '%'||#{role_name}||'%' </if> </select>>传入list并且级联查询:
<select id="findGroup" parameterType="list" resultType="map"> select organization_id as id,organization_name as text,parent_organization_id from SYS_GROUP_ORGANIZATION_T start with organization_id in <foreach item="item" index="index" collection="list" //list是传入的列表名,item表示遍历列表时的每个对象 open="(" separator="," close=")">#{item.organization_id} </foreach> connect by parent_organization_id = prior organization_id and enable='1' </select>>插入时返回id:
<insert id="addBaseForm" parameterType="com.sg.syj.bussiness.inspect.po.InspectBasePo"> <selectKey resultType="Int" order="BEFORE" keyProperty="inspect_id"> select SEQ_BUS_INSPECT_MODEL.nextval as inspect_id from DUAL </selectKey> INSERT INTO BUS_INSPECT_MODEL ( INSPECT_ID, INSPECT_NAME, INSPECT_YEAR, CREATE_DATE, ENABLE ) VALUES ( #{inspect_id,jdbcType=Integer},//主键,值为上面返回的 #{inspect_name,jdbcType=VARCHAR},//字符串类型 TO_DATE(#{inspect_year,jdbcType=VARCHAR}||' 00:00:00', 'YYYY-MM-DD HH24:MI:SS'),//||为连接符 sysdate, //系统时间 #{enable,jdbcType=CHAR} //char类型 ) </insert>
>union连接完成之前不能排序, 只能连接后总的排序
>自定义函数
//获取检查组成员 CREATE OR REPLACE function get_users( taskId in number ) return varchar2 is inspectors varchar2(200); begin SELECT wm_concat(T2.REAL_NAME) INTO inspectors FROM BUS_TASK_ENTERPRISE_USER T1 LEFT JOIN SYS_USER_T T2 ON T1.USER_ID = T2.USER_ID AND T1.TASK_ID = taskId; return inspectors; end get_users;查询时应用:
select T1.*,get_users(301) inspectors from BUS_TASK T1 WHERE T1.TASK_ID=301
>to_date
SELECT * FROM SG_ZF_TASK WHERE SYSDATE>TO_DATE(ENDDATE||' 23:59:59', 'yyyy-MM-dd HH24:MI:ss')> 小于号大于号需要转义,日期可以直接加减
UPDATE SG_ZF_BLACKLIST SET STATUS = '2' WHERE STATUS = '1' AND CREATE_DATE <![CDATA[<]]> (SYSDATE-15)>树形结构查询(父子关系)
select resource_id,resource_name,resource_parent_id from SYS_RESOURCE_T start with resource_id = 0 connect by resource_parent_id = prior resource_id and enable='1'