This commit is contained in:
2025-04-17 15:56:06 +08:00
commit 62d1c7a378
18 changed files with 1830 additions and 0 deletions

143
repository.code-snippets Normal file
View File

@@ -0,0 +1,143 @@
{
"Repository": {
"scope": "java",
"prefix": "repository",
"body": [
"package ${1:base package}.${2:context}.domain.model.${3:aggregateroot};",
"",
"import java.util.List;",
"",
"import xyz.zhouxy.plusone.domain.IRepository;",
"",
"public interface ${4:AggregateRoot}Repository extends IRepository<${4:AggregateRoot}, ${5:ID}> {",
"",
" List<${4:AggregateRoot}> findAll();",
"}",
]
},
"RepositoryImplTemplate": {
"scope": "java",
"prefix": "repoImplTemplate",
"body": [
"@Repository",
"public class ${1:Entity}RepositoryImpl extends JdbcRepositorySupport<${1:Entity}, Long> implements ${1:Entity}Repository {",
"",
"\t// private final ${1:Entity}RoleRefDAO ${3:entity}RoleDAO;",
"",
"\tpublic ${1:Entity}RepositoryImpl(@Nonnull NamedParameterJdbcTemplate namedParameterJdbcTemplate) {",
"\t\tsuper(namedParameterJdbcTemplate);",
"\t\t// this.${3:entity}RoleDAO = new ${1:Entity}RoleRefDAO(namedParameterJdbcTemplate);",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link JdbcRepositorySupport}",
"\t */",
"\t@Override",
"\tprotected final void doDelete(@Nonnull ${1:Entity} entity) {",
"\t\tint i = update(\"\"\"",
"\t\t\t\tUPDATE ${2:table_name} SET deleted = id, \"version\" = \"version\" + 1",
"\t\t\t\tWHERE id = :id AND deleted = 0 AND \"version\" = :version",
"\t\t\t\t\"\"\",",
"\t\t\t\tnew MapSqlParameterSource()",
"\t\t\t\t\t\t.addValue(\"id\", entity.getId().orElseThrow())",
"\t\t\t\t\t\t.addValue(\"version\", entity.getVersion()));",
"\t\tassertUpdateOneRow(i);",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link JdbcRepositorySupport}",
"\t */",
"\t@Override",
"\tprotected final Optional<${1:Entity}> doFindById(@Nonnull Long id) {",
"\t\treturn queryForObject(\"\"\"",
"\t\t\t\tSELECT",
"\t\t\t\t\tid, ..., \"version\"",
"\t\t\t\tFROM ${2:table_name}",
"\t\t\t\tWHERE id = :id AND deleted = 0",
"\t\t\t\t\"\"\",",
"\t\t\t\t\"id\", id);",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link IRepository}",
"\t */",
"\t@Override",
"\tpublic boolean exists(Long id) {",
"\t\treturn queryForBool(\"SELECT EXISTS (SELECT 1 FROM ${2:table_name} WHERE id = :id AND deleted = 0 LIMIT 1)\",",
"\t\t\t\t\"id\", id);",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link JdbcRepositorySupport}",
"\t */",
"\t@Override",
"\tprotected final ${1:Entity} doInsert(@Nonnull ${1:Entity} entity) {",
"\t\tlong id = IdUtil.getSnowflakeNextId();",
"\t\tint i = update(\"\"\"",
"\t\t\t\tINSERT INTO ${2:table_name}",
"\t\t\t\t\t(id, ... created_by, create_time)",
"\t\t\t\tVALUES",
"\t\t\t\t\t(:id, ..., :createdBy, :createTime)",
"\t\t\t\t\"\"\",",
"\t\t\t\tgenerateParamSource(id, entity));",
"\t\tassertUpdateOneRow(i);",
"\t\t// this.${3:entity}RoleDAO.insert${1:Entity}RoleRefs(id, entity.getRoleIds());",
"\t\treturn find(id).orElseThrow();",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link JdbcRepositorySupport}",
"\t */",
"\t@Override",
"\tprotected final ${1:Entity} doUpdate(@Nonnull ${1:Entity} entity) {",
"\t\tint i = update(\"\"\"",
"\t\t\t\tUPDATE ${2:table_name}",
"\t\t\t\tSET ...",
"\t\t\t\t\t\"updated_by\" = :updatedBy,",
"\t\t\t\t\t\"update_time\" = :updateTime,",
"\t\t\t\t\t\"version\" = \"version\" + 1",
"\t\t\t\tWHERE id = :id AND deleted = 0 AND \"version\" = :version",
"\t\t\t\t\"\"\",",
"\t\t\t\tgenerateParamSource(entity));",
"\t\tassertUpdateOneRow(i);",
"\t\t// this.${3:entity}RoleDAO.save${1:Entity}RoleRefs(entity);",
"\t\treturn find(entity.getId().orElseThrow()).orElseThrow();",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link JdbcEntityDaoSupport}",
"\t */",
"\t@Override",
"\tprotected final ${1:Entity} mapRow(ResultSet rs) throws SQLException {",
"\t\tlong id = rs.getLong(\"id\");",
"",
"\t\treturn new ${1:Entity}(",
"\t\t\t\tid,",
"\t\t\t\t...",
"\t\t\t\trs.getLong(\"created_by\"),",
"\t\t\t\trs.getLong(\"updated_by\"),",
"\t\t\t\trs.getLong(\"version\"));",
"\t}",
"",
"\t/**",
"\t * @DefinedIn {@link JdbcRepositorySupport}",
"\t */",
"\t@Override",
"\tprotected final SqlParameterSource generateParamSource(Long id, @Nonnull ${1:Entity} entity) {",
"\t\tLocalDateTime now = LocalDateTime.now();",
"\t\t",
"\t\treturn new MapSqlParameterSource()",
"\t\t\t\t.addValue(\"id\", id)",
"\t\t\t\t...",
"\t\t\t\t.addValue(\"createdBy\", entity.getCreatedBy())",
"\t\t\t\t.addValue(\"createTime\", now)",
"\t\t\t\t.addValue(\"updatedBy\", entity.getUpdatedBy())",
"\t\t\t\t.addValue(\"updateTime\", now)",
"\t\t\t\t.addValue(\"version\", entity.getVersion());",
"\t}",
"",
"}",
"",
]
}
}