在Ofbiz中我们使用delegator 这个类对数据库进行操作,
这个类在绝大多数方面都可以满足我们的需求,
但是在一些特殊的地方,我们还是很怀念源生的sql。
下面介绍的方法就是在ofbiz中使用源生sql:
//使用源生的JDBC方式
String sql = "update product t set t.whether_sale='Y' "
+"where t.product_store_id="+productStoreId;
//获得gropuHelperName
//这个org.ofbiz是写在entityengine.xml的文件中的
String groupHelperName = delegator.getGroupHelperName("org.ofbiz");
//获得数据库的连接
Connection conn = ConnectionFactory.getConnection(groupHelperName);
//获得Statement
Statement stmt = conn.createStatement();
//执行sql 将商品是否可购买状态设置为N
tmt.executeUpdate(sql);
//end
我们来看下entityengine.xml文件。
<delegator name="default" entity-model-reader="main" entity-group-reader="main" entity-eca-reader="main" distributed-cache-clear-enabled="false">
<!-- <group-map group-name="org.ofbiz" datasource-name="localderby"/>
<group-map group-name="org.ofbiz.olap" datasource-name="localderbyolap"/>
<group-map group-name="org.ofbiz.tenant" datasource-name="localderbytenant"/> -->
<!-- <group-map group-name="org.ofbiz" datasource-name="localmysql"/>
<group-map group-name="org.ofbiz.olap" datasource-name="localmysqlolap"/>
<group-map group-name="org.ofbiz.tenant" datasource-name="localmysqltenant"/> -->
<group-map group-name="org.ofbiz" datasource-name="localoracle"/>
<group-map group-name="org.ofbiz.olap" datasource-name="localoracle"/>
<group-map group-name="org.ofbiz.tenant" datasource-name="localoracle"/>
<!-- <group-map group-name="org.ofbiz" datasource-name="localpostnew"/>
<group-map group-name="org.ofbiz.olap" datasource-name="localpostolap"/>
<group-map group-name="org.ofbiz.tenant" datasource-name="localposttenant"/> -->
</delegator>
这个xml文件中的group-name就可以帮助我们获得到groupHelperName。