枚举使用(ibatis sql 转换)

一、项目开发期间,数据库有些常量类型,在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>




                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值