Odoo(OpenERP)开发实践:通过XML-RPC接口訪问Odoo数据库
2023-09-11 14:15:00 时间
Odoo(OpenERP)server支持通过XML-RPC接口訪问、操作数据库,基于此可实现与其它系统的交互与集成。
本文是使用Java通过XMLRPC接口操作Odoo数据库的简单演示样例。本例引用的jar包包含xmlrpc-common-3.1.3.jar, xmlrpc-client-3.1.3.jar和ws-commons-util-1.0.2.jar。如须要,可点击这里下载。
package memo.by.weichen; import java.net.URL; import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.xmlrpc.client.XmlRpcClient; import org.apache.xmlrpc.client.XmlRpcClientConfigImpl; /** * * 通过XML-RPC接口訪问Odoo数据库 * Test@Odoo 8.0 * by WeiChen * */ public class OdooWSDemo { public static final String URL = "http://127.0.0.1:8069"; public static final String DB = "demo"; public static final int USERID = 1; public static final String PASS = "demo"; public static void main(String[] args) throws Exception{ XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl(); XmlRpcClient client = new XmlRpcClient(); config.setServerURL(new URL(String.format("%s/xmlrpc/2/object", URL))); client.setConfig(config); // 新建客户 Integer id = (Integer) client.execute( "execute_kw", Arrays.asList( DB, USERID, PASS, "res.partner", "create", Arrays.asList(new HashMap() { { put("name", "苏州园区永旺梦乐城"); put("customer", Boolean.TRUE); } }))); // 更新客户 client.execute("execute_kw", Arrays.asList( DB, USERID, PASS, "res.partner", "write", Arrays.asList( Arrays.asList(id), new HashMap() {{ put("name", "永旺梦乐城苏州园区店"); }} ) )); // 查找客户 List<Object> partners = Arrays.asList((Object[])client.execute("execute_kw", Arrays.asList( DB, USERID, PASS, "res.partner", "name_get", Arrays.asList(Arrays.asList(id)) ))); if(partners!=null&&partners.size()>0){// partners格式: [[id, name]] Object[] partner = (Object[])partners.get(0); if(partner.length==2) System.out.println("客户名: "+partner[1]); } // 删除客户 client.execute("execute_kw", Arrays.asList( DB, USERID, PASS, "res.partner", "unlink", Arrays.asList(Arrays.asList(id)))); // 客户列表 List<Object> customers = Arrays.asList((Object[]) client.execute( "execute_kw", Arrays.asList( DB, USERID, PASS, "res.partner", "search_read", Arrays.asList(Arrays.asList( // 设置查询条件 // Arrays.asList("is_company", "=", true), Arrays.asList("customer", "=", true))), new HashMap() { {// 查询name字段, 限定最多返回100条记录 put("fields", Arrays.asList("name")); put("limit", 100); } }))); System.out.println("**********客户列表**********"); for (int i=0;i<customers.size();i++){ Map customer = (Map)customers.get(i); String name = (String)customer.get("name"); System.out.println(name); } System.out.println("****************************"); } }參考资料:
[1] https://www.odoo.com/documentation/8.0/api_integration.html
相关文章
- MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)
- SQLserver不同数据库不同表之间的复制
- python3 连接数据库
- 使用SQL Server Profiler跟踪数据库
- Atitit DbServiceV4qb9 数据库查询类库v4 新特性
- 从分析性数据库ADS中导出数据
- 华为云推出全自研数据库,GaussDB(openGauss)能否撑起一片天?
- 震惊!火爆全网的ChatGPT背后使用的数据库居然是……
- 使用records操作数据库
- Python接口测试实战之数据库操作,拿来就能用
- 接口自动化之操作mysql数据库
- JanusGraph 架构概述——和hugegraph、graphbase架构都是一样,只是利用其它数据库做了图计算和查询引擎
- Java连接Sql Server 2008的简单数据库应用
- C/C++编程操作Redis数据库,hiredis包装redis数据库操作接口及测试(增删改查与连接)
- 【SQL Server】数据库开发指南(一)数据库设计
- [SQL] SQL Server远程链接MySql数据库(LinkedServer)
- 接口测试——MySQL数据库接口测试用例访问(七)