zoukankan      html  css  js  c++  java
  • 使用 mybatis和oracle 数据库出现的问题

    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
        }	
    

      

  • 相关阅读:
    C#网络编程简单实现通信小例子-1
    对象序列化
    C#网络编程(1)
    Web前端基础——jQuery(三)
    Web前端基础——jQuery(二)
    Web前端基础——jQuery(一)
    Java基础——正则表达式
    Java基础——Servlet(八)文件上传下载
    Java基础——Servlet(七)过滤器&监听器 相关
    Java基础——Servlet(六)分页相关
  • 原文地址:https://www.cnblogs.com/hong2016/p/7280730.html
Copyright © 2011-2022 走看看