default void setProperty(String propertyName, Object value) { Map<String, Object> map = getProperties(); if (map == null) { map = new LinkedHashMap<>(); setProperties(map); } map.put(propertyName, value); }
default <T> T getProperty(String propertyName) { return getProperty(propertyName, null); }
protected int updateByPk(E entity) { return updateByPk(entity.getId(), entity); }
@SuppressWarnings("unchecked") default <T> T getProperty(String propertyName, T defaultValue) { Map<String, Object> map = getProperties(); if (map == null) { return null; } return (T) map.getOrDefault(propertyName, defaultValue); }
@Override public int updateByPk(PK pk, E entity) { Assert.notNull(pk, "primary key can not be null"); Assert.hasText(String.valueOf(pk), "primary key can not be null"); Assert.notNull(entity, "entity can not be null"); entity.setId(pk); tryValidate(entity, UpdateGroup.class); return createUpdate(entity) //如果是RecordCreationEntity则不修改creator_id和creator_time .when(entity instanceof RecordCreationEntity, update -> update.and().excludes(((RecordCreationEntity) entity).getCreatorIdProperty(), RecordCreationEntity.createTime)) .where(GenericEntity.id, pk) .exec(); }
@Override public PK saveOrUpdate(E entity) { if (dataExisted(entity)) { updateByPk(entity); } else { insert(entity); } return entity.getId(); }
default Map<String, Object> cloneProperties() { Map<String, Object> target = new LinkedHashMap<>(); Map<String, Object> old = getProperties(); if (old == null || old.isEmpty()) { return target; } old.forEach((k, v) -> { if (v instanceof CloneableEntity) { target.put(k, ((CloneableEntity) v).clone()); } else { target.put(k, v); } }); return target; } }
@Override public int updateByPk(PK pk, E entity) { Assert.notNull(pk, "primary key can not be null"); Assert.hasText(String.valueOf(pk), "primary key can not be null"); Assert.notNull(entity, "entity can not be null"); entity.setId(pk); tryValidate(entity, UpdateGroup.class); return createUpdate(entity) //如果是RecordCreationEntity则不修改creator_id和creator_time .when(entity instanceof RecordCreationEntity, update -> update.and().excludes(((RecordCreationEntity) entity).getCreatorIdProperty(), RecordCreationEntity.createTime)) .where(GenericEntity.id, pk) .exec(); }
@Override public PK insert(E entity) { if (!StringUtils.isEmpty(entity.getId())) { if ((entity.getId() instanceof String) && !StringUtils.isEmpty(entity.getId())) { tryValidateProperty(entity.getId().toString().matches("[a-zA-Z0-9_\\-]+"), "id", "只能由数字,字母,下划线,和-组成"); } tryValidateProperty(selectByPk(entity.getId()) == null, "id", entity.getId() + "已存在"); } if (StringUtils.isEmpty(entity.getId()) && getIDGenerator() != null) { entity.setId(getIDGenerator().generate()); } if (entity instanceof RecordCreationEntity) { ((RecordCreationEntity) entity).setCreateTimeNow(); } tryValidate(entity, CreateGroup.class); getDao().insert(entity); return entity.getId(); }
@PostConstruct public void init() { if (logicPrimaryKeyValidator instanceof DefaultLogicPrimaryKeyValidator) { DefaultLogicPrimaryKeyValidator.registerQuerySuppiler(getEntityInstanceType(), bean -> this.createQuery().not("id", bean.getId())); } }
protected int updateByPk(E entity) { return updateByPk(entity.getId(), entity); }
@Override public PK insert(E entity) { if (!StringUtils.isEmpty(entity.getId())) { if ((entity.getId() instanceof String) && !StringUtils.isEmpty(entity.getId())) { tryValidateProperty(entity.getId().toString().matches("[a-zA-Z0-9_\\-]+"), "id", "只能由数字,字母,下划线,和-组成"); } tryValidateProperty(selectByPk(entity.getId()) == null, "id", entity.getId() + "已存在"); } if (StringUtils.isEmpty(entity.getId()) && getIDGenerator() != null) { entity.setId(getIDGenerator().generate()); } if (entity instanceof RecordCreationEntity) { ((RecordCreationEntity) entity).setCreateTimeNow(); } tryValidate(entity, CreateGroup.class); getDao().insert(entity); return entity.getId(); }
@PostConstruct public void init() { if (logicPrimaryKeyValidator instanceof DefaultLogicPrimaryKeyValidator) { DefaultLogicPrimaryKeyValidator.registerQuerySuppiler(getEntityInstanceType(), bean -> this.createQuery().not("id", bean.getId())); } }
@Override public PK saveOrUpdate(E entity) { if (dataExisted(entity)) { updateByPk(entity); } else { insert(entity); } return entity.getId(); }