1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/so_so-mapleLeaf

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Программа MapleLeaf: инструменты для разработчиков

В настоящее время программа MapleLeaf включает два основных модуля: инструмент для генерации кода и инструмент для извлечения данных.

Основные особенности проекта:

  1. Проект не зависит от базы данных, что упрощает его использование.
  2. Функция генерации кода.
  3. Инструмент извлечения данных позволяет извлекать данные с веб-страниц, включая защищённые страницы с аутентификацией пользователя через cookie (которые можно просмотреть с помощью браузера). Инструмент может быть использован в качестве шаблона для собственных проектов или для статической демонстрации.

Преимущества функции генерации кода:

  1. Поддержка различных основных баз данных: MySQL, Oracle, SQL Server, PostgreSQL и возможность лёгкого расширения поддержки других баз данных.
  2. Поддержка различных типов постоянных слоёв: MyBatis, Hibernate и других.
  3. Поддержка сложных отношений между таблицами: один к одному, один ко многим, многие к одному, многие ко многим и однонаправленные и двунаправленные связи.
  4. Поддержка модульной генерации кода, где каждый модуль независим и не влияет на другие модули.
  5. Возможность настройки содержимого шаблонов с использованием Freemarker. Можно свободно редактировать и добавлять новые шаблоны для создания необходимого кода.
  6. Хорошая поддержка генерации кода для страниц, включая классификацию типов полей форм и определение местоположения полей на странице.
  7. Поддержка не только стандартной трёхслойной архитектуры Java-проектов (DAO, Service, Controller), но и мощных пользовательских настроек. Используя данные в существующих шаблонах, можно генерировать файлы для других языков программирования, таких как JSP, JS и т. д. Можно также настраивать параметры, такие как определение автора (author) и даты (date).
  8. Простота использования, требуется только настроить файл config.xml.

Развёртывание проекта и демонстрация генерации кода:

  1. Если вы используете Maven для создания jar-файла, необходимо добавить файл конфигурации config.xml и файлы шаблонов в каталог, где находится jar-файл (рекомендуется).

  2. Если вы создаёте war-файл с помощью Maven, эти шаги не требуются, и вы можете просто запустить службу.

Демонстрация будет проводиться на примере базы данных MySQL с генерацией кода для MyBatis и Hibernate.

Будет использоваться структура таблиц:

CREATE TABLE sys_user (
    user_id INT NOT NULL AUTO_INCREMENT COMMENT '用户ID',
    dept_id INT COMMENT '部门ID',
    user_info_id INT COMMENT '用户个人信息ID',
    login_name VARCHAR(30) NOT NULL COMMENT '登录账号',
    password VARCHAR(50) COMMENT '密码',
    user_name VARCHAR(30) NOT NULL COMMENT '用户昵称',
    email VARCHAR(50) COMMENT '用户邮箱',
    phonenumber VARCHAR(11) COMMENT '手机号码',
    sex CHAR(1) DEFAULT '0' COMMENT '用户性别;radio;0:男,1:女,2:未知',
    status CHAR(1) DEFAULT '0' COMMENT '账号状态;select;0:正常 ,1:停用',
    remark VARCHAR(500) COMMENT '备注',
    PRIMARY KEY (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户表';
CREATE TABLE sys_dept (
    dept_id INT NOT NULL AUTO_INCREMENT COMMENT '部门id',
    parent_id INT DEFAULT '0' COMMENT '父部门id',
    dept_name VARCHAR(30) COMMENT '部门名称',
    leader VARCHAR(20) COMMENT '负责人',
    phone VARCHAR(11) COMMENT '联系电话',
    status CHAR(1) DEFAULT '0' COMMENT '部门状态;select;0:正常 ,1:停用',
    PRIMARY KEY (dept_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='部门表';
CREATE TABLE sys_user_info (
    user_info_id INT NOT NULL AUTO_INCREMENT COMMENT '用户个人信息ID',
    real_name VARCHAR(30) NOT NULL COMMENT '真实姓名',
    address VARCHAR(100) COMMENT '住址',
    height DOUBLE COMMENT '身高',
    birthday TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '出生日期',
    PRIMARY KEY (user_info_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户个人信息表';
CREATE TABLE sys_role (
    role_id INT NOT NULL AUTO_INCREMENT COMMENT '角色ID',
    role_name VARCHAR(30) NOT NULL COMMENT '角色名称',
    status CHAR(1) NOT NULL COMMENT '角色状态;radio;0:正常 ,1:停用',
    remark VARCHAR(500) COMMENT '备注',
    PRIMARY KEY (role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='角色信息表';
CREATE TABLE sys_user_role (
    user_id INT NOT NULL COMMENT '用户ID',
    role_id INT NOT NULL COMMENT '角色ID',
    PRIMARY KEY (user_id, role_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='用户和角色关联表';
  • Таблица пользователей имеет отношение один к одному с таблицей личной информации пользователя, отношение «один ко многим» с таблицей отделов и отношение «многие ко многим», реализованное через таблицу ролей.

Файл конфигурации config.xml:

<?xml version="1.0" encoding="UTF-8"?>
<configure>
    <global>
        <!--生成代码路径 ,默认项目所在目录-->
        <property name="baseDir" value="f:\\code" />
        <!--基础包名,默认mapleLeaf.code-->
        <property name="basePackage" value="com.test" />
        <!-- 实体类名是否去掉表名前缀 ,默认false-->
        <property name="deleteTabPrefix" value="true" />
        <!-- 全局表名前缀,多个逗号分隔 ,默认""-->
        <property name="baseTabPrefix" value="sys_" />
        <!-- 表字段是否下划线转驼峰命名 ,默认false-->
        <property name="columnCamel" value="true" />
        <!-- 持久层框架(mybatis,hibernate,other),默认"mybatis" -->
        <property name="persistence" value="hibernate" />
        <!-- 一些公共类,工具类,父类等原样输出,不必需(包名=模板文件名(也是类名),多个逗号隔开) -->
        <!-- 这里配置了分页类,mybatis分页拦截器, mybatis通用配置-->
    </global>
</configure>
``` **Получение информации о столбцах таблицы**

columns as col> ${col.propName} //имя свойства класса сущности ${col.propType} //тип свойства класса сущности в Java ${col.colName} //имя поля таблицы ${col.pk} //флаг, указывающий на то, является ли столбец первичным ключом ... </#list> //Также можно использовать пользовательский тег <@list>, который был инициализирован для обработки null-значений <@mf.list columns;col> ${col.propName} //имя свойства класса сущности /@mf.list


**Получение информации обо всех связанных таблицах**

<@mf.list refTables;reftb> ${reftb.entName} //класс сущности ${reftb.refType} //вид связи, например OneToOne или OneToMany ${reftb.lowEntName} //имя класса сущности, записанное строчными буквами, может использоваться как имя переменной ...
/@mf.list


**Получение списка уникальных индексов (составных индексов) или первичных ключей (составных первичных ключей)**

// Если таблица имеет первичный ключ (составной первичный ключ), то uniIdxCols будет содержать поля первичного ключа // Если первичного ключа нет, то будут найдены уникальные индексы и выбран один из них // Если ни первичного ключа, ни уникального индекса нет, то будет возвращено пустое множество <@mf.list uniIdxCols;col> ${col.colName} //имя поля таблицы ${col.propName} //соответствующее поле ... /@mf.list


**Извлечение файлов cookie при входе пользователя на страницу**

Для этого можно воспользоваться инструментами браузера. Нужно найти файлы cookie и скопировать их имена и значения в текстовое поле cookies:

![](https://gitee.com/uploads/images/2019/0506/193643_baffe7d2_1135865.gif "Заголовок изображения")

#### Примечание:
[Сайт для изучения шаблонов Freemarker](http://freemarker.foofun.cn/index.html).

Версия 2.0.1 была выпущена.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Генерация кода, парсинг веб-страницы. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/so_so-mapleLeaf.git
git@api.gitlife.ru:oschina-mirror/so_so-mapleLeaf.git
oschina-mirror
so_so-mapleLeaf
so_so-mapleLeaf
master