社区
Java EE
帖子详情
有关SSI的问题,求大牛指点,3Q!!!
蘑菇頭
2012-04-23 02:15:45
今天项目碰到了一个问题:
ibatis做数据持久层,现在碰到了一个问题,就是——开发的项目 我如何做,才能使自己写的一条SQL 既能访问oracle和mysql呢???
目的:为了方便以后维护,我们只需要写一个SQL,使其自动识别是oracle还是mysql。
言简意赅:
写一条SQL ,它既能操作oracle也能操作mysql
求提供思路
在线坐等…… 亲们,谢谢……
...全文
279
25
打赏
收藏
有关SSI的问题,求大牛指点,3Q!!!
今天项目碰到了一个问题: ibatis做数据持久层,现在碰到了一个问题,就是——开发的项目 我如何做,才能使自己写的一条SQL 既能访问oracle和mysql呢??? 目的:为了方便以后维护,我们只需要写一个SQL,使其自动识别是oracle还是mysql。 言简意赅: 写一条SQL ,它既能操作oracle也能操作mysql 求提供思路 在线坐等…… 亲们,谢谢……
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fangkaifang
2012-04-25
打赏
举报
回复
楼主 别纠结了 写两套呗 反正你说的分页 查询啥的 sql也比较简单
蘑菇頭
2012-04-25
打赏
举报
回复
[Quote=引用 23 楼 的回复:]
楼主 别纠结了 写两套呗 反正你说的分页 查询啥的 sql也比较简单
[/Quote]
额 ,这个 这个…… ╮(╯▽╰)╭ 看来 方案 貌似……
不知道 用 ibatis和hibernate的区别,除了优化数据库意外的其他优缺点在哪里???
有木有解答的 , 额 对了 google 一下先……
蘑菇頭
2012-04-24
打赏
举报
回复
坐等 啊 期待大神的 出现………………
蘑菇頭
2012-04-24
打赏
举报
回复
[Quote=引用 17 楼 的回复:]
引用 16 楼 的回复:
其实这个不是难题。要知道hibernate能够进行这样的切换,靠的什么东西?如果你知道Hibernate靠的什么就很好解决这样的问题。
我就拿一个分页来说吧。在很多数据库中他们的分页SQL都是不一样的。就像LZ说的那个limit (mysql),top (MS)等
将以上提到的信息进行分解。问题就很好解决了。
解决过程:
1.通过使用方言的标示,来说明当前使……
[/Quote]
知己啊 心声 泪奔ing…………
蘑菇頭
2012-04-24
打赏
举报
回复
[Quote=引用 17 楼 的回复:]
引用 16 楼 的回复:
其实这个不是难题。要知道hibernate能够进行这样的切换,靠的什么东西?如果你知道Hibernate靠的什么就很好解决这样的问题。
我就拿一个分页来说吧。在很多数据库中他们的分页SQL都是不一样的。就像LZ说的那个limit (mysql),top (MS)等
将以上提到的信息进行分解。问题就很好解决了。
解决过程:
1.通过使用方言的标示,来说明当前使……
[/Quote]
知己啊 心声 泪奔ing………………
安特矮油
2012-04-24
打赏
举报
回复
如果是普通查询分页什么的,用ibatis的<include refid=""/>其分页语句就好,根据不同的数据库引入不同的分页部分
intrejj
2012-04-24
打赏
举报
回复
[Quote=引用 16 楼 的回复:]
其实这个不是难题。要知道hibernate能够进行这样的切换,靠的什么东西?如果你知道Hibernate靠的什么就很好解决这样的问题。
我就拿一个分页来说吧。在很多数据库中他们的分页SQL都是不一样的。就像LZ说的那个limit (mysql),top (MS)等
将以上提到的信息进行分解。问题就很好解决了。
解决过程:
1.通过使用方言的标示,来说明当前使用的数据库是什么……
[/Quote]
很多东西说得容易,想起来也容易,但实现起来就不是那回事了!
首先要求只写一套SQL(该要求中),能够在两个数据库中执行,要想通用,除非数据库很精通!
其次你说用方言标示,来说明当前使用的数据库,这点有什么意思!这种相当于写两套SQL,系统自动识别是可以的,但要求是只写一套SQL.
Hibernate能够通过方言实现跨数据库平台,是因为其作者相当于自己实现一套HQL等,再根据你配置的方言编译、转化为该数据库的Native SQL,难道这个过程你能够简单的就实现的了,好说,如果你能够实现,那就不叫IBatis了,那就是Hibenate的克隆了!使用Ibatis的原因就是想数据库自己优化,这样的话就不可能了,那还不如干脆直接使用Hibernate了!
cjoy4856
2012-04-24
打赏
举报
回复
[Quote=引用 17 楼 的回复:]
引用 16 楼 的回复:
其实这个不是难题。要知道hibernate能够进行这样的切换,靠的什么东西?如果你知道Hibernate靠的什么就很好解决这样的问题。
我就拿一个分页来说吧。在很多数据库中他们的分页SQL都是不一样的。就像LZ说的那个limit (mysql),top (MS)等
将以上提到的信息进行分解。问题就很好解决了。
解决过程:
1.通过使用方言的标示,来说明当前使……
[/Quote]
hibernate没有你想的那么神奇。通过hibernate的code为证:
oracle的分页查询(类名称Oracle9iDialect)
public String getLimitString(String sql, boolean hasOffset) {
sql = sql.trim();
boolean isForUpdate = false;
if (sql.toLowerCase().endsWith(" for update")) {
sql = sql.substring(0, sql.length() - 11);
isForUpdate = true;
}
StringBuffer pagingSelect = new StringBuffer(sql.length() + 100);
if (hasOffset) {
pagingSelect.append("select * from ( select row_.*, rownum rownum_ from ( ");
}
else {
pagingSelect.append("select * from ( ");
}
pagingSelect.append(sql);
if (hasOffset) {
pagingSelect.append(" ) row_ where rownum <= ?) where rownum_ > ?");
}
else {
pagingSelect.append(" ) where rownum <= ?");
}
if (isForUpdate) {
pagingSelect.append(" for update");
}
return pagingSelect.toString();
}
MYSQL (类名称MySQLDialect)
public String getLimitString(String sql, boolean hasOffset) {
return sql.length() + 20 + sql + (hasOffset ? " limit ?, ?" : " limit ?");
}
以上均为Hibernate的源码
cjoy4856
2012-04-23
打赏
举报
回复
其实这个不是难题。要知道hibernate能够进行这样的切换,靠的什么东西?如果你知道Hibernate靠的什么就很好解决这样的问题。
我就拿一个分页来说吧。在很多数据库中他们的分页SQL都是不一样的。就像LZ说的那个limit (mysql),top (MS)等
将以上提到的信息进行分解。问题就很好解决了。
解决过程:
1.通过使用方言的标示,来说明当前使用的数据库是什么
2.将分页的所有的标准SQL写好(数据库商家的标准SQL)
3.哪就是使用Refact的问题了。
我也只能够跟你说这些了。提供思路吧,方法也很简单。
蘑菇頭
2012-04-23
打赏
举报
回复
[Quote=引用 14 楼 的回复:]
还是用Hibernate好点,这种问题很轻松解决叻 ... ... ...
[/Quote]
亲, 能说说 思路 啥的…………
tao_tao
2012-04-23
打赏
举报
回复
还是用Hibernate好点,这种问题很轻松解决叻 ... ... ...
蘑菇頭
2012-04-23
打赏
举报
回复
[Quote=引用 11 楼 的回复:]
简单的查询啊啥的 语法可以通用 其他的不玩熟了还真不知道。。。。建议楼主不要想着走捷径了。。。
[/Quote]
这个…… 项目牵扯到 分页、增上改查 等等…… 所以……
想看看大家 有木有好的解决方案……
fangkaifang
2012-04-23
打赏
举报
回复
简单的查询啊啥的 语法可以通用 其他的不玩熟了还真不知道。。。。建议楼主不要想着走捷径了。。。
fangkaifang
2012-04-23
打赏
举报
回复
简单的查询啊啥的 语法可以通用 其他的不玩熟了还真不知道。。。。建议楼主不要想着走捷径了。。。
蘑菇頭
2012-04-23
打赏
举报
回复
[Quote=引用 8 楼 的回复:]
不想写两套的代价是写十套,你不把oracle和mysql都玩明白了,不可能写出来真正通用的,
简单的不带函数的 基本语法都一样。
[/Quote]
0.0 亲, 这个…… 这个…………
蘑菇頭
2012-04-23
打赏
举报
回复
[Quote=引用 7 楼 的回复:]
引用 6 楼 的回复:
引用 5 楼 的回复:
只要用标准SQL92的语法,好多数据库都可以执行
可以针对每种数据库写专用xml文件,通过配置文件切换
其实 之所以 这么问 也就是想说: 在oracle和mysql之间,我们 不想写两套SQL
看看 有木有解决方案什么的……呵呵……
有的语法是可以两种数据库都支持的 有的不行 比如一些函数 关键字 ……
[/Quote]
恩 是啊 这个 我知道 , 就是 想看看 都支持的,嘿嘿…… 木有不可能,只有想不到啊……
forgetsam
2012-04-23
打赏
举报
回复
不想写两套的代价是写十套,你不把oracle和mysql都玩明白了,不可能写出来真正通用的,
简单的不带函数的 基本语法都一样。
fangkaifang
2012-04-23
打赏
举报
回复
[Quote=引用 6 楼 的回复:]
引用 5 楼 的回复:
只要用标准SQL92的语法,好多数据库都可以执行
可以针对每种数据库写专用xml文件,通过配置文件切换
其实 之所以 这么问 也就是想说: 在oracle和mysql之间,我们 不想写两套SQL
看看 有木有解决方案什么的……呵呵……
[/Quote]
有的语法是可以两种数据库都支持的 有的不行 比如一些函数 关键字 什么的
蘑菇頭
2012-04-23
打赏
举报
回复
[Quote=引用 5 楼 的回复:]
只要用标准SQL92的语法,好多数据库都可以执行
可以针对每种数据库写专用xml文件,通过配置文件切换
[/Quote]
其实 之所以 这么问 也就是想说: 在oracle和mysql之间,我们 不想写两套SQL
看看 有木有解决方案什么的……呵呵……
15年老程创业中
2012-04-23
打赏
举报
回复
只要用标准SQL92的语法,好多数据库都可以执行
可以针对每种数据库写专用xml文件,通过配置文件切换
加载更多回复(4)
iomemory地址被抢占(一)
最近做的一个项目,系统启动时发现有warning,并打印出了一堆dump stack。 看了下代码,发现是在esai的probe函数中调用request_mem_region时失败代码走到了...从代码看,存在两个
问题
: 1、request_mem_region为什
基于springboot+vue+mysql电商平台的设计与实现(源码+论文+开题报告).rar
采用前后端分离架构,包含数据库文件,代码经过完整测试,保证可以运行,内部包含详细的运行说明文档,如遇运行
问题
可私信博主。 本项目主要面向计算机相关专业中正在筹备大作业、毕业设计的学生,以及渴望通过实战项目提升编码能力的自学者,系统难度设计贴合教学需求,功能模块覆盖全栈开发核心知识点,所有代码与文档均经测试审核,学习者可放心下载参考或直接用于课程实践。
基于JavaEE JSF XML 导航规则配置源码.zip
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目
问题
、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、本项目仅用作交流学习参考,请切勿用于商业用途。
实验一图像文件的读取项目文件+报告
实验一图像文件的读取项目文件+报告
Android自定义Button控件实现不同背景图片设置方法
资源下载链接为: https://pan.quark.cn/s/f989b9092fc5 在Android开发中,为了满足特定的设计需求或功能扩展,我们常常需要对系统控件进行自定义。本文将介绍如何自定义一个Button控件,并为其设置不同的背景图片,涉及自定义控件的基本原理和布局管理。 首先,创建一个继承自Button的自定义类MyButton。通过继承,我们可以保留Button原有的功能,并在此基础上添加自定义特性。在MyButton类中,重写构造函数以正确处理属性初始化,并添加成员变量存储文本、位置信息和背景图片ID。 为了实现背景图片切换,添加onSetText和onSetBmp方法。onSetText用于设置按钮文本及其位置和样式,onSetBmp用于设置按钮按下和松开状态的背景图片ID。 接着,重写onDraw方法以显示自定义文本,并重写onTouchEvent方法,在用户按下或松开按钮时切换背景图片。
Java EE
67,549
社区成员
225,860
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章