一、项目开发期间,数据库有些常量类型,在java实现中,基本上是对应的实体对象,然后在注释中标记1:表示什么,2:表示什么。然后在页面展示也是if(1=="")表示什么,elseif(2=="")表示什么。。
二、使用枚举可以大大减低这种前端的复杂度。
1.枚举类实现:
//接口
public interface IEnum {
String getCode();
String getDesc();
}
public enum WebEnum implements IEnum{
TAOBAO("1","www.jd.com"),
TMALL("2","www.tmall.com"),
;
private String code;
private String desc;
/**
* @return the code
*/
public String getCode() {
return code;
}
/**
* @return the desc
*/
public String getDesc() {
return desc;
}
private WebEnum(final String code,final String desc){
this.code = code;
this.desc = desc;
}
public static WebEnum fromCode(String code){
for (WebEnum webEnum : WebEnum.values()) {
if(webEnum.getCode().equals(code)){
return webEnum;
}
}
return null;
}
}
2.ibatis 提供了自定义的类型转换器
public class TaskStatusTypeHandlerCallback implements TypeHandlerCallback {
@Override
public void setParameter(ParameterSetter setter, Object parameter)
throws SQLException {
TaskStatus taskStatus = (TaskStatus) parameter;
setter.setInt(taskStatus.getCode());
}
@Override
public Object getResult(ResultGetter getter) throws SQLException {
return TaskStatus.fromCode(getter.getInt());
}
@Override
public Object valueOf(String s) {
return s;
}
}
<typeHandler jdbcType="int"
javaType="com.xxxx.proof.enums.TaskStatus" callback="TaskStatusTypeHandlerCallback" />
<resultMap class="ProofTask" id="ResultProofTaskMap">
<result property="taskStatus" column="task_status"
typeHandler="TaskStatusTypeHandlerCallback" />
</resultMap>
<update id="updateProofTaskStatus" parameterClass="map">
UPDATE
PROOF_TASK SET
TASK_STATUS=#taskStatus,handler=TaskStatusTypeHandlerCallback#,
GMT_MODIFIED=NOW()
WHERE ID=#id#
</update>