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

qq61785223 2015-10-14 11:22:57
<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 自增长语句

请问 怎么动态判断数据库类型 而选择其中一条语句 就是两句合拼在一起 然后根据数据库类型动态切换那一条数据
...全文
1438 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq61785223 2015-10-14
  • 打赏
  • 举报
回复
引用 7 楼 qq61785223 的回复:
[quote=引用 6 楼 l821398100 的回复:]
[quote=引用 3 楼 qq61785223 的回复:]
[quote=引用 2 楼 l821398100 的回复:]
自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle


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

可能我想得太完美了 你的方法和我头头的差不多~~~谢谢你的回答
tony4geek 2015-10-14
  • 打赏
  • 举报
回复 1
Class DataSourceUtils

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

qq61785223 2015-10-14
  • 打赏
  • 举报
回复
引用 6 楼 l821398100 的回复:
[quote=引用 3 楼 qq61785223 的回复:]
[quote=引用 2 楼 l821398100 的回复:]
自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle


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

我切换数据库是在配置文件里面 改的 那怎么获得MYBATIS里面的配置文件的值('orcale' 或'mysql') 再传到MAPPER里面 这就是纠结我一整天的问题 求大神解答~~~
小雷同学 2015-10-14
  • 打赏
  • 举报
回复
引用 3 楼 qq61785223 的回复:
[quote=引用 2 楼 l821398100 的回复:]
自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle


因为公司项目经常在MYSQL 和oracle切换 所以 存储过程不允许用~~[/quote]你切换数据库的时候不就知道是什么数据库了吗 ? 你可以在定义一个全局的变量(这个变量最好在mapper文件中能方便的取到值,比如可以放在所有实体的父类中),读取配置文件,来存储数据库的类型,然后在这判断。
qq61785223 2015-10-14
  • 打赏
  • 举报
回复
引用 4 楼 rui888 的回复:
你切换数据源的时候就应该知道了。
你动态切换数据源,不同的数据源加载不同ibatis文件,不需要再去判断是否oracle或者mysql


这方法我也知道 但太麻烦 代码调动比较多


但 听一些大神说 做一下 标记 就能处理 这个我不太懂
tony4geek 2015-10-14
  • 打赏
  • 举报
回复
你切换数据源的时候就应该知道了。
你动态切换数据源,不同的数据源加载不同ibatis文件,不需要再去判断是否oracle或者mysql
qq61785223 2015-10-14
  • 打赏
  • 举报
回复
引用 2 楼 l821398100 的回复:
自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle


因为公司项目经常在MYSQL 和oracle切换 所以 存储过程不允许用~~
小雷同学 2015-10-14
  • 打赏
  • 举报
回复
自增一般都不拿语句控制的,如果有特殊需求我还真不知道,不过应该可以借用存储过程实现。执行mysql的自增如果不报错 就是mysql返回结果,否则,再执行oracle的自增如果不报错就是oracle
qq61785223 2015-10-14
  • 打赏
  • 举报
回复
我会结贴的 求大神解答 ~~求帮助 在线等

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧