ofbiz配置加增删改查,详细教程
2016-01-18 10:06
344 查看
一、安装OFBIZ
1.配置数据库
比如我的ofbiz的根目录为H:\workspace\csofbizworkspace\weidaPlatform设置为OFBIZHOME
则打开OFBIZHOME/framework\entity\config\entityengine.XML文件
修改数据源名称:
然后往下查找,你定义的datasource-name的数据库,比如我这里是localmssql
修改jdbc-uri 和账号和密码
2.创建数据库
在数据库中手动创建你指定的数据库,我这里是weidaTest
3.打开命令提示符窗口
使用cd命令进入到ofbiz根目录
比如我的ofbiz根目录为H:\workspace\csofbizworkspace\weidaPlatform
然后输入ant load-demo执行
4.执行完毕后,进入创建的数据库看下,是不是增加了表,然后再打开user_login表看了,里面是否有数据,如果有,则表示安装完成
二、新建应用
修改配置文件
1.把ofbiz导入到eclipse中
2.在OFBIZHOME/hot-deploy文件夹下,重新复制一份weidaTest并重命名为weidaTest2
3.打开weidaTest2根目录下的build.xml文件,把weidaTest全部替换为weidaTest2
4.打开weidaTest2根目录下的ofbiz-component.xml文件,把weidaTest全部替换为weidaTest2,并清掉所有的服务和实体和初始数据的配置
5.把weidaTest2/webapp下的weidaTest更改为weidaTest2
6.打开文件wedaTest2/wepapp/weidaTest2/WEB-INF/web.xml
把weidaTest替换为weidaTest2
7.打开weidaTest2/widget/CommonScreens.xml把所有的weidaTest替换为weidaTest2
8.打开weidaTest2/widget/ProductMenus.xml把所有的weidaTest替换为weidaTest2
9.把entitydef和servicedef,data,src清空
10.在src右键 build path->use assource folder
到目前为止基本配置文件已经修改完毕
现在开始ofbiz的流程学习
1.打开weidaTest2/webapp/weidaTest2/WEB-INF/controller.xml
使其内容如下图:
Request-map 表示一个rul配置,其中属性说明如下:
rui:该rul的具体值 比如我写的是main,则其完整的url值为http://localhost:8180/weidaTest2/main
Security 安全配置属性,https是否使用https连接,auth是否必须登陆
Response默认的name值有success,和error其作用跟struts2中的相试,就是根据事件返回的值不同,跳转到不同的视图去,这里没有配置事件,则默认都是跳转到success那里
设置为request-map后,设置view-map
name值对应response里的value值
Page指示视图的配置文件路径和其name值,#后面的就是name值
这里指定视图的配置文件路径为weidaTest2/widget/weidaScreens.xml。Name值为main
2.打开weidaTest2/widget/weidaScreens.xml,添加如下代码
Screen 里的name就是上面#后面的值
这里又指明了实际的前台页面路径:weidaTest2/webapp/weidaTest2/weidaTest.ftl
3.在weidaTest2/webapp/weidaTest2下新建weidaTest.ftl,输入测试两个字。
4.运行程序后台,双击OFBIZHOME/tools/startofbiz.bat
5.在浏览器中输入http://localhost:8180/weidaTest2/main
三、事件
1.修改controller.xml文件,添加事件
其中path内容为包名.类名,invoke是类的方法名
2.创建类com.test.WeidaTestEvent,然后创建静态方法weidaTest
该方法的返回值,传参都不能修改。
3.给前台传值
4.修改weidaTest.ftl
5.关闭后台,编译java类
右键--Run AS -Ant Build
6.开启程序,然后再浏览器中输入http://localhost:8180/weidaTest2/main
四、服务
1.创建类com.test.WeidaTestServices,然后新增静态方法weidaTest
2.在servicedef中创建services.xml
其中service 中的name代表服务名称,location为加包名的类名称,invoke为类的方法
其他attribute定义服务的传入值和传出值。Model=OUT表示传出值,model=IN表示传入值
Name表示参数的名称,type表示参数的类型,optional表示该参数是否为必须的,false为必须的。
以weidaTest2服务来说,其没有传入值,只有一个传出值,只有一个参数为name类型为字符串
所有attribute的name值为name,
model为OUT
Type为String
3.打开OFBIZHOME/ofbiz-component.xml
把服务的配置文件加入
4.修改事件,其调用服务
其调用的服务方法为
EventUtil.getServicesResult方法
其中weidaTest2为服务的名称
5.关闭程序,然后编译java类
6.开启程序
五、数据库操作
数据库操作一般放到服务中
1.创建实体
在entitydef文件夹下创建文件UserInfo_entitymodel.xml
其内容为:
entity-name 表示实体名称
field字段定义,其中name表示字段名称,type表示字段类型,col-name表示其在数据库中实际的名称。Type可在OFBIZHOME/framework\entity\fieldtype中查找,比如我的数据库中mssql,则打开文件fieldtypemssql.xml
2.把实体配置文件导入到应用中
打开OFBIZHOME/ofbiz-component.xml
添加内容
<entity-resourceloader="main"location="entitydef/UserInfo_entitymodel.xml"reader-name="main"type="model"/>
2.执行ant load-demo,然后看表是否已经创建
3.操作数据库方法
1)获取所有数据
import org.cs.dao.BaseDao;
importorg.cs.dao.BaseDaoIml;
BaseDao baseDao=new BaseDaoIml("default");
SqlWhereUtilsqlWhere=newSqlWhereUtil();
List<GenericValue> list=baseDao.getList("WeidaTest",sqlWhere,
UtilMisc.toList("testId DESC"));
说明:
1.BaseDao BaseDaoIml为数据库操作类
注意要导入org.cs.dao下的
2.SqlWhereUtil拼接sql查询语句工具类
3.getList 第一个参数为实体名称,第二个参数为查询条件,第三个参数为排序其为List类型
2)分页查询
Map<String,Object>data=baseDao.getPageList("WeidaTest",sqlWhere,
UtilMisc.toList("testId DESC"), 0,30);
List<GenericValue> list3=(List<GenericValue>)data.get("list");
data.get("dataSize");
getPageList方法:前三个参数与getList一样,第四个参数代表现在是第几页,页数从0开始,最后一个参数代表一页多少条数据
该方法返回Map对象,其里面有list和dataSize两个内容,List即为查出来的数据,dataSize,为总条数。
3)保存和更新
Map<String,Object> data=newHashMap<String,Object>();
data.put("testId",baseDao.getNextId("WeidaTest"));
data.put("testName","xxx");
baseDao.save("WeidaTest",data);
baseDao.getNextId 获取下一个自增长主键值,weidaTest为实体名称
如果主键在数据库中存在,则为更新,不存在则为保存。
4)条件更新
baseDao.updateBySqlWhere(entityName,fieldsToSet,
sqlWhere)
第一个参数为实体名称,第二个参数为Map对象,为需要更改的字段及其值,第三个参数为查询条件;
Map<String,Object> fieldsToSet =FastMap.newInstance();
fieldsToSet.put(“testName”,”cxw”);
SqlWhereUtil sql=newSqlWhereUtil();
sql.addSqlWhere(“testId”,”=”,”1”);
baseDao.updateBySqlWhere(“weidaTest”, fieldsToSet,sql)
这里对应的sql语句为update weida_test set testName=’cxw’ where testId=’1’
注意:sql.addSqlWhere的第三个参数的值类型要与字段的类型对应,如果testId字段对应java的字符串类型,则第三个参数必须为字符串。
5)条件删除
sqlWhere=newSqlWhereUtil();
baseDao.removeBySqlWhere("WeidaTest",sqlWhere);
第一个参数为实体名称,第二个为查询条件
6)多表查询
EntityUtilentity=new EntityUtil();
entity.addEntity("WeidaTest"); //实体名称
entity.addEntity("WeidaTest2"); //实体名称
entity.addPrex("WeidaTest","p"); //给表的每个字段加前缀
entity.addPrex("WeidaTest2","l");
entity.addJoin("WeidaTest","WeidaTest2"); //设置关联关系
WeidaTest左关联WeidaTest2
entity.addJoinId("WeidaTest","weidaId"); //设置实体的关联字段
entity.addJoinId("WeidaTest2","weidaId");
Map<String,Object> data2=baseDao.getJoinPageList(entity);
返回Map对象,其内容与getPageList一样
这段代表等价于sql语句:
selectt1.weidaId as pWeidaId,t1.weidaName as pWeidaName,t2.weidaId aslWeidaId,t2.weidaName as lWeidaName
fromweidaTest t1 left outer join weidaTest2 on t1.weidaId=t2.weidaId
7)使用原生sql语句
String sql="select* from weida_test";
List<Map<String,Object>> list2=baseDao.getListByJDBC(sql);
baseDao.executeByJDBC(sql);没有返回值
baseDao.executeByJDBCUpdate(sql);返回int类型
1.配置数据库
比如我的ofbiz的根目录为H:\workspace\csofbizworkspace\weidaPlatform设置为OFBIZHOME
则打开OFBIZHOME/framework\entity\config\entityengine.XML文件
修改数据源名称:
然后往下查找,你定义的datasource-name的数据库,比如我这里是localmssql
修改jdbc-uri 和账号和密码
2.创建数据库
在数据库中手动创建你指定的数据库,我这里是weidaTest
3.打开命令提示符窗口
使用cd命令进入到ofbiz根目录
比如我的ofbiz根目录为H:\workspace\csofbizworkspace\weidaPlatform
然后输入ant load-demo执行
4.执行完毕后,进入创建的数据库看下,是不是增加了表,然后再打开user_login表看了,里面是否有数据,如果有,则表示安装完成
二、新建应用
修改配置文件
1.把ofbiz导入到eclipse中
2.在OFBIZHOME/hot-deploy文件夹下,重新复制一份weidaTest并重命名为weidaTest2
3.打开weidaTest2根目录下的build.xml文件,把weidaTest全部替换为weidaTest2
4.打开weidaTest2根目录下的ofbiz-component.xml文件,把weidaTest全部替换为weidaTest2,并清掉所有的服务和实体和初始数据的配置
5.把weidaTest2/webapp下的weidaTest更改为weidaTest2
6.打开文件wedaTest2/wepapp/weidaTest2/WEB-INF/web.xml
把weidaTest替换为weidaTest2
7.打开weidaTest2/widget/CommonScreens.xml把所有的weidaTest替换为weidaTest2
8.打开weidaTest2/widget/ProductMenus.xml把所有的weidaTest替换为weidaTest2
9.把entitydef和servicedef,data,src清空
10.在src右键 build path->use assource folder
到目前为止基本配置文件已经修改完毕
现在开始ofbiz的流程学习
1.打开weidaTest2/webapp/weidaTest2/WEB-INF/controller.xml
使其内容如下图:
Request-map 表示一个rul配置,其中属性说明如下:
rui:该rul的具体值 比如我写的是main,则其完整的url值为http://localhost:8180/weidaTest2/main
Security 安全配置属性,https是否使用https连接,auth是否必须登陆
Response默认的name值有success,和error其作用跟struts2中的相试,就是根据事件返回的值不同,跳转到不同的视图去,这里没有配置事件,则默认都是跳转到success那里
设置为request-map后,设置view-map
name值对应response里的value值
Page指示视图的配置文件路径和其name值,#后面的就是name值
这里指定视图的配置文件路径为weidaTest2/widget/weidaScreens.xml。Name值为main
2.打开weidaTest2/widget/weidaScreens.xml,添加如下代码
Screen 里的name就是上面#后面的值
这里又指明了实际的前台页面路径:weidaTest2/webapp/weidaTest2/weidaTest.ftl
3.在weidaTest2/webapp/weidaTest2下新建weidaTest.ftl,输入测试两个字。
4.运行程序后台,双击OFBIZHOME/tools/startofbiz.bat
5.在浏览器中输入http://localhost:8180/weidaTest2/main
三、事件
1.修改controller.xml文件,添加事件
其中path内容为包名.类名,invoke是类的方法名
2.创建类com.test.WeidaTestEvent,然后创建静态方法weidaTest
该方法的返回值,传参都不能修改。
3.给前台传值
4.修改weidaTest.ftl
5.关闭后台,编译java类
右键--Run AS -Ant Build
6.开启程序,然后再浏览器中输入http://localhost:8180/weidaTest2/main
四、服务
1.创建类com.test.WeidaTestServices,然后新增静态方法weidaTest
2.在servicedef中创建services.xml
其中service 中的name代表服务名称,location为加包名的类名称,invoke为类的方法
其他attribute定义服务的传入值和传出值。Model=OUT表示传出值,model=IN表示传入值
Name表示参数的名称,type表示参数的类型,optional表示该参数是否为必须的,false为必须的。
以weidaTest2服务来说,其没有传入值,只有一个传出值,只有一个参数为name类型为字符串
所有attribute的name值为name,
model为OUT
Type为String
3.打开OFBIZHOME/ofbiz-component.xml
把服务的配置文件加入
4.修改事件,其调用服务
其调用的服务方法为
EventUtil.getServicesResult方法
其中weidaTest2为服务的名称
5.关闭程序,然后编译java类
6.开启程序
五、数据库操作
数据库操作一般放到服务中
1.创建实体
在entitydef文件夹下创建文件UserInfo_entitymodel.xml
其内容为:
entity-name 表示实体名称
field字段定义,其中name表示字段名称,type表示字段类型,col-name表示其在数据库中实际的名称。Type可在OFBIZHOME/framework\entity\fieldtype中查找,比如我的数据库中mssql,则打开文件fieldtypemssql.xml
2.把实体配置文件导入到应用中
打开OFBIZHOME/ofbiz-component.xml
添加内容
<entity-resourceloader="main"location="entitydef/UserInfo_entitymodel.xml"reader-name="main"type="model"/>
2.执行ant load-demo,然后看表是否已经创建
3.操作数据库方法
1)获取所有数据
import org.cs.dao.BaseDao;
importorg.cs.dao.BaseDaoIml;
BaseDao baseDao=new BaseDaoIml("default");
SqlWhereUtilsqlWhere=newSqlWhereUtil();
List<GenericValue> list=baseDao.getList("WeidaTest",sqlWhere,
UtilMisc.toList("testId DESC"));
说明:
1.BaseDao BaseDaoIml为数据库操作类
注意要导入org.cs.dao下的
2.SqlWhereUtil拼接sql查询语句工具类
3.getList 第一个参数为实体名称,第二个参数为查询条件,第三个参数为排序其为List类型
2)分页查询
Map<String,Object>data=baseDao.getPageList("WeidaTest",sqlWhere,
UtilMisc.toList("testId DESC"), 0,30);
List<GenericValue> list3=(List<GenericValue>)data.get("list");
data.get("dataSize");
getPageList方法:前三个参数与getList一样,第四个参数代表现在是第几页,页数从0开始,最后一个参数代表一页多少条数据
该方法返回Map对象,其里面有list和dataSize两个内容,List即为查出来的数据,dataSize,为总条数。
3)保存和更新
Map<String,Object> data=newHashMap<String,Object>();
data.put("testId",baseDao.getNextId("WeidaTest"));
data.put("testName","xxx");
baseDao.save("WeidaTest",data);
baseDao.getNextId 获取下一个自增长主键值,weidaTest为实体名称
如果主键在数据库中存在,则为更新,不存在则为保存。
4)条件更新
baseDao.updateBySqlWhere(entityName,fieldsToSet,
sqlWhere)
第一个参数为实体名称,第二个参数为Map对象,为需要更改的字段及其值,第三个参数为查询条件;
Map<String,Object> fieldsToSet =FastMap.newInstance();
fieldsToSet.put(“testName”,”cxw”);
SqlWhereUtil sql=newSqlWhereUtil();
sql.addSqlWhere(“testId”,”=”,”1”);
baseDao.updateBySqlWhere(“weidaTest”, fieldsToSet,sql)
这里对应的sql语句为update weida_test set testName=’cxw’ where testId=’1’
注意:sql.addSqlWhere的第三个参数的值类型要与字段的类型对应,如果testId字段对应java的字符串类型,则第三个参数必须为字符串。
5)条件删除
sqlWhere=newSqlWhereUtil();
baseDao.removeBySqlWhere("WeidaTest",sqlWhere);
第一个参数为实体名称,第二个为查询条件
6)多表查询
EntityUtilentity=new EntityUtil();
entity.addEntity("WeidaTest"); //实体名称
entity.addEntity("WeidaTest2"); //实体名称
entity.addPrex("WeidaTest","p"); //给表的每个字段加前缀
entity.addPrex("WeidaTest2","l");
entity.addJoin("WeidaTest","WeidaTest2"); //设置关联关系
WeidaTest左关联WeidaTest2
entity.addJoinId("WeidaTest","weidaId"); //设置实体的关联字段
entity.addJoinId("WeidaTest2","weidaId");
Map<String,Object> data2=baseDao.getJoinPageList(entity);
返回Map对象,其内容与getPageList一样
这段代表等价于sql语句:
selectt1.weidaId as pWeidaId,t1.weidaName as pWeidaName,t2.weidaId aslWeidaId,t2.weidaName as lWeidaName
fromweidaTest t1 left outer join weidaTest2 on t1.weidaId=t2.weidaId
7)使用原生sql语句
String sql="select* from weida_test";
List<Map<String,Object>> list2=baseDao.getListByJDBC(sql);
baseDao.executeByJDBC(sql);没有返回值
baseDao.executeByJDBCUpdate(sql);返回int类型
相关文章推荐
- 快速开发CSS的利器-LESS
- oracle如何创建用户并赋予权限
- C#-生成下面的模块时,启用了优化或没有调试信息:
- 使用python pylab库 画线
- 16年前,人民日报是这样评价“微信他爹”张小龙的
- 探究PHP底层
- 如何清除eclipse的workspace目录呢?(myeclipse的清除方法一样!)
- JDK学习之集合包—Iterator、ListIterator、Iterable
- uva 401
- POI操作Excel:cell的背景颜色类型
- 【Access2003】自增列的创建
- 微信红包发放注意事项
- CSS盒子模型
- 莲花SVN无限期试用方法
- Objective-C @property学习总结1
- 开发测试可以用到的网站
- mysql_query()与mysql_real_query()
- 判断是否是手机浏览器
- java入门学习(7)—包装类,object类
- 2015, 年终 第二弹