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 自增长语句

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


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

可能我想得太完美了 你的方法和我头头的差不多~~~谢谢你的回答
回复
兔子托尼啊 2015-10-14
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


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


但 听一些大神说 做一下 标记 就能处理 这个我不太懂
回复
兔子托尼啊 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
我会结贴的 求大神解答 ~~求帮助 在线等
回复
相关推荐
发帖
Web 开发
创建于2007-09-28

8.0w+

社区成员

Java Web 开发
申请成为版主
帖子事件
创建了帖子
2015-10-14 11:22
社区公告
暂无公告