1 前言
普元EOS开发的时候,通过反向工程,基于数据表可以快速生成数据实体。
基于数据实体可以快速生成页面。
这个过程体现了EOS的高效性,开发效率非常高。
当有多个数据源的时候,EOS的低开页面调用数据实体的时候,怎么知道应该选择哪个数据源呢?
2 EOS多数据源配置
EOS项目配置多数据源非常简单,直接在 user-config.xml文件中创建多个数据源即可。具体的操作方式,普元EOS官方help提供了明确的说明《数据源参数配置》。
只要在 user-config.xml文件的数据源部分,配置多个 DataSource 的 module 就可以了。
3 EOS的数据实体的概念
EOS的数据实体,类似 MyBatis 或 Hibernate的数据实体。
MyBatis的数据实体是一个 JavaBean ,与数据表结构形成对应关系,方便我们进行数据表操作。
EOS的数据实体也是这样的,但更强大一些,或者也可以说画蛇添足(这要看使用者是否习惯)。EOS的数据实体是可视化的。
这个数据实体是直接从可视化的数据表拖拽出来的。
看上图,左侧是数据库,显示有若干数据表,拖拽bk_type数据表生成了 BkType这个数据实体对象。
这就容易给开发者一个误会,似乎EOS的数据实体就是与具体数据源的数据表对应的,操作数据实体就相当于操作数据表里面的数据了。
但这是错误的。
就好像我们使用MyBatis数据实体一样,那是一个对应关系,只是结构上有一致性,并非在数据连接上保持了一致。
开发者完全可以从数据源A生成数据实体,然后操作数据源B里面的数据,只要数据源A和数据源B都有与该数据实体对应的数据表即可。
4 低开时候选择数据源
EOS低开的时候,可以直接从数据实体生成页面,这个不多说了,简单看一下下图。
在低开页面上,选择页面节点右键,点击新建页面。
在这个页面,选择该页面对应的页面实体,选择BkType这个数据实体。
该项目创建了两个数据源,数据源配置如下:
<group name="default">
<configValue key="Database-Type">MySql</configValue>
<configValue key="Jdbc-Type"/>
<configValue key="C3p0-DriverClass">com.mysql.cj.jdbc.Driver</configValue>
<configValue key="C3p0-Url">jdbc:mysql://127.0.0.1:3306/eos831express?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false</configValue>
<configValue key="C3p0-UserName">root</configValue>
<configValue key="C3p0-Password">111111</configValue>
。。。。。。
</group>
<group name="demo1">
<configValue key="Database-Type">MySql</configValue>
<configValue key="Jdbc-Type"/>
<configValue key="C3p0-DriverClass">com.mysql.cj.jdbc.Driver</configValue>
<configValue key="C3p0-Url">jdbc:mysql://127.0.0.1:3306/eosdemo?useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2B8&useSSL=false</configValue>
<configValue key="C3p0-UserName">root</configValue>
<configValue key="C3p0-Password">111111</configValue>
<configValue key="C3p0-PoolSize">10</configValue>
。。。。。。
</group>
可以看到,有两个数据源,第一个数据源是默认的 default数据源,对应的数据库是 eos831express ,第二个数据源是 demo1 ,对应的数据库是 eosdemo 。
BkType数据实体对应的数据表 bk_type在 eosdemo数据库中。
这样,新创建的页面在进行增删改查操作的时候就会报错,说找不到 eos832express.bk_type 数据表,因为默认是操作default数据源。
5 解决办法:在低开应用中维护数据源
在Afcenter 中使用管理员登录,一般是admin账号,主要是要进行低开,需要一个有低开权限的账号。
登录后在主菜单中点击开发中心
开发中心页面点击 配置管理 - 实体数据源配置 - 添加配置
在实体数据源配置添加的页面中,选择数据源demo1 ,填写要包含的实体名称。
只要在user-config.xml中配置的数据源,这里就可以选择。
包含的实体名称,按照规则填写进去即可。
这里将 BkType 实体的全名填入,意思就是针对该数据实体的操作,都是对demo1数据源下的数据表进行操作。
6 结尾
问题解决了,文章结束。