为了让用户更容易掌握二次开发方法,系统中专门提供了二次开发的示例代码。示例代码完整的演示了二次开发中的各个步骤,非常符合实际的开发工作。
src/main/resources/db/changelog/db.changelog-8.0.yaml
其中示例表的建表内容如下:
- changeSet:
id: 1691729970999-1
author: PONY (generated)
changes:
- createTable:
columns:
- column:
constraints:
nullable: false
primaryKey: true
name: id_
remarks: ID
type: INT
- column:
name: name_
remarks: 名称
type: VARCHAR(90)
- column:
name: description_
remarks: 描述
type: VARCHAR(450)
- column:
name: height_
remarks: 身高
type: INT
- column:
name: birthday_
remarks: 出生日期
type: datetime
- column:
constraints:
nullable: false
defaultValue: '1'
name: enabled_
remarks: 是否启用
type: CHAR(1)
tableName: ujcms_example
数据库表结构由Liquibase维护。主要的作用是跨数据库平台,以及升级时不需要手动执行sql。但使用稍显复杂和麻烦,有一定的学习难度。
实际二次开发时,可按传统的方式,直接通过SQL语句建表即可。Liquibase根据实际情况及技术储备,可用可不用。
com.ujcms.cms.ext.domain.base.ExampleBase
对应数据库字段,由代码生成器生成并维护,不可手动修改。数据库增加或修改字段后,重新运行代码生成器,改类的代码会自动更新。如手动修改了这个类,再次生成代码时,手动修改的内容会被覆盖。
com.ujcms.cms.ext.domain.Example
该类会在代码生成时生成,但修改表结构后再次生成代码时,不会被修改或覆盖。此类可以增加一些自己的代码和逻辑。
com.ujcms.cms.ext.mapper.ExampleMapper
代码生成器会生成该类,但之后不会被代码生成器修改或覆盖。
src/main/resources/com/ujcms/cms/ext/mapper/ExampleMapper.xml
代码生成器会生成该文件,且修改数据库表结构后再次运行代码生成器,会自动维护其中部分代码(如字段信息部分代码)。
可以在这个文件中新增自己的代码,再次运行代码生成器不会覆盖自己新增的代码。
代码生成器会自动维护的代码包括:BaseResultMap
Column_List
insert
update
。这些标签的代码不要进行修改,再次运行代码生成器会覆盖这些代码。
com.ujcms.cms.ext.service.ExampleService
代码生成器会生成该类,但之后不会被代码生成器修改或覆盖。
com.ujcms.cms.ext.service.args.ExampleArgs
该类可以定义一些常用查询参数。方便复用。
代码生成器会生成该类,但之后不会被代码生成器修改或覆盖。
com.ujcms.cms.ext.web.backendapi.ExampleController
代码生成器会生成该类,但之后不会被代码生成器修改或覆盖。
示例代码接口默认已被注释。如需示例接口可用,请取消相应注释:
@RestController("backendExampleController")
@RequestMapping(BACKEND_API + "/ext/example")
com.ujcms.cms.ext.web.api.ExampleController
com.ujcms.cms.ext.web.frontend.ExampleController
代码生成器不会生成该类。
示例代码接口默认已被注释。如需示例接口可用,请取消相应注释:
@Tag(name = "ExampleController", description = "示例接口")
@RestController
@RequestMapping({API + "/example", FRONTEND_API + "/example"})
@Controller("frontendExampleController")
com.ujcms.cms.ext.web.directive.ExampleDirective
com.ujcms.cms.ext.web.directive.ExampleListDirective
com.ujcms.cms.ext.web.directive.ExamplePageDirective
代码生成器不会生成该类。
标签类需要注册到Freemarker中。通常在ContextConfig
类中注册。
com.ujcms.cms.ext.ContextConfig
configuration.setSharedVariable("Example", new ExampleDirective(exampleService));
configuration.setSharedVariable("ExampleList", new ExampleListDirective(exampleService));
configuration.setSharedVariable("ExamplePage", new ExamplePageDirective(exampleService));
src/main/webapp/templates/1/default/sys_example.html
src/main/webapp/templates/1/default/sys_example_item.html
src/main/webapp/templates/1/default/sys_example_form.html
代码生成器不会生成模板。