diff --git a/diboot-docs/.vuepress/config.js b/diboot-docs/.vuepress/config.js
index a84fb7e..d2262e1 100644
--- a/diboot-docs/.vuepress/config.js
+++ b/diboot-docs/.vuepress/config.js
@@ -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'
}, {
diff --git a/diboot-docs/guide/diboot-core/Mapper及自定义.md b/diboot-docs/guide/diboot-core/Mapper及自定义.md
index f7f3f8a..f171340 100644
--- a/diboot-docs/guide/diboot-core/Mapper及自定义.md
+++ b/diboot-docs/guide/diboot-core/Mapper及自定义.md
@@ -1 +1,94 @@
-# Mapper及自定义
\ No newline at end of file
+# 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
+
+
+
+ src/main/java
+
+ **/*.xml
+ **/*.dtd
+
+ false
+
+
+
+```
+
+## 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 {
+
+}
+```
+ * 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
+
+
+
+
+
+```
+
+## 自定义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 {
+
+ int forceDeleteEntities(@Param("name") String name);
+
+}
+```
+
+```xml
+
+
+
+
+
+ DELETE FROM demo WHERE name=#{name}
+
+
+
+```
\ No newline at end of file
diff --git a/diboot-docs/guide/diboot-core/Service与实现.md b/diboot-docs/guide/diboot-core/Service与实现.md
index 585aa67..3e31136 100644
--- a/diboot-docs/guide/diboot-core/Service与实现.md
+++ b/diboot-docs/guide/diboot-core/Service与实现.md
@@ -1 +1,206 @@
-# Service与实现
\ No newline at end of file
+# 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 {
+
+}
+```
+
+> 提示: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 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 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 wrapper = new LambdaQueryWrapper<>();
+wrapper.eq(Demo::getName, "张三");
+// 获取总条数
+int count = demoService.getEntityListCount(wrapper);
+System.out.println(count);
+
+// 输出
+===> true
+```
+
+### getEntityList(Wrapper queryWrapper)
+* 该方法查询符合条件的所有实体列表,返回查询出的实体列表。
+```java
+List getEntityList(Wrapper queryWrapper);
+```
+
+* 该方法通过查询条件和分页参数查询出当前页的记录列表,返回查询出的实体列表。
+```java
+List getEntityList(Wrapper queryWrapper, Pagination pagination);
+```
+
+### getEntityListLimit
+> 该方法查询符合条件的指定数量的实体列表,返回查询出的实体列表。
+```java
+List getEntityListLimit(Wrapper queryWrapper, int limitCount);
+```
+
+### getEntityListByIds
+> 该方法通过主键列表,查询出该主键列表的所有实体列表,返回查询出的实体列表。
+```java
+List getEntityListByIds(List ids);
+```
+
+### getMapList
+> 该方法通过查询条件查询和分页参数出符合条件的Map列表,其中分页参数是可选参数,返回查询出的Map列表。
+```java
+List