All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.cucc.utils.InitTool Maven / Gradle / Ivy

package cn.cucc.utils;

import java.lang.reflect.Field;
import java.util.Set;

import javax.persistence.Entity;
import javax.transaction.Transactional;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;

import cn.cucc.bean.InitValue;
import cn.cucc.bean.Update;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ReflectUtil;

@Service
public class InitTool {
	@Autowired
	PackageTools packageTools;

	@Autowired
	JpaHelper jpaHelper;

	@Autowired
	JdbcTemplate jdbcTemplate;

	@Value("${spring.datasource.url:}")
	String url;

	@Transactional
	public void init() {
		Set> set = ClassUtil.scanPackage(packageTools.getMainPackage());
		// 注入默认值
		for (Class clazz : set) {
			Entity entity = clazz.getAnnotation(Entity.class);
			if (entity != null) {
				Field[] fields = ReflectUtil.getFields(clazz);
				for (Field field : fields) {
					if (field.isAnnotationPresent(InitValue.class)) {
						InitValue defaultValue = field.getAnnotation(InitValue.class);
						if (defaultValue.value() != null) {
							// 更新默认值
							Long count = jpaHelper.findCountByQuery(new ConditionAndWrapper().isNull(field.getName()), clazz);
							if (count > 0) {
								String value = defaultValue.value();
								Object obj = null;
								// 获取字段类型
								Class type = field.getType();
								if (type.equals(String.class)) {
									obj = value;
								}
								if (type.equals(Short.class)) {
									obj = Short.parseShort(value);
								}
								if (type.equals(Integer.class)) {
									obj = Integer.parseInt(value);
								}
								if (type.equals(Long.class)) {
									obj = Long.parseLong(value);
								}
								if (type.equals(Float.class)) {
									obj = Float.parseFloat(value);
								}
								if (type.equals(Double.class)) {
									obj = Double.parseDouble(value);
								}
								if (type.equals(Boolean.class)) {
									obj = Boolean.parseBoolean(value);
								}

								jpaHelper.updateByQuery(new ConditionAndWrapper().isNull(field.getName()), new Update().set(field.getName(), obj), clazz);
							}
						}
					}
				}
			}
		}
	}

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy