This commit is contained in:
2025-12-02 13:21:18 +08:00
parent fab8c13cb3
commit ee6dd64f98
192 changed files with 25783 additions and 0 deletions

View File

@@ -0,0 +1,88 @@
# MyBatis XML 代码片段使用说明
## 安装位置
代码片段文件已放置在 `.vscode/mybatis-xml.code-snippets`VS Code 和 Cursor 会自动识别。
## 使用方法
### 1. 完整 Mapper XML 模板
在 XML 文件中输入 `mybatis-mapper`,然后按 `Tab` 键,会自动生成完整的 MyBatis Mapper XML 模板。
**占位符说明:**
- `${1}` - Mapper 命名空间(完整包路径)
- `${2}` - 模块名称user, role, dept
- `${3}` - 实体类名称TbSysUser
- `${4}` - DTO 完整类路径
- `${5}` - 主键数据库字段名user_id
- `${6}` - 主键 Java 属性名userId
- `${7}` - 业务字段数据库字段名
- `${8}` - 业务字段 Java 属性名
- `${9}` - 实体中文名称(如:用户)
- `${10}` - 数据库表名tb_sys_user
### 2. 单个 SQL 片段
#### ResultMap
输入 `mybatis-resultmap` 生成结果映射
#### Insert
输入 `mybatis-insert` 生成插入语句
#### Update
输入 `mybatis-update` 生成更新语句
#### Delete
输入 `mybatis-delete` 生成删除语句(逻辑删除)
#### Select ById
输入 `mybatis-select-id` 生成根据ID查询
#### Select ByFilter
输入 `mybatis-select-filter` 生成条件查询
#### Select Page
输入 `mybatis-select-page` 生成分页查询
#### Select Count
输入 `mybatis-select-count` 生成计数查询
#### Base Column List
输入 `mybatis-columns` 生成基础列定义
## 示例
### 创建完整的 Mapper XML
1. 新建文件:`TbSysRoleMapper.xml`
2. 输入 `mybatis-mapper` 并按 `Tab`
3. 依次填写占位符:
- 命名空间:`org.xyzh.system.mapper.role.TbSysRoleMapper`
- 模块名:`role`
- 实体名:`TbSysRole`
- DTO路径`org.xyzh.common.dto.sys.TbSysRoleDTO`
- 主键字段:`role_id`
- 主键属性:`roleId`
- 业务字段:`role_name`
- 业务属性:`roleName`
- 实体中文名:`角色`
- 表名:`tb_sys_role`
### 快速添加单个 SQL
在已有的 Mapper XML 中,输入对应的前缀(如 `mybatis-insert`),按 `Tab` 即可快速插入对应的 SQL 片段。
## 注意事项
1. 所有模板都包含了 BaseDTO 的通用字段
2. 删除操作使用逻辑删除(设置 deleted = true
3. 查询时自动过滤已删除的记录deleted = false
4. 分页使用 LIMIT 和 OFFSETPostgreSQL/MySQL 兼容)
5. 时间字段使用 TIMESTAMP 类型
6. 字符串字段使用 VARCHAR 类型
## 自定义
如需修改模板,编辑 `.vscode/mybatis-xml.code-snippets` 文件即可。

23
urbanLifelineServ/.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,23 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "java",
"name": "SystemApp",
"request": "launch",
"mainClass": "org.xyzh.SystemApp",
"projectName": "system",
"cwd": "${workspaceFolder}/system",
"args": [
"--spring.profiles.active=dev"
],
"vmArgs": [
"-Dspring.profiles.active=dev"
],
"env": {
"SPRING_PROFILES_ACTIVE": "dev"
},
"console": "integratedTerminal"
}
]
}

View File

@@ -0,0 +1,313 @@
{
"MyBatis Mapper XML Template": {
"prefix": "mybatis-mapper",
"body": [
"<?xml version=\"1.0\" encoding=\"UTF-8\"?>",
"<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">",
"<mapper namespace=\"${1:org.xyzh.system.mapper.${2:module}.${3:EntityName}Mapper}\">",
"",
" <!-- 结果映射 -->",
" <resultMap id=\"BaseResultMap\" type=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
" <!-- BaseDTO 字段 -->",
" <result column=\"optsn\" property=\"optsn\" jdbcType=\"VARCHAR\"/>",
" <result column=\"creator\" property=\"creator\" jdbcType=\"VARCHAR\"/>",
" <result column=\"updater\" property=\"updater\" jdbcType=\"VARCHAR\"/>",
" <result column=\"dept_path\" property=\"deptPath\" jdbcType=\"VARCHAR\"/>",
" <result column=\"remark\" property=\"remark\" jdbcType=\"VARCHAR\"/>",
" <result column=\"create_time\" property=\"createTime\" jdbcType=\"TIMESTAMP\"/>",
" <result column=\"update_time\" property=\"updateTime\" jdbcType=\"TIMESTAMP\"/>",
" <result column=\"delete_time\" property=\"deleteTime\" jdbcType=\"TIMESTAMP\"/>",
" <result column=\"deleted\" property=\"deleted\" jdbcType=\"BOOLEAN\"/>",
" </resultMap>",
"",
" <!-- 基础列 -->",
" <sql id=\"Base_Column_List\">",
" ${5:entity_id}, ${7:field_name},",
" optsn, creator, updater, dept_path, remark, create_time, update_time, delete_time, deleted",
" </sql>",
"",
" <!-- 插入${9:实体名称} -->",
" <insert id=\"insert${3:EntityName}\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
" INSERT INTO ${10:tb_entity_name} (",
" ${5:entity_id}, ${7:field_name},",
" optsn, creator, updater, dept_path, remark, create_time, update_time, deleted",
" ) VALUES (",
" #{${6:entityId}}, #{${8:fieldName}},",
" #{optsn}, #{creator}, #{updater}, #{deptPath}, #{remark}, #{createTime}, #{updateTime}, #{deleted}",
" )",
" </insert>",
"",
" <!-- 更新${9:实体名称} -->",
" <update id=\"update${3:EntityName}\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
" UPDATE ${10:tb_entity_name}",
" <set>",
" <if test=\"${8:fieldName} != null and ${8:fieldName} != ''\">",
" ${7:field_name} = #{${8:fieldName}},",
" </if>",
" <if test=\"updater != null and updater != ''\">",
" updater = #{updater},",
" </if>",
" <if test=\"deptPath != null and deptPath != ''\">",
" dept_path = #{deptPath},",
" </if>",
" <if test=\"remark != null\">",
" remark = #{remark},",
" </if>",
" <if test=\"updateTime != null\">",
" update_time = #{updateTime},",
" </if>",
" </set>",
" WHERE ${5:entity_id} = #{${6:entityId}}",
" <if test=\"deleted != null\">",
" AND deleted = #{deleted}",
" </if>",
" </update>",
"",
" <!-- 删除${9:实体名称}(逻辑删除) -->",
" <update id=\"delete${3:EntityName}\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
" UPDATE ${10:tb_entity_name}",
" SET deleted = true,",
" delete_time = NOW()",
" WHERE ${5:entity_id} = #{${6:entityId}}",
" </update>",
"",
" <!-- 根据ID查询${9:实体名称} -->",
" <select id=\"get${3:EntityName}ById\" resultMap=\"BaseResultMap\" parameterType=\"java.lang.String\">",
" SELECT",
" <include refid=\"Base_Column_List\"/>",
" FROM ${10:tb_entity_name}",
" WHERE ${5:entity_id} = #{${6:entityId}}",
" AND (deleted IS NULL OR deleted = false)",
" </select>",
"",
" <!-- 根据条件查询${9:实体名称}列表 -->",
" <select id=\"get${3:EntityName}ByFilter\" resultMap=\"BaseResultMap\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
" SELECT",
" <include refid=\"Base_Column_List\"/>",
" FROM ${10:tb_entity_name}",
" <where>",
" <if test=\"filter.${6:entityId} != null and filter.${6:entityId} != ''\">",
" AND ${5:entity_id} = #{filter.${6:entityId}}",
" </if>",
" <if test=\"filter.${8:fieldName} != null and filter.${8:fieldName} != ''\">",
" AND ${7:field_name} LIKE CONCAT('%', #{filter.${8:fieldName}}, '%')",
" </if>",
" AND (deleted IS NULL OR deleted = false)",
" </where>",
" ORDER BY create_time DESC",
" </select>",
"",
" <!-- 根据条件查询${9:实体名称}分页列表 -->",
" <select id=\"get${3:EntityName}PageByFilter\" resultMap=\"BaseResultMap\">",
" SELECT",
" <include refid=\"Base_Column_List\"/>",
" FROM ${10:tb_entity_name}",
" <where>",
" <if test=\"filter.${6:entityId} != null and filter.${6:entityId} != ''\">",
" AND ${5:entity_id} = #{filter.${6:entityId}}",
" </if>",
" <if test=\"filter.${8:fieldName} != null and filter.${8:fieldName} != ''\">",
" AND ${7:field_name} LIKE CONCAT('%', #{filter.${8:fieldName}}, '%')",
" </if>",
" AND (deleted IS NULL OR deleted = false)",
" </where>",
" ORDER BY create_time DESC",
" LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}",
" </select>",
"",
" <!-- 根据条件查询${9:实体名称}数量 -->",
" <select id=\"get${3:EntityName}CountByFilter\" resultType=\"java.lang.Integer\" parameterType=\"${4:org.xyzh.common.dto.sys.${3:EntityName}DTO}\">",
" SELECT COUNT(1)",
" FROM ${10:tb_entity_name}",
" <where>",
" <if test=\"filter.${6:entityId} != null and filter.${6:entityId} != ''\">",
" AND ${5:entity_id} = #{filter.${6:entityId}}",
" </if>",
" <if test=\"filter.${8:fieldName} != null and filter.${8:fieldName} != ''\">",
" AND ${7:field_name} LIKE CONCAT('%', #{filter.${8:fieldName}}, '%')",
" </if>",
" AND (deleted IS NULL OR deleted = false)",
" </where>",
" </select>",
"",
"</mapper>"
],
"description": "MyBatis Mapper XML 完整模板"
},
"MyBatis ResultMap": {
"prefix": "mybatis-resultmap",
"body": [
" <!-- 结果映射 -->",
" <resultMap id=\"BaseResultMap\" type=\"${1:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
" <!-- 主键 -->",
" <id column=\"${3:entity_id}\" property=\"${4:entityId}\" jdbcType=\"VARCHAR\"/>",
" ",
" <!-- 业务字段 -->",
" <result column=\"${5:field_name}\" property=\"${6:fieldName}\" jdbcType=\"VARCHAR\"/>",
" ",
" <!-- BaseDTO 字段 -->",
" <result column=\"optsn\" property=\"optsn\" jdbcType=\"VARCHAR\"/>",
" <result column=\"creator\" property=\"creator\" jdbcType=\"VARCHAR\"/>",
" <result column=\"updater\" property=\"updater\" jdbcType=\"VARCHAR\"/>",
" <result column=\"dept_path\" property=\"deptPath\" jdbcType=\"VARCHAR\"/>",
" <result column=\"remark\" property=\"remark\" jdbcType=\"VARCHAR\"/>",
" <result column=\"create_time\" property=\"createTime\" jdbcType=\"TIMESTAMP\"/>",
" <result column=\"update_time\" property=\"updateTime\" jdbcType=\"TIMESTAMP\"/>",
" <result column=\"delete_time\" property=\"deleteTime\" jdbcType=\"TIMESTAMP\"/>",
" <result column=\"deleted\" property=\"deleted\" jdbcType=\"BOOLEAN\"/>",
" </resultMap>"
],
"description": "MyBatis ResultMap 映射"
},
"MyBatis Insert": {
"prefix": "mybatis-insert",
"body": [
" <!-- 插入${1:实体名称} -->",
" <insert id=\"insert${2:EntityName}\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
" INSERT INTO ${4:tb_entity_name} (",
" ${5:entity_id}, ${6:field_name},",
" optsn, creator, updater, dept_path, remark, create_time, update_time, deleted",
" ) VALUES (",
" #{${7:entityId}}, #{${8:fieldName}},",
" #{optsn}, #{creator}, #{updater}, #{deptPath}, #{remark}, #{createTime}, #{updateTime}, #{deleted}",
" )",
" </insert>"
],
"description": "MyBatis Insert 语句"
},
"MyBatis Update": {
"prefix": "mybatis-update",
"body": [
" <!-- 更新${1:实体名称} -->",
" <update id=\"update${2:EntityName}\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
" UPDATE ${4:tb_entity_name}",
" <set>",
" <if test=\"${5:fieldName} != null and ${5:fieldName} != ''\">",
" ${6:field_name} = #{${5:fieldName}},",
" </if>",
" <if test=\"updater != null and updater != ''\">",
" updater = #{updater},",
" </if>",
" <if test=\"deptPath != null and deptPath != ''\">",
" dept_path = #{deptPath},",
" </if>",
" <if test=\"remark != null\">",
" remark = #{remark},",
" </if>",
" <if test=\"updateTime != null\">",
" update_time = #{updateTime},",
" </if>",
" </set>",
" WHERE ${7:entity_id} = #{${8:entityId}}",
" <if test=\"deleted != null\">",
" AND deleted = #{deleted}",
" </if>",
" </update>"
],
"description": "MyBatis Update 语句"
},
"MyBatis Delete": {
"prefix": "mybatis-delete",
"body": [
" <!-- 删除${1:实体名称}(逻辑删除) -->",
" <update id=\"delete${2:EntityName}\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
" UPDATE ${4:tb_entity_name}",
" SET deleted = true,",
" delete_time = NOW()",
" WHERE ${5:entity_id} = #{${6:entityId}}",
" </update>"
],
"description": "MyBatis Delete 语句(逻辑删除)"
},
"MyBatis Select ById": {
"prefix": "mybatis-select-id",
"body": [
" <!-- 根据ID查询${1:实体名称} -->",
" <select id=\"get${2:EntityName}ById\" resultMap=\"BaseResultMap\" parameterType=\"java.lang.String\">",
" SELECT",
" <include refid=\"Base_Column_List\"/>",
" FROM ${3:tb_entity_name}",
" WHERE ${4:entity_id} = #{${5:entityId}}",
" AND (deleted IS NULL OR deleted = false)",
" </select>"
],
"description": "MyBatis Select ById 查询"
},
"MyBatis Select ByFilter": {
"prefix": "mybatis-select-filter",
"body": [
" <!-- 根据条件查询${1:实体名称}列表 -->",
" <select id=\"get${2:EntityName}ByFilter\" resultMap=\"BaseResultMap\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
" SELECT",
" <include refid=\"Base_Column_List\"/>",
" FROM ${4:tb_entity_name}",
" <where>",
" <if test=\"filter.${5:entityId} != null and filter.${5:entityId} != ''\">",
" AND ${6:entity_id} = #{filter.${5:entityId}}",
" </if>",
" <if test=\"filter.${7:fieldName} != null and filter.${7:fieldName} != ''\">",
" AND ${8:field_name} LIKE CONCAT('%', #{filter.${7:fieldName}}, '%')",
" </if>",
" AND (deleted IS NULL OR deleted = false)",
" </where>",
" ORDER BY create_time DESC",
" </select>"
],
"description": "MyBatis Select ByFilter 查询"
},
"MyBatis Select Page": {
"prefix": "mybatis-select-page",
"body": [
" <!-- 根据条件查询${1:实体名称}分页列表 -->",
" <select id=\"get${2:EntityName}PageByFilter\" resultMap=\"BaseResultMap\">",
" SELECT",
" <include refid=\"Base_Column_List\"/>",
" FROM ${3:tb_entity_name}",
" <where>",
" <if test=\"filter.${4:entityId} != null and filter.${4:entityId} != ''\">",
" AND ${5:entity_id} = #{filter.${4:entityId}}",
" </if>",
" <if test=\"filter.${6:fieldName} != null and filter.${6:fieldName} != ''\">",
" AND ${7:field_name} LIKE CONCAT('%', #{filter.${6:fieldName}}, '%')",
" </if>",
" AND (deleted IS NULL OR deleted = false)",
" </where>",
" ORDER BY create_time DESC",
" LIMIT #{pageParam.pageSize} OFFSET #{pageParam.offset}",
" </select>"
],
"description": "MyBatis Select Page 分页查询"
},
"MyBatis Select Count": {
"prefix": "mybatis-select-count",
"body": [
" <!-- 根据条件查询${1:实体名称}数量 -->",
" <select id=\"get${2:EntityName}CountByFilter\" resultType=\"java.lang.Integer\" parameterType=\"${3:org.xyzh.common.dto.sys.${2:EntityName}DTO}\">",
" SELECT COUNT(1)",
" FROM ${4:tb_entity_name}",
" <where>",
" <if test=\"filter.${5:entityId} != null and filter.${5:entityId} != ''\">",
" AND ${6:entity_id} = #{filter.${5:entityId}}",
" </if>",
" <if test=\"filter.${7:fieldName} != null and filter.${7:fieldName} != ''\">",
" AND ${8:field_name} LIKE CONCAT('%', #{filter.${7:fieldName}}, '%')",
" </if>",
" AND (deleted IS NULL OR deleted = false)",
" </where>",
" </select>"
],
"description": "MyBatis Select Count 计数查询"
},
"MyBatis Base Column List": {
"prefix": "mybatis-columns",
"body": [
" <!-- 基础列 -->",
" <sql id=\"Base_Column_List\">",
" ${1:entity_id}, ${2:field_name},",
" optsn, creator, updater, dept_path, remark, create_time, update_time, delete_time, deleted",
" </sql>"
],
"description": "MyBatis 基础列定义"
}
}

15
urbanLifelineServ/.vscode/settings.json vendored Normal file
View File

@@ -0,0 +1,15 @@
{
"java.compile.nullAnalysis.mode": "automatic",
"java.configuration.updateBuildConfiguration": "automatic",
"maven.view": "hierarchical",
"tabSize": 4,
"java.debug.settings.onBuildFailureProceed": true,
"java.configuration.maven.userSettings": null,
"java.import.maven.enabled": true,
"java.project.referencedLibraries": [
"**/*.jar"
],
"maven.terminal.useJavaHome": true,
"java.configuration.runtimes": [],
"Codegeex.RepoIndex": true
}