mybatis 官网教程
http://www.mybatis.org/mybatis-3/zh/dynamic-sql.html
出现
Could not set parameters for mapping: ParameterMapping{property='ROOM_ID', mode=IN, javaType=class java.lang.Integer, jdbcType=null, numericScale=null, resultMapId='null', jdbcTypeName='null', expression='null'}
原因在于输入参数非基本类型都要进行映射
解决办法:http://makemyownlife.iteye.com/blog/1610021
在oracle中怎么实现判断有数据则update,没数据则insert?
使用merge into
http://blog.csdn.net/ghgzczxcvxv/article/details/51518509
http://www.cnblogs.com/dongsheng/p/4384754.html
MERGE INTO DORMTEST T1
USING (SELECT 'mmm' as Name,10003 as ID, 109 AS ROOM_ID, 1 AS BED_ID, 1 AS BUILDING_ID from dual) T2
ON ( T1.ID=T2.ID)
WHEN MATCHED THEN
UPDATE SET T1.BED_ID = T2.BED_ID
WHEN NOT MATCHED THEN
INSERT (ID,NAME,ROOM_ID,BED_ID,BUILDING_ID) VALUES(T2.ID,T2.NAME,T2.ROOM_ID,T2.BED_ID,T2.BUILDING_ID);
在mysql中使用on duplicate update
http://www.jquerycn.cn/a_24239
什么是dual?
https://zhidao.baidu.com/question/81214206.html
如何在mybatis中使用merge into
https://stackoverflow.com/questions/19593785/how-can-i-use-oracle-merge-statement-using-mybatis
<update id="setScheme" parameterType="com.xmair.pojo.SchemeUploaded">
MERGE INTO DORMTEST T1
USING dual
ON ( T1.ID=#{ID,jdbcType=NUMERIC})
WHEN MATCHED THEN
UPDATE SET T1.NAME=#{NAME,jdbcType=VARCHAR},T1.ROOM_ID=#{ROOM_ID,jdbcType=NUMERIC},T1.BED_ID=#{BED_ID,jdbcType=NUMERIC},T1.BUILDING_ID=#{BUILDING_ID,jdbcType=NUMERIC}
WHEN NOT MATCHED THEN
INSERT (ID,NAME,ROOM_ID,BED_ID,BUILDING_ID) VALUES(#{ID,jdbcType=NUMERIC},#{NAME,jdbcType=VARCHAR},#{ROOM_ID,jdbcType=NUMERIC} ,#{BED_ID,jdbcType=NUMERIC},#{BUILDING_ID,jdbcType=NUMERIC})
</update>
sql exists用法
http://www.cnblogs.com/mytechblog/articles/2105785.html
怎么设置oracle主键自增长
http://blog.csdn.net/liunian02050328/article/details/40422065/
触发器:可以通过SQL developer来设置
http://blog.csdn.net/indexman/article/details/8023740/
CREATE [OR REPLACE] TRIGGER trigger_name {BEFORE | AFTER } {INSERT | DELETE | UPDATE [OF column [, column …]]} [OR {INSERT | DELETE | UPDATE [OF column [, column …]]}...] ON [schema.]table_name | [schema.]view_name [REFERENCING {OLD [AS] old | NEW [AS] new| PARENT as parent}] [FOR EACH ROW ] [WHEN condition] PL/SQL_BLOCK | CALL procedure_name;
序列:
create sequence SEQ_TEST minvalue 1 --最小值 nomaxvalue --不设置最大值 start with 1 --从1开始计数 increment by 1 --每次加1个 nocycle --一直累加,不循环 nocache; --不建缓冲区
如何在mybatis中写多条SQL语句
https://stackoverflow.com/questions/7174225/mybatis-executing-multiple-sql-statements-in-one-go-is-that-possible
<delete id="deleteUnfinishedData" parameterType="map"> {call declare begin delete from TABLE1 where id = #{valueFromMap1}; delete from TABLE2 where id = #{valueFromMap2}; end } </delete>
{call declare begin MERGE INTO DORMTEST T1 USING dual ON ( T1.ID=#{ID,jdbcType=NUMERIC}) WHEN MATCHED THEN UPDATE SET T1.NAME=#{NAME,jdbcType=VARCHAR},T1.ROOM_ID=#{ROOM_ID,jdbcType=NUMERIC},T1.BED_ID=#{BED_ID,jdbcType=NUMERIC},T1.BUILDING_ID=#{BUILDING_ID,jdbcType=NUMERIC} WHEN NOT MATCHED THEN INSERT (ID,NAME,ROOM_ID,BED_ID,BUILDING_ID) VALUES(#{ID,jdbcType=NUMERIC},#{NAME,jdbcType=VARCHAR},#{ROOM_ID,jdbcType=NUMERIC} ,#{BED_ID,jdbcType=NUMERIC},#{BUILDING_ID,jdbcType=NUMERIC}); MERGE INTO STAFFTEST T2 USING dual ON ( T2.STAFF_ID=#{ID,jdbcType=NUMERIC}) WHEN MATCHED THEN UPDATE SET T2.PHONE=#{PHONE,jdbcType=VARCHAR},T2.GENDER=#{GENDER,jdbcType=VARCHAR},T2.ADMIN_PKID=#{ADMIN_PKID,jdbcType=NUMERIC} WHEN NOT MATCHED THEN INSERT (STAFF_ID,STAFF_NAME,PHONE,GENDER,ADMIN_PKID) VALUES(#{ID,jdbcType=NUMERIC},#{NAME,jdbcType=VARCHAR},#{PHONE,jdbcType=VARCHAR} ,#{GENDER,jdbcType=VARCHAR},#{ADMIN_PKID,jdbcType=VARCHAR}); end }