当前位置: 代码迷 >> Java Web开发 >> mybatis 地图per中的sql 语句 动态判断是否oracle或者mysql
  详细解决方案

mybatis 地图per中的sql 语句 动态判断是否oracle或者mysql

热度:1100   发布时间:2016-04-13 22:18:18.0
mybatis mapper中的sql 语句 动态判断是否oracle或者mysql
<insert id="insertByVo" parameterType="TEST">
<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">  
        SELECT LAST_INSERT_ID()
       </selectKey> 
上面是MYSQL语句的自增长语句 
<selectKey resultType="java.lang.String" order="BEFORE" keyProperty="id">  
        SELECT SEQ_TEST.nextval AS id FROM DUAL  
       </selectKey> 
上面是oracle 自增长语句 

请问  怎么动态判断数据库类型 而选择其中一条语句 就是两句合拼在一起 然后根据数据库类型动态切换那一条数据
------解决思路----------------------
自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle
------解决思路----------------------
你切换数据源的时候就应该知道了。
你动态切换数据源,不同的数据源加载不同ibatis文件,不需要再去判断是否oracle或者mysql
------解决思路----------------------
引用:
Quote: 引用:

自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle


因为公司项目经常在MYSQL 和oracle切换 所以 存储过程不允许用~~
你切换数据库的时候不就知道是什么数据库了吗 ? 你可以在定义一个全局的变量(这个变量最好在mapper文件中能方便的取到值,比如可以放在所有实体的父类中),读取配置文件,来存储数据库的类型,然后在这判断。
------解决思路----------------------
Class DataSourceUtils

java.lang.Object
org.springframework.jdbc.datasource.DataSourceUtils

  相关解决方案