MyBatis

以下数据库为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'










 



你可能感兴趣的:(MyBatis)