Программа MapleLeaf: инструменты для разработчиков
В настоящее время программа MapleLeaf включает два основных модуля: инструмент для генерации кода и инструмент для извлечения данных.
Основные особенности проекта:
Преимущества функции генерации кода:
- Поддержка различных основных баз данных: MySQL, Oracle, SQL Server, PostgreSQL и возможность лёгкого расширения поддержки других баз данных.
- Поддержка различных типов постоянных слоёв: MyBatis, Hibernate и других.
- Поддержка сложных отношений между таблицами: один к одному, один ко многим, многие к одному, многие ко многим и однонаправленные и двунаправленные связи.
- Поддержка модульной генерации кода, где каждый модуль независим и не влияет на другие модули.
- Возможность настройки содержимого шаблонов с использованием Freemarker. Можно свободно редактировать и добавлять новые шаблоны для создания необходимого кода.
- Хорошая поддержка генерации кода для страниц, включая классификацию типов полей форм и определение местоположения полей на странице.
- Поддержка не только стандартной трёхслойной архитектуры Java-проектов (DAO, Service, Controller), но и мощных пользовательских настроек. Используя данные в существующих шаблонах, можно генерировать файлы для других языков программирования, таких как JSP, JS и т. д. Можно также настраивать параметры, такие как определение автора (author) и даты (date).
- Простота использования, требуется только настроить файл config.xml.
Развёртывание проекта и демонстрация генерации кода:
Если вы используете Maven для создания jar-файла, необходимо добавить файл конфигурации config.xml и файлы шаблонов в каталог, где находится jar-файл (рекомендуется).
Если вы создаёте 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:

#### Примечание:
[Сайт для изучения шаблонов Freemarker](http://freemarker.foofun.cn/index.html).
Версия 2.0.1 была выпущена.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )