Blame view

jeecg-boot/README.md 5.5 KB
1
Jeecg-Boot 低代码开发平台
2
3
===============
4
当前最新版本: 2.4.0(发布日期:20201201)
5
6
7


## 后端技术架构
8
- 基础框架:Spring Boot 2.3.5.RELEASE
9
10
- 持久层框架:Mybatis-plus 3.4.1
11
12
- 安全框架:Apache Shiro 1.7.0,Jwt 3.11.0
13
14
- 数据库连接池:阿里巴巴Druid 1.1.22
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

- 缓存框架:redis

- 日志打印:logback

- 其他:fastjson,poi,Swagger-ui,quartz, lombok(简化代码)等。



## 开发环境

- 语言:Java 8

- IDE(JAVA): Eclipse安装lombok插件 或者 IDEA

- 依赖管理:Maven
32
- 数据库:MySQL5.7+  &  Oracle 11g
33
34
35
36

- 缓存:Redis
zhangdaihao authored
37
38
39
## 技术文档
40
- 在线演示 :  [http://boot.jeecg.com](http://boot.jeecg.com)
zhangdaihao authored
41
zhangdaiscott authored
42
- 在线文档:  [http://doc.jeecg.com](http://doc.jeecg.com)
zhangdaihao authored
43
zhangdaiscott authored
44
- 常见问题:  [http://jeecg.com/doc/qa](http://jeecg.com/doc/qa)
zhangdaihao authored
45
46
- QQ交流群 :  ③816531124、①284271917、②769925425
zhangdaihao authored
47
48
49
50
51


## 专项文档

#### 一、查询过滤器用法
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

```
QueryWrapper<?> queryWrapper = QueryGenerator.initQueryWrapper(?, req.getParameterMap());
```

代码示例:

```

	@GetMapping(value = "/list")
	public Result<IPage<JeecgDemo>> list(JeecgDemo jeecgDemo, @RequestParam(name = "pageNo", defaultValue = "1") Integer pageNo, 
	                                     @RequestParam(name = "pageSize", defaultValue = "10") Integer pageSize,
			HttpServletRequest req) {
		Result<IPage<JeecgDemo>> result = new Result<IPage<JeecgDemo>>();

		//调用QueryGenerator的initQueryWrapper
		QueryWrapper<JeecgDemo> queryWrapper = QueryGenerator.initQueryWrapper(jeecgDemo, req.getParameterMap());

		Page<JeecgDemo> page = new Page<JeecgDemo>(pageNo, pageSize);
		IPage<JeecgDemo> pageList = jeecgDemoService.page(page, queryWrapper);
		result.setSuccess(true);
		result.setResult(pageList);
		return result;
	}

```



- 查询规则 (本规则不适用于高级查询,高级查询有自己对应的查询类型可以选择 )

| 查询模式           | 用法    | 说明                         |
|---------- |-------------------------------------------------------|------------------|
| 模糊查询     | 支持左右模糊和全模糊  需要在查询输入框内前或后带\*或是前后全部带\* |    |
| 取非查询     | 在查询输入框前面输入! 则查询该字段不等于输入值的数据(数值类型不支持此种查询,可以将数值字段定义为字符串类型的) |    |
| \>  \>= < <=     | 同取非查询 在输入框前面输入对应特殊字符即表示走对应规则查询 |    |
| in查询     | 若传入的数据带,(逗号) 则表示该查询为in查询 |    |
| 多选字段模糊查询     | 上述4 有一个特例,若某一查询字段前后都带逗号 则会将其视为走这种查询方式 ,该查询方式是将查询条件以逗号分割再遍历数组 将每个元素作like查询 用or拼接,例如 现在name传入值 ,a,b,c, 那么结果sql就是 name like '%a%' or name like '%b%' or name like '%c%' |    |
zhangdaihao authored
92
#### 二、AutoPoi(EXCEL工具类-EasyPOI衍变升级重构版本)
93
94
95

  [在线文档](https://github.com/zhangdaiscott/autopoi)
96
97
zhangdaihao authored
98
#### 三、代码生成器
99
zhangdaihao authored
100
> 功能说明:   一键生成的代码(包括:controller、service、dao、mapper、entity、vue)
101
zhangdaihao authored
102
 - 模板位置: src/main/resources/jeecg/code-template
zhangdaiscott authored
103
 - 技术文档: http://doc.jeecg.com/2043916
104
105
106
zhangdaihao authored
107
#### 四、编码排重使用示例
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157

重复校验效果:
![输入图片说明](https://static.oschina.net/uploads/img/201904/19191836_eGkQ.png "在这里输入图片标题")

1.引入排重接口,代码如下:  

```
import { duplicateCheck } from '@/api/api'
  ```
2.找到编码必填校验规则的前端代码,代码如下:  

```
<a-input placeholder="请输入编码" v-decorator="['code', validatorRules.code ]"/>

code: {
            rules: [
              { required: true, message: '请输入编码!' },
              {validator: this.validateCode}
            ]
          },
  ```
3.找到rules里validator对应的方法在哪里,然后使用第一步中引入的排重校验接口.  
  以用户online表单编码为示例,其中四个必传的参数有:  

```
  {tableName:表名,fieldName:字段名,fieldVal:字段值,dataId:表的主键},
  ```
 具体使用代码如下:  

```
    validateCode(rule, value, callback){
        let pattern = /^[a-z|A-Z][a-z|A-Z|\d|_|-]{0,}$/;
        if(!pattern.test(value)){
          callback('编码必须以字母开头,可包含数字、下划线、横杠');
        } else {
          var params = {
            tableName: "onl_cgreport_head",
            fieldName: "code",
            fieldVal: value,
            dataId: this.model.id
          };
          duplicateCheck(params).then((res)=>{
            if(res.success){
             callback();
            }else{
              callback(res.message);
            }
          })
        }
      },
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
```


## docker镜像用法
 ``` 
注意: 如果本地安装了mysql和redis,启动容器前先停掉本地服务,不然会端口冲突。
       net stop redis
       net stop mysql

# 1.修改项目配置文件 application.yml
    active: docker

# 2.先进JAVA项目根路径 maven打包
    mvn clean package


# 3.构建镜像__容器组(当你改变本地代码,也可重新构建镜像)
    docker-compose build

# 4.配置host

    # jeecgboot
    127.0.0.1   jeecg-boot-redis
    127.0.0.1   jeecg-boot-mysql
    127.0.0.1   jeecg-boot-system

# 5.启动镜像__容器组(也可取代运行中的镜像)
    docker-compose up -d

# 6.访问后台项目(注意要开启swagger)
    http://localhost:8080/jeecg-boot/doc.html
```