62,616
社区成员
发帖
与我相关
我的任务
分享
@Documented
@Target({ElementType.TYPE,ElementType.METHOD,ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
public abstract @interface HLBean {
/**
* 实体对象表名
* */
public String tableName() default "className";
}
实体对象:InternalNoticeBean .java
@HLBean(tableName = "t_yw_neibugg")
public class InternalNoticeBean extends BaseBean implements Serializable {
private static final long serialVersionUID = 6582029951820426081L;
@HLColumn(commont = "主键", length = 20)
private Long id;
@HLColumn(commont = "标题", length = 50)
private String biaoti;
@HLEnum(enumName = "TOPTYPESTATE")
@HLColumn(commont = "置顶", length = 1)
private Integer isZhiD;
@HLEnum(enumName = "ACCEPTTYPESTATE")
@HLColumn(commont = "分类", length = 1)
private Integer fenlei;
@HLColumn(commont = "内容", length = 1000)
private String neirong;
@HLColumn(commont = "接受人类型", length = 1)
private Integer jieshouLX;
}
反射解析类:FieldsToSql .java(将对象转为sql根据自己定义的规则)
public final class FieldsToSql {
protected static final Logger log = org.apache.log4j.Logger
.getLogger(BeanToSql.class);
// 解析增加属性
public final static void pasreClass4Insert(Object bean, StringBuilder sb1,
StringBuilder sb2, Field[] fields) {
for (Field field : fields) {
// 设置强制访问
field.setAccessible(true);
if (field.getAnnotation(HLTransient.class) != null) {
continue;
}
// 属性名称
String fieldName = field.getName();
// 不需要解析的属性
if (BeanUtil.INCLUDEFIELDLIST.contains(fieldName))
continue;
// 类型
Class<?> fieldType = field.getType();
// 属性值
try {
Object value = field.get(bean);
//值为空则跳过
if(value == null){
continue;
}
sb1.append(",");
sb1.append(fieldName);
if (fieldType.equals(String.class)) {
sb2.append(",");
if (value == null) {
sb2.append("null");
} else {
sb2.append("'");
sb2.append(((String) value).trim());
sb2.append("'");
}
} else if (fieldType.equals(int.class)
|| fieldType.equals(Integer.class)) {
sb2.append(",");
sb2.append("'" + value + "'");
} else if (fieldType.equals(Date.class)) {
sb2.append(",");
sb2.append("'"
+ DateUtil.getDateString(((Date) value),
"yyyy-MM-dd HH:mm:ss") + "'");
} else if (fieldType.equals(Long.class)
|| fieldType.equals(Double.class)
|| fieldType.equals(Float.class)) {
sb2.append(",");
sb2.append("'" + value + "'");
}
} catch (IllegalArgumentException e) {
log.error(e.getMessage());
} catch (IllegalAccessException e) {
log.error(e.getMessage());
}
}
}}
以上是部分自己封装的代码
总结:反射加注解,在框架中几乎都需要用到,没有反射就没有框架,ps:如果分儿给我的话可以给你发比较全一点的代码!