>本章介绍数据源用法 [TOC] ## 一、SQL数据源 >[danger] 当是字符串的时候$或者#需要加上单引号或双引号,如'${}'、'#{}' 1、$是用来传递参数的,如: ``` select username,realname from test where username='${username}' ``` 如果username为admin,那么后台替换完成后sql语句变成 ``` select username,realname from test where username='admin' ``` 1) 在数据源中配置文本框输入,可以在报表参数中填写默认值和查询条件,如图一所示 ![](https://img.kancloud.cn/36/c4/36c4101d93d1a047cd54d6c6c1142b30_1812x746.png) :-: 图一 在预览页面可以直接在查询栏中进行查询 2)效果展示 ![](https://img.kancloud.cn/96/8c/968cbcde7eda2b67354bae49c0d363aa_1481x982.png) 2、#使用来代表系统变量的,如当前登录登录人: [系统变量自定义配置文档](http://report.jeecg.com/2159712) 1)sysUserCode代表当前登录人,本示例是当前登录人admin ``` select * from sys_user where username='#{sysUserCode}' ``` 后台替换完成后sql语句变成 ``` select * from sys_user where username='admin' ``` 2)效果展示 ![](https://img.kancloud.cn/6f/2e/6f2ebc43ca9730cd485f6f04e24cbc74_1168x760.png) 3、存储过程 在SQL 数据集配置界面,在报表SQL栏输入表达式 CALL [name](${param}, ...),CALL为开启存储过程 [name]:存储过程名称 param:传入的参数(多个拼接逗号即可,如username,realname) 如: ``` CALL test_information( '${username}', '${realname}' ) ``` ![](https://img.kancloud.cn/68/3c/683cf7259dc24d37c865ddb99965ede6_1605x219.png) 弹窗设置默认值 ![](https://img.kancloud.cn/68/5c/685cc89ffd942a802998392f8beba623_1158x410.png) SQL解析字段 ![](https://img.kancloud.cn/26/d5/26d55d52b75a82cdc1f5c853873b28ba_1859x724.png) ## 二、API数据源 1、$是用来传递参数的,如: 多个参数用&拼接 ``` http://192.168.1.107:8080/jeecg-boot/jmreport/test/getUserMsg?cname='${cname}'&did='${did}' ``` 当api为牛奶,did为1时后台替换完成后api语句变成 ``` http://192.168.1.107:8080/jeecg-boot/jmreport/test/getUserMsg?cname='牛奶'&did='1' ``` ![](https://img.kancloud.cn/da/a2/daa2405d625e99d37ea2ab8b03de05b9_1761x370.png) 点击api解析即可解析出来字段,在参数中设置查询即可在预览页面进行查询搜索 ![](https://img.kancloud.cn/2b/99/2b9997a50c5138633fd4d7006fc43d63_1856x759.png) 效果展示 ![](https://img.kancloud.cn/4a/9d/4a9d0166ae944e4771e9ef2bd50ac04e_1481x982.png) 2、#使用来代表系统变量的,如系统时间: ``` http://192.168.1.107:8080/jeecg-boot/jmreport/test/getUserMsg?riqi=#{sysDateTime} ``` 如当前系统时间时2021-08-11 17:22:30,那么在后台就会被替换成 ``` http://192.168.1.107:8080/jeecg-boot/jmreport/test/getUserMsg?riqi=2021-08-11 17:22:30 ``` ![](https://img.kancloud.cn/d8/37/d837501be565869de2cd2075264f2e7a_1772x770.png) 展示效果 ![](https://img.kancloud.cn/b0/97/b097f2102d8445d128405411ffc1dcee_936x583.png) 3、{{ domainURL }} 可以替换当前ip、端口号、项目名称如: ``` {{ domainURL }} /jmreport/test/getUserMsg ``` 在后台就会被替换成 ``` http://192.168.1.107:8080/jeecg-boot/jmreport/test/getUserMsg ``` ![](https://img.kancloud.cn/cb/71/cb711fa3b5b9dd5828ff6da7c8daa38f_1580x823.png) ## 三、MogoDb用法 1、在数据源维护中创建MogoDb数据源,点击测试出现测试成功即可 ``` 数据源类型:MogoDb 数据源地址: 地址:端口号/数据库名称,如:192.168.1.103:27107/test ``` ![](https://img.kancloud.cn/58/02/580220817ca80fef98177157266936e1_797x695.png) 2、MogoDb支持的写法 [table]:创建的集合table query :为可选项,设置查询操作符指定查询条件; ``` db.getCollection([table]).find(query) 示例: db.getCollection('user').find({}) db.getCollection('user').find({name: '张三'}) //条件查询 db.getCollection('user').find({name: /张/, age:{$gt:10} }) //模糊、大于小于查询 db.getCollection('user').find({name: /张/}).limit(1) //分页 db.getCollection('user').find({name: /张/}).sort({age:-1}) //排序 ``` 3、在数据源页配置面选择MogoDb,并在报表SQL栏输入支持的语法 ![](https://img.kancloud.cn/a3/0b/a30bfdaa441290a327086f82fd517c0f_1912x798.png) 4、传参设置 配置$参数传递,如${name} ``` db.getCollection('user').find({ name:${name}}) ``` 设置参数以及默认值 ![](https://img.kancloud.cn/8a/b0/8ab063c516aab7db16fdd740466ee521_1917x860.png) ## 四、redis用法 1、在数据源维护创建redis数据源,点击测试出现测试成功即可 ``` 数据源类型:redis, 数据源地址:地址加上端口号(不需要http) 如 127.0.0.1:6379 ``` ![](https://img.kancloud.cn/51/a0/51a047b71211b1f1442d823e916663c2_1039x718.png) 2、在数据源页配置面选择redis,并在报表SQL栏输入redis对应的key >[danger] redis取值为字符串类型的json数组对象,否则解析不出来字段。示例如下 : ``` [ { "username": "张三", age: 20 },{ "username": "李四", age: 22 } ] ``` 在sql解析即可展示出字段 ![](https://img.kancloud.cn/87/bd/87bd9f11bfb230b7c55c55db718c2b2c_1879x790.png)