143 lines
5.9 KiB
Plaintext
143 lines
5.9 KiB
Plaintext
{
|
|
"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}",
|
|
"",
|
|
"}",
|
|
"",
|
|
]
|
|
}
|
|
} |