更新diboot-core相关文档

This commit is contained in:
Zhaoyang 2019-11-03 22:01:06 +08:00
parent bb85d4fc06
commit 45620a7a18
8 changed files with 586 additions and 30 deletions

View File

@ -23,10 +23,7 @@ module.exports = {
['/guide/diboot-core/Mapper及自定义', 'Mapper及自定义'],
['/guide/diboot-core/接口的艺术Controller', '接口的艺术Controller'],
['/guide/diboot-core/查询条件DTO', '查询条件DTO'],
['/guide/diboot-core/单表关联', '单表关联'],
['/guide/diboot-core/多表关联', '多表关联'],
['/guide/diboot-core/数据字典关联', '数据字典关联'],
['/guide/diboot-core/异常处理', '异常处理'],
['/guide/diboot-core/无SQL关联', '无SQL关联'],
['/guide/diboot-core/常用工具类', '常用工具类']
]
}
@ -50,8 +47,8 @@ module.exports = {
collapsable: true,
sidebarDepth: 2,
children: [
['/guide/diboot-devtools/安装', '安装'],
['/guide/diboot-devtools/启动', '启动'],
['/guide/diboot-devtools/介绍', '介绍'],
['/guide/diboot-devtools/开始使用', '开始使用'],
['/guide/diboot-devtools/数据表管理', '数据表管理'],
['/guide/diboot-devtools/代码生成与更新', '代码生成与更新']
]
@ -61,17 +58,11 @@ module.exports = {
nav: [{
text: '首页', link: '/'
}, {
text: '学习',
items: [
{text: 'diboot-core指南', link: '/guide/diboot-core/安装'},
{text: 'diboot-shiro指南', link: '/guide/diboot-shiro/安装'},
{text: 'diboot-devtools指南', link: '/guide/diboot-devtools/安装'}
]
text: 'core指南',
link: '/guide/diboot-core/安装'
}, {
text: 'API',
items: [
{text: 'diboot-core', link: '/api/diboot-core/'}
]
text: 'devtools指南',
link: '/guide/diboot-devtools/介绍'
},{
text: '1.x', link: 'https://www.diboot.com'
}, {

View File

@ -1 +1,94 @@
# Mapper及自定义
# Mapper及自定义
## Gradle设置
> 如果您使用了gradle并且您的Mapper.xml文件实在java代码目录下那么除了MapperScan的注解之外还需要对gradle进行相关设置使其能够找到相对应的Mapper.xml文件
```groovy
sourceSets {
main {
resources {
srcDirs "src/main/java"
include '**/*.xml'
include '**/*.dtd'
include '**/*.class'
}
resources {
srcDirs "src/main/resources"
include '**'
}
}
}
```
## Maven设置
> 如果您使用Maven作为您的构建工具并且您的Mapper.xml文件是在java代码目录下那么除了MapperScan的注解之外还需要再项目中的pom.xml文件中的添加如下配置使其能够找到您的Mapper.xml文件
```xml
<build>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
<include>**/*.dtd</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
```
## Mapper类
> Mapper类需要继承diboot-core中的BaseCrudMapper基础类并传入相对应的实体类
```java
package com.example.demo.mapper;
import com.diboot.core.mapper.BaseCrudMapper;
import com.example.demo.entity.Demo;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DemoMapper extends BaseCrudMapper<Demo> {
}
```
* BaseCrudMapper类继承了mybatis-plus提供的BaseMapper类对于BaseCrudMapper中已有的相关接口可以参考[mybatis-plus关于Mapper类的文档](https://mybatis.plus/guide/crud-interface.html#mapper-crud-%E6%8E%A5%E5%8F%A3)
## Mapper.xml文件
> 默认的Mapper.xml文件如下所示
```java
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "./mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.DemoMapper">
</mapper>
```
## 自定义Mapper接口
> 自定义Mapper接口可以使用mybatis增加mapper接口的处理方案
```java
package com.example.demo.mapper;
import com.diboot.core.mapper.BaseCrudMapper;
import com.example.demo.entity.Demo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
@Mapper
public interface DemoMapper extends BaseCrudMapper<Demo> {
int forceDeleteEntities(@Param("name") String name);
}
```
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "./mybatis-3-mapper.dtd">
<mapper namespace="com.example.demo.mapper.DemoMapper">
<update id="forceDeleteEntities" parameterType="String">
DELETE FROM demo WHERE name=#{name}
</update>
</mapper>
```

View File

@ -1 +1,206 @@
# Service与实现
# Service与实现
## Service类
> 对于一个自定义的entity您可以像以往的习惯一样开发service相关代码如果需要使用diboot-core中封装好的一些接口需要继承diboot-core中的BaSeService类并传入对应的实体类。
```java
package com.example.demo.service;
import com.diboot.core.service.BaseService;
import com.example.demo.entity.Demo;
public interface DemoService extends BaseService<Demo> {
}
```
> 提示BaseService类并没有继承mybatis-plus中的IService接口如果需要使用mybatis-plus中的IService接口需要单独继承IService类.
## 相关接口
### getEntity
```java
T getEntity(Serializable id);
```
> getEntity接口可以通过一个主键参数得到数据库中的一个实体
```java
Demo demo = demoService.getEntity(id);
```
### createEntity
```java
boolean createEntity(T entity);
```
> createEntity接口将一个entity添加到数据库中返回成功与失败。通过该接口创建记录成功后会将新建记录的主键自动设置到该entity中
```java
boolean success = demoService.createEntity(demo);
System.out.println(demo.getId());
// 输出结果
===> 1001
```
### updateEntity
```java
boolean updateEntity(T entity);
boolean updateEntity(T entity, Wrapper updateCriteria);
boolean updateEntity(Wrapper updateWrapper);
```
* updateEntity接口可以根据该实体的主键值来更新整个entity的所有字段内容到数据库返回成功与失败
```java
boolean success = demoService.updateEntity(demo);
```
* 该接口也可以通过条件更新对应的字段(可以通过条件设置需要更新的字段,以及需要更新记录的条件限制),返回成功与失败,如:
```java
/*** 将demo中所有可用的记录的name都更新为“张三” */
Demo demo = new Demo();
demo.setName("张三");
// 设置更新条件
LambdaQueryWrapper<Demo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Demo::isDeleted, false);
// 执行更新操作
boolean success = demoService.updateEntity(demo, wrapper);
System.out.println(success);
// 输出
===> true
```
* 该接口也可以通过更新条件来执行更新,返回成功与失败,对于更新条件可以参考[mybatis-plus的UpdateWrapper文档](https://mybatis.plus/guide/wrapper.html#updatewrapper)。
### createOrUpdateEntity
```java
boolean createOrUpdateEntity(T entity);
```
> 该接口新建或更新一个实体到数据库,如果该实体主键有值,则更新到数据库,若主键无值,则新建一条记录到数据库,如果主键有值,但数据库中未找到,则报错,如:
```java
boolean success = demoService.createOrUpdateEntity(demo);
System.out.println(success);
// 输出
===> true
```
### createOrUpdateEntities
```java
boolean createOrUpdateEntities(Collection entityList);
```
> 该接口将对一个Collection类型的列表中的每一个实体进行新建或更新到数据库
```java
boolean success = demoService.createOrUpdateEntities(demoList);
System.out.println(success);
// 输出
===> true
```
### deleteEntity
```java
boolean deleteEntity(Serializable id);
```
> 该接口通过主键字段对实体进行删除操作,如:
```java
boolean success = demoService.deleteEntity(demo.getId());
System.out.println(success);
// 输出
===> true
```
### deletedEntities
```java
boolean deleteEntities(Wrapper queryWrapper);
```
> 该接口通过查询条件对符合该查询条件的所有记录进行删除操作,如:
```java
/*** 删除所有名称为“张三”的记录 **/
// 设置查询条件
LambdaQueryWrapper<Demo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Demo::getName, "张三");
// 执行删除操作
boolean success = demoService.deleteEntities(wrapper);
System.out.println(success);
// 输出
===> true
```
### getEntityListCount
```java
int getEntityListCount(Wrapper queryWrapper);
```
> 该方法将查询到符合条件的所有记录总条数返回int类型的结果
```java
/*** 查询名称为“张三”的记录总条数 **/
LambdaQueryWrapper<Demo> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(Demo::getName, "张三");
// 获取总条数
int count = demoService.getEntityListCount(wrapper);
System.out.println(count);
// 输出
===> true
```
### getEntityList(Wrapper queryWrapper)
* 该方法查询符合条件的所有实体列表,返回查询出的实体列表。
```java
List<T> getEntityList(Wrapper queryWrapper);
```
* 该方法通过查询条件和分页参数查询出当前页的记录列表,返回查询出的实体列表。
```java
List<T> getEntityList(Wrapper queryWrapper, Pagination pagination);
```
### getEntityListLimit
> 该方法查询符合条件的指定数量的实体列表,返回查询出的实体列表。
```java
List<T> getEntityListLimit(Wrapper queryWrapper, int limitCount);
```
### getEntityListByIds
> 该方法通过主键列表,查询出该主键列表的所有实体列表,返回查询出的实体列表。
```java
List<T> getEntityListByIds(List ids);
```
### getMapList
> 该方法通过查询条件查询和分页参数出符合条件的Map列表其中分页参数是可选参数返回查询出的Map列表。
```java
List<Map<String, Object>> getMapList(Wrapper queryWrapper);
List<Map<String, Object>> getMapList(Wrapper queryWrapper, Pagination pagination);
```
### getKeyValueList
> 该方法通过查询条件查询出查询出符合条件的 KeyValue 列表该KeyValue是一个键值对所以再查询条件中需要指定需要查询的字段。
```java
List<KeyValue> getKeyValueList(Wrapper queryWrapper);
```
### getViewObject
> 该方法通过主键查询出该主键VO实例返回一个VO实例。
提示如果该VO通过相应注解绑定了数据字典关联或者数据表关联那么该方法也将查询出相对应的数据字典信息或者关联数据信息等。
```java
<VO> VO getViewObject(Serializable id, Class<VO> voClass);
```
### getViewObjectList
> 该方法通过查询条件分页条件查询出符合该查询条件的当页数据列表返回一个VO实例列表。
提示如果该VO通过相应注解绑定了数据字典关联或数据表关联那么该方法查询出的VO列表中每一个VO元素也将有对应的数据字典信息或关联表信息等。
```java
<VO> List<VO> getViewObjectList(Wrapper queryWrapper, Pagination pagination, Class<VO> voClass);
```
### bindingFieldTo
```java
FieldBinder<T> bindingFieldTo(List voList);
EntityBinder<T> bindingEntityTo(List voList);
```
### bindingEntityListTo
```java
EntityListBinder<T> bindingEntityListTo(List voList);
```

View File

@ -0,0 +1,102 @@
# 无SQL关联
> diboot-core支持通过注解实现数据字典关联、单数据表关联、多数据表关联等功能。
## 如何开始
> 您可以创建完一个表相对应的实体类、service接口、mapper等代码后创建一个VO类来尝试该功能
```java
package com.example.demo.vo;
import com.diboot.core.binding.annotation.BindDict;
import com.diboot.core.binding.annotation.BindEntity;
import com.diboot.core.binding.annotation.BindEntityList;
import com.diboot.core.binding.annotation.BindField;
import com.example.demo.entity.Demo;
import java.util.List;
public class DemoVO extends Demo {
private static final long serialVersionUID = 5476618743424368148L;
}
```
:::warning
注:@BindDict注解需要依赖dictionary表可配置参数 diboot.core.init-sql=true 初次启动时starter会自动安装 init-{db}.sql。 如不支持自动安装的数据库,需手动执行 diboot-core-*.jar/META-INF/sql/init-{db}.sql 。
:::
## 处理方式
1. 通过在VO类中添加相关字段以及对应的关联绑定注解来定义我们的绑定类型和需要得到的结果以及额外的条件等信息
2. 绑定完成后,我们需要调用**RelationsBinder**类中的相关方法类执行这个绑定关系,我们目前提供了两种方式可供处理:
### 自动绑定关联
> 该关联会自动将相关信息查询并设置到voList中适用于对已有的voList做处理
```java
//List<MyUserVO> voList = ...;
RelationsBinder.bind(voList);
```
### 自动转型并绑定关联
> 该关联会自动将vo所继承的父类的实体列表进行绑定并自动转型为voList适用于对于非voList的实体列表等做处理
```java
// 查询单表获取Entity集合
// List<User> entityList = userService.list(queryWrapper);
List<MyUserVO> voList = RelationsBinder.convertAndBind(userList, MyUserVO.class);
```
## 数据字典关联
* 如果您的实体类中要关联一种数据字典类型的相关数据只需要使用BindDict注解即可实现数据字典的关联。
* 比如您需要关联字典类型为USER_STATUS的数据需要添加到VO类的字段如下所示
```java
@BindDict(type="USER_STATUS", field = "status")
private String statusLabel;
```
## 数据表关联
* 数据表关联按照关联表的方式上可分为**单数据表直接关联**与**中间表关联**这两种,中间表关联是一种通过中间表进行多对多的关联处理方案。
* 按照得到结果的形式可分为**绑定关联表中对应字段**和**绑定关联表实体**这两种关联方式,前者得到关联表中的目标字段,后者得到关联表的整个实体。
* **绑定关联表实体**即支持绑定单个实体,也支持绑定实体列表。
* 支持对关联查询添加附加条件。
> 直接关联与中间表关联只是传入的参数不同,而绑定表字段与绑定表实体是使用的不同注解。
### 绑定字段关联
> 绑定字段使用**@BindField**注解进行处理,将得到关联表的目标字段的值
* **单数据表直接关联**获取目标字段值,注解及参数示例如下:
```java
@BindField(entity=Department.class, field="name", condition="department_id=id AND parent_id>=0")
private String deptName;
```
* **通过中间表进行多表关联的级联关联**绑定字段
```java
@BindField(entity = Organization.class, field="name", condition="this.department_id=department.id AND department.org_id=id")
private String orgName;
```
### 绑定单个关联实体
> 绑定单个实体使用**@BindEntity**注解进行处理,将得到关联表对应的单个实体。
* **单数据表直接关联**获取目标单个实体,注解及参数示例如下:
```java
@BindEntity(entity = Department.class, condition="department_id=id")
private Department department;
```
* **通过中间表进行多表关联的级联关联**绑定对应单个实体,示例如下:
```java
@BindEntity(entity = Organization.class, condition = "this.department_id=department.id AND department.org_id=id AND department.deleted=0")
private Organization organization;
```
### 绑定实体列表
> 绑定实体列表使用**@BindEntityList**注解进行处理,将得到关联表对应的实体列表。
* **单数据表直接关联**获取目标的实体列表,注解及参数示例如下:
```java
// 关联其他表
@BindEntity(entity = Department.class, condition="department_id=id")
private List<Department> departmentList;
// 关联自身,实现无限极分类等
@BindEntityList(entity = Department.class, condition = "id=parent_id")
private List<Department> children;
```
* **通过中间表进行多表关联的级联关联**绑定对应的实体列表,示例如下:
```java
@BindEntityList(entity = Role.class, condition="this.id=user_role.user_id AND user_role.role_id=id")
private List<Role> roleList;
```

View File

@ -1 +1,33 @@
# 查询条件DTO
# 查询条件DTO
> 用户可自定义相关实体的DTO类将其在Controller类的相关方法中自动转换为QueryWrapper进行条件查询时使用
## 创建DTO
```java
public class UserDTO{
// 无@BindQuery注解默认会映射为=条件
private Long gender;
// 有注解,映射为注解指定条件
@BindQuery(comparison = Comparison.LIKE)
private String realname;
//... getter, setter方法等
}
```
## 自动转换
> Controller类中对相关路由的查询条件可进行如下绑定
```java
/**
* url参数示例: /list?gender=M&realname=张
* 将映射为 queryWrapper.eq("gender", "M").like("realname", "张")
*/
@GetMapping("/list")
public JsonResult getVOList(UserDto userDto) throws Exception{
//调用super.buildQueryWrapper(entityOrDto) 或者直接调用 QueryBuilder.toQueryWrapper(entityOrDto) 进行转换
QueryWrapper<User> queryWrapper = super.buildQueryWrapper(userDto);
//... 查询list
return new JsonResult(Status.OK, list);
}
```

View File

@ -0,0 +1,30 @@
# 介绍
## diboot-devtools是什么
> diboot-devtools是一个面向广大程序开发人员的开发助理有了她你可以摆脱重复性的Coding更专注于业务分析提高开发效率和代码质量。
## 我们的优势
* 支持常用的五大数据库MySQLMariaDBORACLESQLServer, PostgreSQL
* 安装简单只需在项目中引入devtools依赖添加相关配置信息后即可启动运行。
* 使用灵活,可按需启用更多功能。例如:是否开启引入 `Lombok`、`Swagger`等。
* 基于主流框架,并依赖全新优化内核[diboot-core](https://github.com/dibo-software/diboot-v2/tree/master/diboot-core),保证生成的代码更简洁,质量更高。
* 功能强大,更方便维护数据库表结构及关联关系,一键生成/更新代码。并以SQL方式保存更新内容便于维护项目、或者发布到多个不同数据库使用。
* 为SpringBoot量身打造微服务、单体应用等一网打尽。
* ORM框架使用Mybatis及更加方便的Mybatis-Plus应用广泛且强大。
## 我们能帮您
### 解决软件工程的一些问题
1. 将人们从繁琐的较为机械的工作中解放出来,将精力集中到更多需要人的创造性的工作上,促使人们更多地关注需求,做对的事。
2. 可以让人们不接触代码地创建出一些通过界面设计出的业务功能,让人们可以验证某些想法,更为快捷且低成本的试错。
3. 让开发人员免除基础的繁琐工作,提高开发效率,加快迭代速度,快人一步当然胜人一筹。
### 解决数据结构设计的一些问题
1. 传统的数据结构设计一般会借助一些软件来进行数据库设计这样可以确保数据库结构与需求关联更加紧密并且可视化但这也造成了一些问题比如数据库与代码是脱钩的只能依靠程序员通过编码去将数据库与代码给串起来但通过人力的形式在这之间操作效率是很低的。比如一个需求需要改一个数据库字段也需要开发人员在代码层面做对应的更改这其实也是一个容易出错的过程。但我们的diboot轻代码平台提供了基础的表的管理与设计功能不但可以通过该功能设计表结构以及表与表之间、表与数据字典之间的关联关系而且我们也内置了展示关联关系的E-R图模型展示让您对数据模型也一目了然。在这整个过程中这些数据结构也并不是独立存在的表结构字段、关联关系都已经在devtools中与系统做了映射更改数据结构后也能重新生成相对应的代码如果您已经更改了之前生成的代码也没关系也可以选择更新代码那么对数据结构的更改就直接反馈到代码中了而这一切只需要您点下提交按钮即可。
2. 由此可见我们diboot对于数据结构设计带来的改变是颠覆性的我们在devtools中提供了数据结构设计功能并且让数据模型可视化方便了数据结构的设计数据结构与代码结构是自动对应起来的中间少了人力的工作提高了效率减少了成本并且可靠性也极大地提升了这在系统上线之后的维护阶段也是意义巨大的。
### 解决软件开发效率的问题
1. 我们的core项目内置了一些常用工具以及一些底层模块基于这些工具和底层模块可以更快地开始开发工作对于简化一些业务流程的开发是很有帮助的。
2. 我们提供了一些常用的业务模块,开箱即用。
3. devtools提供了数据结构设计并生成基础代码以及接口代码在数据结构更改后也能智能地更改相关代码来适配这种数据结构更改。
### 解决后期维护过程的一些麻烦
1. 我们支持从已经更改过的代码来自动地更改字段等功能也具有更加简洁的底层框架diboot-core,以及为spring boot打造的diboot-core-starter。

View File

@ -3,14 +3,32 @@
## diboot-devtools是什么
> diboot-devtools是一个面向广大程序开发人员的开发助理有了她你可以摆脱重复性的Coding更专注于业务分析提高开发效率和代码质量。
## 我们的优势
* 支持常用的五大数据库MySQLMariaDBORACLESQLServer, PostgreSQL
* 安装简单只需在项目中引入devtools依赖添加相关配置信息后即可启动运行。
* 使用灵活,可按需启用更多功能。例如:是否开启引入 `Lombok`、`Swagger`等。
* 基于主流框架,并依赖全新优化内核[diboot-core](https://github.com/dibo-software/diboot-v2/tree/master/diboot-core),保证生成的代码更简洁,质量更高。
* 功能强大,更方便维护数据库表结构及关联关系,一键生成/更新代码。并以SQL方式保存更新内容。
* 基于Vue开发的前端页面性能更加高效、轻量化。
* 功能强大,更方便维护数据库表结构及关联关系,一键生成/更新代码。并以SQL方式保存更新内容便于维护项目、或者发布到多个不同数据库使用。
## 我们能帮您
## 引入依赖
### 解决软件工程的一些问题:
1. 将人们从繁琐的较为机械的工作中解放出来,将精力集中到更多需要人的创造性的工作上,促使人们更多地关注需求,做对的事。
2. 可以让人们不接触代码地创建出一些通过界面设计出的业务功能,让人们可以验证某些想法,更为快捷且低成本的试错。
3. 让开发人员免除基础的繁琐工作,提高开发效率,加快迭代速度,快人一步当然胜人一筹。
### 解决数据结构设计的一些问题
1. 传统的数据结构设计一般会借助一些软件来进行数据库设计这样可以确保数据库结构与需求关联更加紧密并且可视化但这也造成了一些问题比如数据库与代码是脱钩的只能依靠程序员通过编码去将数据库与代码给串起来但通过人力的形式在这之间操作效率是很低的比如一个需求需要改一个数据库字段也需要开发人员在代码层面做对应的更改这其实也是一个容易出错的过程。但我们的diboot轻代码平台提供了基础的表的管理与设计功能不但可以通过该功能设计表结构以及表与表之间、表与数据字典之间的关联关系而且我们也内置了展示关联关系的E-R图模型展示让您对数据模型也一目了然。在这整个过程中这些数据结构也并不是独立存在的表结构字段、关联关系都已经在devtools中与系统做了映射更改数据结构后也能重新生成相对应的代码如果您已经更改了之前生成的代码也没关系也可以选择更新代码那么对数据结构的更改就直接反馈到代码中了而这一切只需要您点下提交按钮即可。
2. 由此可见我们diboot对于数据结构设计带来的改变是颠覆性的我们在devtools中提供了数据结构设计功能并且让数据模型可视化方便了数据结构的设计数据结构与代码结构是自动对应起来的中间少了人力的工作提高了效率减少了成本并且可靠性也极大地提升了这在系统上线之后的维护阶段也是意义巨大的。
### 解决软件开发效率的问题
1. 我们的core项目内置了一些常用工具以及一些底层模块基于这些工具和底层模块可以更快地开始开发工作对于简化一些业务流程的开发是很有帮助的。
2. 我们提供了一些常用的业务模块,开箱即用。
3. devtools提供了数据结构设计并生成基础代码以及接口代码在数据结构更改后也能智能地更改相关代码来适配这种数据结构更改。
### 解决后期维护过程的一些麻烦。
1. 我们支持从已经更改过的代码来自动地更改字段等功能也具有更加简洁的底层框架diboot-core,以及为spring boot打造的diboot-core-starter。
## 开始使用
### 引入依赖
* Gradle项目
1. 添加仓库地址
在`build.gradle`的`repositories`配置项中添加仓库地址
@ -44,7 +62,7 @@ compile ("com.diboot:diboot-devtools-spring-boot-starter:2.0.3")
</dependency>
```
## 添加配置信息
### 添加配置信息
* 配置信息示例
```
# Spring 相关配置
@ -78,10 +96,5 @@ diboot.devtools.enable-diboot-shiro=false
* diboot.devtools.enable-lombok是否引入`Lombok`注解若设置true请注意添加Lombok依赖。
* diboot.devtools.enable-diboot-shiro是否引入`diboot-shiro`注解若设置true请注意添加diboot-shiro依赖。
## 初始化数据库
diboot-devtools在初次运行中会自动安装所需数据库表如果已经存在则不做操作。
* diboot_cloumn_extdiboot列定义扩展表
::: warning
目前支持MySQL数据库。
:::
### 初始化数据库
diboot-devtools在初次运行中会自动安装所需数据库表如果已经存在则不做操作。

View File

@ -0,0 +1,90 @@
# 开始使用
## 引入依赖
* Gradle项目
1. 添加仓库地址
在`build.gradle`的`repositories`配置项中添加仓库地址
```
repositories {
maven{ url 'http://maven.diboot.com/repository/devtools/'}
}
```
2. 引入依赖
```
compile ("com.diboot:diboot-devtools-spring-boot-starter:2.0.3")
```
* Maven项目
1. 添加仓库地址
在`pom.xml`的`repositories`标签中添加仓库地址
```
<repositories>
<repository>
<id>diboot-devtools</id>
<url>http://maven.diboot.com/repository/devtools/</url>
</repository>
</repositories>
```
2. 引入依赖
```
<dependency>
<groupId>com.diboot</groupId>
<artifactId>diboot-devtools-spring-boot-starter</artifactId>
<version>2.0.3</version>
</dependency>
```
## 添加配置信息
* 配置信息示例
```
# Spring 相关配置
spring.main.allow-bean-definition-overriding=true
# diboot-devtools 相关配置
diboot.devtools.codes-version=2.0.3
diboot.devtools.codes-copyright=dibo.ltd
diboot.devtools.codes-author=diboot
diboot.devtools.output-path-entity=diboot-example/src/main/java/com/diboot/example/entity/
diboot.devtools.output-path-vo=diboot-example/src/main/java/com/diboot/example/vo/
diboot.devtools.output-path-service=diboot-example/src/main/java/com/diboot/example/service/
diboot.devtools.output-path-mapper=diboot-example/src/main/java/com/diboot/example/mapper/
diboot.devtools.output-path-controller=diboot-example/src/main/java/com/diboot/example/controller/
diboot.devtools.output-path-sql=diboot-example/src/main/resources/
diboot.devtools.enable-swagger=false
diboot.devtools.enable-lombok=true
diboot.devtools.enable-diboot-shiro=false
```
* 配置信息说明
* spring.main.allow-bean-definition-overriding=true遇到同样名字的Bean时允许覆盖。
**以下diboot-devtools 相关配置均可根据实际情况填写**
* diboot.devtools.codes-version当前使用diboot-devtools的版本号。
* diboot.devtools.codes-copyright生成代码的版权归属显示在每个类或接口的注释中。
* diboot.devtools.codes-author生成代码的作者显示在每个类或接口的注释中。
* diboot.devtools.output-path-*:分别指向当前项目中`Entity`、`VO`、`Service及其实现类`、`Mapper及映射文件`、`Controller`、`SQL文件所在的路径`。
* diboot.devtools.enable-swagger是否引入`Swagger`注解若设置true请注意添加Swagger依赖。
* diboot.devtools.enable-lombok是否引入`Lombok`注解若设置true请注意添加Lombok依赖。
* diboot.devtools.enable-diboot-shiro是否引入`diboot-shiro`注解若设置true请注意添加diboot-shiro依赖。
## 初始化数据库
diboot-devtools在初次运行中会自动安装所需数据库表如果已经存在则不做操作。
## 启动项目
以SpringBoot项目在IntelliJ IDEA中的一种启动方式为例
在项目入口文件 `Application` 上点击右键,在弹出的菜单上点击 `RUN 'Application'`
当出现类似下面提示时,表示启动成功:
```
: Started Application in 14.223 seconds (JVM running for 16.693)
```
## 打开管理页面
在控制台(Console)上的启动日志中,找到如下日志:
```
: Diboot devtools v2.0.3 开始初始化 ...
: JDBC Connection [HikariProxyConnection@707108719 wrapping com.mysql.cj.jdbc.ConnectionImpl@7ccf6114] will not be managed by Spring
: devtools UI初始化完成URL: http://localhost:8080/example/diboot.html
: Diboot devtools 初始化完成。
```
其中的`URL`即是管理页面的链接,点击打开即可。