日期:2014-05-16 浏览次数:20711 次
dbSchema1=cl4motdta. dbSchema2=pbsec6m. dbSchema3=cl4devdta.
<!-- 数据库 方案名 配置文件装载 --> <properties resource="com/biz/sqlmap.properties"/>
<select id="queryUserAccreditTotal" parameterClass="com.citicpru.euis.maintain.vo.EufgpkyVO" resultClass="java.lang.Long"> select count(*) as total from ${dbSchema1}eufgpky,${dbSchema2}asaepf where userid = ae01 </select>
关于ibatis 的sql --------------------------- 谁碰到过 动态定义 数据库名的吗 select * from table 要改成 select * from database.table 动态定义 database 我这边的数据太变态了 在 多个数据库里面 关联查询。 加上测试环境、生产环境,那是N多库了 不想改sql哦,那累死的 请问怎么配置?怎么改? -------------------- 问题补充: database 对于 oracle数据库来说,就是表空间; 对于 db2数据库来说,就是方案名--还是指的数据库名。 有些时候,虽然数据跟着用户走,但是为了区分测试数据还是正式数据, 我们都会定义相同用户但是不同的表空间;不会定义同一表空间多用户,这样dba用户查数据不方便。 这个改动有两种思路,拿下列sqlmap来说, <!-- 根据 id 条件 查询实例. --> <select id="queryEufgpkyVObyID" parameterClass="java.lang.String" resultClass="com.vo.EufgpkyVO"> select a.userid, b.ae02, from ttdata.eufgpky a, ptdata.asaepf b where a.userid = b.ae01 and <![CDATA[ a.userid = #id#]]> </select> 现在要将 ttdata 和 ptdata 改成变量 1. 思路一:改配置文件,看能否定义统一的变量代替 2. 思路二:改parameterClass,改成对象,对象包含数据库名的属性。相当于vo继承一个globalDatabase类。 思路二代价太大,要改大量的sql和调用类、配置文件 这样的话,以后不存在 parameterClass="java.lang.String" parameterClass="java.lang.Long" 类似这样的参数了 parameterClass 全是对象了。