迁移时间:2017年6月1日15:55:17
Author:Marydon
(四)IBATIS + ORACLE
第一部分:基础篇
1.4.1.1 分页SQL
SELECT * FROM (
=#START# ]]>
1.4.1.2 $column$
执行sql语句时,控制台输出的语句,在该位置不会以问号的形式出现,而是直接填充其对应的值
1.4.1.3 日期类比较大小
= TO_DATE(#BEGINDATE#,'yyyy-MM-dd') ]]>
1.4.1.4 从Oracle服务器获取当前系统日期
dao层配置
/** * 获取Oracle服务器时间 * @return 系统当前时间 */public String getSYSDATE() throws DaoException {try { return (String)sqlMapClient.queryForObject("telemedicine.service.bo.remoteCons.schedule.getSYSDATE"); } catch (SQLException e) { String err = "查询系统当前时间出错->出错原因:" + e.getMessage(); log.error(err, e); throw new DaoException(err, e); }}
1.4.1.5 增加
方式一:主键使用序列生成
SELECT STSORGDIAITEM.NEXTVAL AS FID FROM DUAL INSERT INTO TSORGDIAITEM(FID, FORGID, FITEMCODE, FITEMTYPE, FCURCODE, FCENCODE, FITEMNAME, FZJM, FITEMSPEC, FUNIT, FPRICE) VALUES(#FID :NUMERIC#, #FORGID :NUMERIC#, UPPER(#FITEMCODE :VARCHAR#), #FITEMTYPE :NUMERIC#, #FCURCODE :VARCHAR#, #FCENCODE :VARCHAR#, UPPER(#FITEMNAME :VARCHAR#), UPPER(#FZJM :VARCHAR#), #FITEMSPEC :VARCHAR#, #FUNIT :VARCHAR#, #FPRICE :NUMERIC#)
select sys_guid() as id from dual INSERT INTO CONSULT_DEPENT_DOCTOR_INFO(DEPENT_DOCTOR_INFO_ID,CONSULT_APPLY_ID,CONSULT_DEPENT_ID,CONSULT_DEPENT,CONSULT_DOCTOR_ID,CONSULT_DOCTOR,DOCTOR_PHONE) VALUES(#id#,#CONSULT_APPLY_ID#,#CONSULT_DEPENT_ID#,#CONSULT_DEPENT#,#CONSULT_DOCTOR_ID#,#CONSULT_DOCTOR#,#DOCTOR_PHONE#)
注意:
a.selectKey标签的keyProperty属性:查询出来的结果会被放到这个字段里面;必须指明返回的数据类型:resultClass;select ... 别名 from dual 别名可以任意取;
b.执行插入语句后,默认返回的是主键。
1.4.1.6 WHERE条件 1.4.1.7 更新
T.FORGID = #FORGID# (UPPER(T.FICDCODE) LIKE UPPER(#FICDCODE# || '%') OR T.FICDCODE LIKE #FICDCODE# || '%') T.FCENCODE IS NULL T.FITEMNAME !=T1.FITEMNAME T.FRCODE = '$FRCODE$'
方式一 方式二
UPDATE TSORGDIAITEM SET FID=#FID:NUMERIC#, FORGID=#FORGID:NUMERIC#, FITEMCODE=#FITEMCODE:VARCHAR#, FITEMTYPE=#FITEMTYPE:NUMERIC#, FCURCODE=#FCURCODE:VARCHAR#, FCENCODE=#FCENCODE:VARCHAR#, FITEMNAME=#FITEMNAME:VARCHAR#, FZJM=#FZJM:VARCHAR#, FITEMSPEC=#FITEMSPEC:VARCHAR#, WHERE FID =#FID#
UPDATE CONSULT_SCHEDULE SET ORG_CODE = #ORG_CODE#, DEPENT_ID = #DEPENT_ID#, DEPENT_NAME = #DEPENT_NAME#, DOCTOR_ID = #DOCTOR_ID#, DOCTOR_NAME = #DOCTOR_NAME#, DOCTOR_PHONE = #DOCTOR_PHONE#, SCHEDULE_DATE = TO_DATE(#SCHEDULE_DATE#,'YYYY-MM-DD'), WEEK_TXT = #WEEK_TXT#, WB_TYPE = #WB_TYPE#, CLOSE_TZ = #CLOSE_TZ#, REPLACE_TZ = #REPLACE_TZ#, DOCTOR_ID_TZ = #DOCTOR_ID_TZ#, DOCTOR_NAME_TZ = #DOCTOR_NAME_TZ#, REMARK = #REMARK# WHERE CONSULT_SCHEDULE_ID = #CONSULT_SCHEDULE_ID#
UpdateTime--2017年8月8日09:30:01
UPDATE TDOCTORORG WHERE FID = #FID# FDOCTORCODE = #FDOCTORCODE# FDOCTORCODE_CENTER = #FDOCTORCODE_CENTER# FDOCTORNAME = #FDOCTORNAME# FZJM = #FZJM# FDEPTCODE = #FDEPTCODE# FDOCTORPHONE = #FDOCTORPHONE# FJOBTITLE = #FJOBTITLE# FREMARK = #FREMARK#
这种动态修改字段的方式需要注意的是:要修改的字段是否允许为空,如果允许用isNotNull;不允许用isNotEmpty
1.4.1.8 删除
方式一 方式二 1.4.1.9 计数 1.4.1.10 分页查询
DELETE FROM TDICTICDCODE FICDCODE=#FICDCODE# FICDNAME=#FICDNAME# FZJM=#FZJM# FCLASSID=#FCLASSID#
DELETE FROM TSORGDIAITEM T WHERE 1=1
注意:
a.增,删,改这3个操作无需指明返回的数据类型,执行SQL语句,会默认返回影响行数:Integer;
b.如果将Map作为查询的返回数据类型,必须指定resultClass="java.util.HashMap"。