Explorar el Código

一丢丢文档

zhouhao hace 8 años
padre
commit
8a83bf69dc
Se han modificado 4 ficheros con 230 adiciones y 64 borrados
  1. 6 12
      doc/1.安装使用.md
  2. 16 52
      doc/2.API.md
  3. 160 0
      doc/create-crud.md
  4. 48 0
      doc/use-crud.md

+ 6 - 12
doc/1.安装使用.md

@@ -1,8 +1,8 @@
 # 使用hsweb
 项目java8开发,使用maven进行管理.
 
-## 使用
-配置pom.xml
+## 1.配置maven pom.xml
+引入私服
 ```xml
  <!--统一依赖管理-->
  <dependencyManagement>
@@ -34,16 +34,10 @@
 <!--设置了dependencyManagement,可以不指定版本号-->
 <dependency>
         <groupId>org.hsweb</groupId>
-        <artifactId>hsweb-web-controller</artifactId>
+        <artifactId>hsweb-web-start</artifactId>
 </dependency>
+```
 
-<dependency>
-    <groupId>org.hsweb</groupId>
-    <artifactId>hsweb-web-service-simple</artifactId>
-</dependency>
+完整配置,可参照 [demo](https://github.com/hs-web/hsweb-demo/blob/master/pom.xml)
 
-<dependency>
-    <groupId>org.hsweb</groupId>
-    <artifactId>hsweb-web-dao-mybatis</artifactId>
-</dependency>
-```
+[查看api](2.API.md)

+ 16 - 52
doc/2.API.md

@@ -1,53 +1,17 @@
-# hsweb 常用api
+## 开发
+1. [创建通用crud](./create-crud.md)
+2. [使用通用crud](./use-crud.md)
 
-## CRUD
-[如何创建通用crud](./create-crud.md)
-
-查询:
-```java
-    
-    import static MyBean.Property.*; //属性名
-    myService.createQuery()
-        .where(name,"admin")
-        .or(name,"root")
-        .list(); //list(), list(0,10), single(),total();
-    //or
-    myService.createQuery().fromBean(myBean)
-        .where(name)
-        .or(name)
-        .list(); 
-    
-    // 复杂查询条件
-    // 等同sql  where name is not null and (name like '李%' or name like '周%') and age >0
-    // 参数全部预编译,不用担心注入
-     myService.createQuery()
-        .where().notNull(name)
-        .nest().or().like$(name,"李").or().like$(name,"周").end()
-        .and().gt(age,10).list();
-     
-    //自定义sql条件
-    
-    myService.createQuery()
-        .where()
-        .and().sql("name !=''")
-        .or().sql("age < #{age}",{age:10})// 使用预编译方式
-        .or().sql("age = #{[0]}",Arrays.asList(20))//获取集合参数
-        .or().sql("age > ? and (age <?)",60,100)//使用参数列表方式
-        .list(); 
-```
-
-修改,支持和query一致的条件
-```java
-    import static MyBean.Property.*;
-    myService.createUpdate()
-        .set(status,1)
-        .where(id,"data-id").exec();
-    // or
-    myService.createUpdate(myBean).fromBean().where(id).exec();
-```
-
-删除,支持和query一致的条件
-```java
-    import static MyBean.Property.*;
-    myService.createDelete().where(id,"data-id").exec();
-```
+## 使用
+1. [权限管理](): 权限资源-角色-用户.
+2. [配置管理](): kv结构,自定义配置.可通过此功能配置数据字典.
+3. [脚本管理](): 动态脚本,支持javascript,groovy,java动态编译执行.
+4. [表单管理](): 动态表单,可视化设计表单,自动生成数据库以及系统权限.无需重启直接生效.
+5. [模块设置](): 配合动态表单实现表格页,查询条件自定义.
+6. [数据库维护](): 在线维护数据库,修改表结构,执行sql.
+7. [数据源管理](): 配置多数据源.
+8. [代码生成器](): 在线生成代码,打包下载.可自定义模板.
+9. [定时任务](): 配置定时任务,使用动态脚本编写任务内容.
+10. [系统监控](): 监控系统资源使用情况.
+11. [缓存监控](): 监控缓存情况.
+12. [访问日志](): 记录用户每次操作情况

+ 160 - 0
doc/create-crud.md

@@ -0,0 +1,160 @@
+# 创建通用增删改查功能
+
+## 1. 实体
+目前hsweb只有一种实体:PO。统一继承 `GenericPo`
+
+新建实体`org.hsweb.demo.bean.test.MyTest`如下:
+```java
+    public class MyTest extends GenericPo{
+        private String name;
+        
+        private int age;
+        
+        //由于查询使用动态参数,使用此方式定义属性名。方便统一维护
+        public interface Property extends GenericPo.Property{
+            String name = "name";
+            String age  = "age";
+        }
+    }
+```
+
+建立数据库表(hsweb暂未使用jpa等方式自动建表):
+
+方式1: 编辑`resources/scripts/initialize.groovy` (此脚本在项目首次运行时执行) 并加入
+```groovy
+database.createOrAlter("s_test")
+        .addColumn().name("u_id").alias("id").comment("ID").jdbcType(JDBCType.VARCHAR).length(32).primaryKey().commit()
+        .addColumn().name("age").alias("age").comment("年龄").jdbcType(JDBCType.DECIMAL).length(16,0).commit()
+        .addColumn().name("name").alias("name").comment("姓名").jdbcType(JDBCType.VARCHAR).length(128).commit()
+        .comment("测试").commit();
+```
+
+方式2: 如果系统已经初始化,则需要手动建立表结构,或者使用更新版本的方式进行初始化:
+假设当前版本为 1.0.0, 升级为 1.0.1,则新建文件 ``resources/scripts/upgrade/1.0.1.groovy`` 并加入方式1中的脚本内容.
+在启动后,更新版本时会自动执行此脚本.
+
+## 2. dao 接口 
+
+定义接口 ``org.hsweb.demo.dao.test.MyTestMapper``
+
+(增删改查 继承GenericMapper即可)
+```java
+    public interface MyTestMapper extends GenericMapper<MyTest, String> {
+    }
+```
+## 3.mybatis dao实现
+mybatis 采用配置文件(xml)的方式
+
+新建xml配置`resources/org/hsweb/demo/mappers/test/MyTestMapper`如下:
+```xml
+<?xml version="1.0" encoding="UTF-8" ?>
+    <!DOCTYPE mapper
+            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+            "http://www.mybatis.org/dtd/mybatis-3-mapper.dtd">
+    <mapper namespace="org.hsweb.demo.dao.test.MyTestMapper">
+        <resultMap id="TestResultMap" type="org.hsweb.demo.bean.test.MyTest">
+            <id property="id" column="u_id" javaType="string" jdbcType="VARCHAR"/>
+            <result property="name" column="name" javaType="String" jdbcType="VARCHAR"/>
+            <result property="age" column="age" javaType="int" jdbcType="INTEGER"/>
+        </resultMap>
+    
+        <!--用于动态生成sql所需的配置-->
+        <sql id="config">
+            <!--动态sql使用resultMapId对应的配置,来生成sql-->
+            <bind name="resultMapId" value="'TestResultMap'"/>
+            <bind name="tableName" value="'s_test'"/>
+        </sql>
+        <insert id="insert" parameterType="org.hsweb.web.bean.common.InsertParam">
+            <include refid="config"/>
+            <include refid="BasicMapper.buildInsertSql"/>
+        </insert>
+    
+        <delete id="delete" parameterType="org.hsweb.web.bean.common.DeleteParam">
+            <include refid="config"/>
+            <include refid="BasicMapper.buildDeleteSql"/>
+        </delete>
+    
+        <update id="update" parameterType="org.hsweb.web.bean.common.UpdateParam">
+            <include refid="config"/>
+            <include refid="BasicMapper.buildUpdateSql"/>
+        </update>
+    
+        <select id="selectByPk" parameterType="string" resultMap="TestResultMap">
+            select * from s_test where u_id=#{id}
+        </select>
+    
+        <select id="select" parameterType="org.hsweb.web.bean.common.QueryParam" resultMap="TestResultMap">
+            <include refid="config"/>
+            <include refid="BasicMapper.buildSelectSql"/>
+        </select>
+    
+        <select id="total" parameterType="org.hsweb.web.bean.common.QueryParam" resultType="int">
+            <include refid="config"/>
+            <include refid="BasicMapper.buildTotalSql"/>
+        </select>
+    </mapper>
+```
+
+## 4. service 接口
+
+定义service接口 ``org.hsweb.demo.service.test.MyTestService``
+
+(增删改查 GenericService)
+```java
+public interface MyTestService extends GenericService<MyTest, String> {
+}
+```
+
+## 5. service 实现
+
+定义service实现类 ``org.hsweb.demo.service.test.impl.SimpleMyTestService``
+
+继承 AbstractServiceImpl
+```java
+@Service("testService")
+public class SimpleMyTestService extends AbstractServiceImpl<MyTest, String> implements MyTestService {
+    @Autowired
+    private MyTestMapper myTestMapper;
+    
+    //AbstractServiceImpl 使用GenericMapper的实现类进行CRUD操作
+    @Override
+    protected MyTestMapper getMapper() {
+        return myTestMapper;
+    }
+}
+```
+
+## 6. controller
+
+定义Controller ``org.hsweb.demo.controller.test.MyTestController``
+
+```java
+@RestController
+@RequestMapping("/myTest")
+@Authorize(module = "myTest") //权限验证
+@AccessLogger("测试模块")   //访问日志描述
+public class MyTestController extends GenericController<MyTest, String> {
+
+    @Autowired
+    MyTestService myTestService;
+    
+    @Override
+    protected MyTestService getService() {
+        return myTestService;
+    }
+}
+```
+
+## 7. 添加权限
+
+1、启动并登录系统,进入系统管理-权限管理模块加入对应的权限,重新登录即可使用了。
+2、或者参照初始化表的方式,以脚本的方式进行初始化,如:
+
+```groovy
+def module= [u_id: 'myTest', name: '测试', uri: 'admin/myTest/list.html', icon: '', parent_id: '-1', remark: '', status: 1, optional: '[{"id":"M","text":"菜单可见","checked":true},{"id":"import","text":"导入excel","checked":true},{"id":"export","text":"导出excel","checked":true},{"id":"R","text":"查询","checked":true},{"id":"C","text":"新增","checked":true},{"id":"U","text":"修改","checked":true},{"id":"D","text":"删除","checked":false}]', sort_index: 1];
+database.getTable("s_modules").createInsert().value(module).exec();
+```
+
+## 8. 感觉太麻烦?
+
+**使用在线代码生成器,一键生成上诉全部代码!**

+ 48 - 0
doc/use-crud.md

@@ -0,0 +1,48 @@
+
+# 1.查询:
+```java
+    
+    import static MyBean.Property.*; //属性名
+    myService.createQuery()
+        .where(name,"admin")
+        .or(name,"root")
+        .list(); //list(), list(0,10), single(),total();
+    //or
+    myService.createQuery().fromBean(myBean)
+        .where(name)
+        .or(name)
+        .list(); 
+    
+    // 复杂查询条件
+    // 等同sql  where name is not null and (name like '李%' or name like '周%') and age >0
+    // 参数全部预编译,不用担心注入
+     myService.createQuery()
+        .where().notNull(name)
+        .nest().or().like$(name,"李").or().like$(name,"周").end()
+        .and().gt(age,10).list();
+     
+    //自定义sql条件
+    myService.createQuery()
+        .where()
+        .and().sql("name !=''")
+        .or().sql("age < #{age}",{age:10})// 使用预编译方式
+        .or().sql("age = #{[0]}",Arrays.asList(20))//获取集合参数
+        .or().sql("age > ? and (age <?)",60,100)//使用参数列表方式
+        .list(); 
+```
+
+# 2.修改,支持和query一致的条件
+```java
+    import static MyBean.Property.*;
+    myService.createUpdate()
+        .set(status,1)
+        .where(id,"data-id").exec();
+    // or
+    myService.createUpdate(myBean).fromBean().where(id).exec();
+```
+
+# 3.删除,支持和query一致的条件
+```java
+    import static MyBean.Property.*;
+    myService.createDelete().where(id,"data-id").exec();
+```