简介:
本文介绍了西门子低代码平台如何通过Database Connector 连接到外部数据库并实现增删改查操作。连接外围数据库是西门子低代码平台的内置功能,不同数据库的连接方式大同小异,本文以SQL Server为例讲解。
安装清单:
Mendix9.6.10下载地址:https://docs.mendix.com/releasenotes/studio-pro/9.6/#9610
其他版本下载:https://marketplace.mendix.com/link/studiopro/
Microsoft SQL Server下载地址:https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads(推荐Developer版)
Database Connector:可在Mendix Studio Pro中点击右上角购物车图标,进入App Store界面(内嵌在Mendix Studio Pro工作区当中),在左边目录中选择 Connectors->Data或者直接在搜索框输入 Database, 找到“Database Connector”,进行下载(Mendix Marketplace - Database Connector)。下载地址:Database | Mendix Documentation
Mendix 连接数据库需使用的JDBC驱动程序:发行说明 - JDBC Driver for SQL Server | Microsoft Docs。下载地址:发行说明 - JDBC Driver for SQL Server | Microsoft Docs
目录
1. 介绍..................................................... 3
1.1什么是 Mendix Studio Pro?.............................. 3
1.2 什么是微流?......................................... 3
1.3 什么是Database Connector?............................ 3
1.4 什么是Microsoft SQL Server?............................ 3
1.5 开发环境:.......................................... 3
2. 实操..................................................... 3
2.1 数据库建表.......................................... 3
2.2 创建Mendix项目...................................... 4
2.3 连接数据库准备....................................... 5
2.3.1 JDBC驱动...................................... 6
2.3.2 创建常量——URL地址........................... 6
2.3.3 创建常量——用户名............................. 6
2.3.4 创建常量——用户登陆密码....................... 6
2.3.5 创建实体....................................... 7
2.4 功能实现............................................ 8
2.4.1 数据库数据显示................................. 8
2.4.2实现增加功能.................................. 11
2.4.3实现删除功能.................................. 14
2.4.4 实现编辑功能.................................. 15
- 介绍
1.1什么是 Mendix Studio Pro?
Mendix Studio Pro是创建、测试、运行Mendix应用的开发工具,它不仅可以完成Mendix Studio可以完成的在线开发,还可以进行脱机开发,项目会存储在本地存储介质上。Mendix Studio Pro开发环境需要下载安装包,进行本地安装后方可使用,需要登录账户才能正常使用。Mendix Studio Pro可以与Mendix Studio进行协作开发。
1.2 什么是微流?
微流允许表达应用程序的逻辑,可以执行诸如创建和更新对象、显示页面和做出选择等操作。西门子低代码中的微流允许用户构建自定义逻辑,西门子低代码在平台中已经有很多默认的功能,当用户想扩展这些功能并创建一些自定义的强大逻辑时,可以通过构建一个微流来支持。
微流类似C++/Java 的函数,以绿色圆圈为Start event,红色圆圈为End event,一个微流只能有一个Start event,可以有多个End event。
1.3 什么是Database Connector?
Database Connector是Mendix Marketplace的热门组件之一,可用于无缝连接到外部数据库,而不会限制您选择数据库或SQL语言,从而使您可以将外部数据直接合并到Mendix应用程序中。Database Connector可以从Mendix的Marketplace快速下载并导入到自己的项目中去。
1.4 什么是Microsoft SQL Server?
SQL Server数据库是Microsoft开发设计的一个关系数据库智能管理系统(RDBMS),现在是全世界主流数据库之一;SQL Server数据库具备方便使用、可伸缩性好、相关软件集成程度高等优势,能够从单一的笔记本上运行或以高倍云服务器集群为基础,或在这两者之间任何东西上运行。尽管说成“任何东西”,可是依然要考虑有关的软件和硬件配置;
SQL Server应用集成化的商务智能(BI)专用工具提供了企业级的数据管理服务。Microsoft SQL Server数据库引擎为关系型数据和结构化数据提供了更可靠安全的存储功能,使用户能够搭建和管理用于业务流程的高可用性和性能卓越的程序。
1.5 开发环境:
系统:Windows 11
mendix 版本 Mendix Studio Pro 9.6.10
SQL Server版本:2019
利用Microsoft SQL Server Management Studio设计数据库、数据表。在数据表中存放实现增删改查功能的数据。
以下为数据表StudentInfo表结构:
Tips:若利用Microft SQL Server存放数据,应确保客户端TCP/IP协议已启用。并将端口设为1433,如下图所示。
-
- 创建Mendix项目
打开Mendix Studio Pro,Create New APP -->blank web app (可根据个人需求选择主页模板)
APP Settings:
建好项目后,在Mendix Studio Pro页面右上角点击右上角购物车图标进入APP Store界面,在左边Categories(目录)中,选择Connectors,选择Data,找到Database Connector并下载。Database Connector -->Download -->Import (Tips:Import Module中Action为Add as a new module)
在Database | Mendix Documentation中得知连接数据库需完成以下工作:
- 将数据库的JDBC驱动.jar文件放在创建的Mendix程序的userlib目录下
- 创建数据库访问常量存放指向数据库的URL地址
- 创建数据库访问常量存放数据库用户名
- 创建数据库访问常量存放数据库用户登录密码
- 在Domain module中创建实体,实体属性应与数据表字段相对应,该实体用于执行数据库查询结果。
-
- JDBC驱动
-
下载相关的JDBC driver/驱动文件,并解压放到Mendix项目的userlib目录下,以Microsoft SQL Server为例,可在发行说明 - JDBC Driver for SQL Server | Microsoft Docs选择相匹配的JDBC,下载后解压,找到相应的JDBC驱动文件(我这里是mssql-jdbc-6.4.0.jre8),将文件放入创建的Mendix程序的文件目录的Userlib下(我这里是C:\Users\lenovo\Documents\Mendix\Task\userlib)。
创建常量,右键MyFirstModule -->Add other -->Constant,存放数据库URL地址。
创建常量,右键MyFirstModule -->Add other -->Constant,存放数据库用户名。此处利用了SQL Server自带的管理员用户sa,也可个人在Microsoft SQL Server Management Studio中创建新的数据库用户,但应注意权限问题。
创建常量,右键MyFirstModule -->Add other -->Constant,存放数据库用户登陆密码。密码与用户名相对应,比如我登陆sa用户,密码应为数据库sa用户的密码。
Tips:设置用户名、密码常量时应在Microsoft SQL Server Management Studio中确保对应的数据库用户状态为已启用
创建实体,实体Attribute应与数据表字段相对应,数据类型保持一致,持久化选择NO。用于存放从数据库读取的数据。这里创建StudentInfo实体与数据表StudentInfo表结构相对应。
至此,数据库连接准备工作已完成。
主要任务:新增页面,用于数据库数据显示,并提供增删改查入口。同时应添加新增页面入口,有两种方式:(1)导航栏进入;(2)主页添加button,event为show a page,连接到新增页面。
操作步骤如下:
STEP 1:这里新增页面为StudentInfoOverview,利用导航栏进入页面。
STEP 2:调整新增页面布局,删除不需要的控件,修改页面抬头,选中页面中ListView 控件,从右面的工具栏中选择Connector,将之前创建的实体(这里是StudentInfo)拖到Listview控件中;将此ListView的Data Sourse设置成微流模式,并新建一个show微流(这里命名为StudentInfo_Show)。
STEP 3:StudentInfo_Show微流设计如下:
逻辑:定义参数接收从数据库查询出来的数据,查询数据库输出结果为定义的参数类型表。
所需控件及配置如下:
①新增Create object
②新增Execute Query
定义Execute Query中编辑Input时,选择Edit,输入@即可手动选择定义好的常量,这里Jdbc url,User name,Password均使用这种方式选择对应的常量。
Sql部分,输入SQL查询语句查询数据库数据表信息,这里为:
'Select StudentID,StudentName from StudentInfo'
③修改End Event
在微流终点选择输出类型,值为在Execute Query中Output中定义的List Name,输入$可选择。
至此,数据库数据显示功能已完成。
点击Run Locally编译试运行。
点击View App显示界面,进入StudentInfoOverview界面即可看到数据库中的学生信息。
2.4.2实现增加功能
主要任务:将StudentInfoOverview页面右上角的button定义为Add按钮,点击Add则弹出新的页面,定义为StudentInfoNew;在StudentInfoNew页面中填写需要添加的信息,填完后点击Save按钮即可保存成功,并跳出信息提示保存成功。
操作步骤如下:
STEP 1:定义Add按钮。
STEP 2:新建页面StudentInfoNew。
STEP 3:定义Save按钮,响应事件为新建的微流,命名为StudentInfo_UpdateInsert。
STEP 4:微流StudentInfo_UpdateInsert定义如下:
逻辑:定义插入数据库需要的所有参数,将数据插入数据库实现向数据库插入在页面StudentInfoNew上输入的信息
所需控件及配置如下:
①新增Create Variable
需定义变量存放StudentID和StudentName。
②新增Execute Statement
利用SQL语句将页面上的输入值(参数获取)插入到数据库中。
SQL语句:'Insert into StudentInfo(StudentID,StudentName)
VALUES('''+$StudentID+''','''+$StudentName+''')'
③新增Close page
④新增Show Message
2.4.3实现删除功能
主要任务:在显示的数据库信息后增加Delete按钮,设置删除按钮调用删除微流;定义删除微流,删除对应的数据库数据信息,并刷新页面。
具体操作步骤如下:
STEP 1:定义删除按钮属性以及布局
属性如下:
STEP 2:微流StudentInfo_Delete定义如下:
所需控件及配置如下:
①新增Execute statement:
SQL语句:'Delete from StudentInfo where StudentID='+$StudentInfo/StudentID+';'
②新增Show page
完成删除后刷新页面的功能。
2.4.4 实现编辑功能
主要任务:设置Edit按钮位于每一条学生信息的右方,点击Edit按钮进入编辑页面,点击save按钮调用编辑微流保存已修改信息。
由以上表述可知,编辑功能和添加功能可共用同一个StudentInfoNew页面,与添加功能不同的是,编辑时各属性字段为数据库信息。
具体操作步骤如下:
STEP 1:新增Edit按钮,布局以及属性定义如下:
STEP 2:新建StudentInfo_Edit微流
逻辑:先利用Execute Query控件按照StudentID读取到相对应数据库信息,利用Show page控件跳转StudentInfoNew页面编辑读取到的数据库信息。
所需控件及属性定义如下:
①新增Execute query
SQL语句:'Select * from StudentInfo where StudentID='+$StudentInfo/StudentID+';'
②新增Show page,跳转到StudentInfoNew页面
STEP 3:修改微流StudentInfo_UpdataInsert。
在StudentInfoNew页面完成数据编辑后点击Save按钮,会调用之前定义的StudentInfo_UpdataInsert,此处要对此微流进行修改,实现:若StudentID已存在,则修改信息,若StudentID不存在,则添加信息。
逻辑:获取参数;读取数据库;若读取结果为空则在数据库中添加该条记录,否则编辑数据库中已有的记录,操作完成后弹出弹窗显示状态。
修改所需控件及属性定义如下:
①Execute Query
SQL语句:'Select * from StudentInfo where StudentID='''+$StudentID+''''
②新增Decision,对Execute Query得到的结果Stu进行判断。
③新增Execute statement(此为Update线,Insert线与之前一样)
SQL语句:'Update StudentInfo SET StudentName='''+$StudentInfo/StudentName+'''
where StudentID = '''+$StudentID+'''; '
④新增Close page
⑤新增Show Message
至此,编辑功能已实现。
2.4.5 实现查询功能
主要任务:
- 需定义一个Search实体存放查询输入框中输入的文字。
2. 设计StudentInfoOverview页面中的Search按钮(相应事件应为创建一个Search实体并跳转到新建的SearchOverview页面)
3. 设计SearchOverview页面中的Search按钮(响应事件为新建的StudentInfo_Search微流)。
4. 定义StudentInfo_Search微流。.
具体操作步骤如下:
STEP 1:在Domain model中,添加实体Search:
STEP 2:新增Search按钮,布局以及属性定义如下:(页面为StudentInfoOverview)
STEP 3:新增SearchOverview页面
STEP 4:定义SearchOverview页面中的Search按钮
STEP 5:新增StudentInfo_Search微流
逻辑:在数据库中查询输入的StudentID,若存在则将结果显示在StudentInfoSearchResult页面中,若不存在则显示查询失败。
所需控件及属性定义如下:
①新增Create Object
②新增Execute Query
SQL语句:'Select StudentID,StudentName from StudentInfo where StudentID='+$Search/SearchKey+';'
③新增Decision,对Execute Query得到的结果SearchStudentInfo进行判断。
④新增List Operation。Operation设置为Find。
⑤新增Show Page,跳转至新建的StudentInfoSearchResult页面。
⑥新建的StudentInfoSearchResult页面如下:
至此,查询功能已实现。
3.结果展示