天天看點

java myBatis 枚舉字段處理

package com.youboy.crm.dto.enums;

public enum PayStatusEnum {

	/**已支付**/
	PAID(1,"已支付"),	/**末支付**/NONPAYMENT(2,"末支付");
	
	private int ordinal;
	private String name;

	private PayStatusEnum(int ordinal,String name) {
		this.ordinal=ordinal;
		this.name=name;
	}

	public int getOrdinal() {
		return ordinal;
	}

	public void setOrdinal(int ordinal) {
		this.ordinal = ordinal;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	
	/**
	 * 根據編号擷取名稱
	 * 
	 * @param ordinal
	 * @return 存在傳回對應的名稱,不存在傳回null
	 */
	public static String getName(int ordinal) {
		for (PayStatusEnum e : PayStatusEnum.values()) {
			if (e.getOrdinal() == ordinal) {
				return e.name;
			}
		}
		return null;
	}
	
	
	/**
	 * 根據編号擷取
	 * 
	 * @param ordinal
	 * @return 存在傳回對應的名稱,不存在傳回null
	 */
	public static PayStatusEnum get(int ordinal) {
		for (PayStatusEnum e : PayStatusEnum.values()) {
			if (e.getOrdinal() == ordinal) {
				return e;
			}
		}
		return null;
	}
	
	public static PayStatusEnum get(String Name) {
		for (PayStatusEnum e : PayStatusEnum.values()) {
			if (e.getName().equals(Name)) {
				return e;
			}
		}
		return null;
	}

	/**
	 * 根據名稱傳回編号
	 * 
	 * @param name
	 * @return 存在傳回編号,不存在傳回-1
	 */
	public static int getOrdinal(String name) {
		for (PayStatusEnum e : PayStatusEnum.values()) {
			if (e.getName() == name) {
				return e.ordinal;
			}
		}
		return -1;
	}
	
	
	public static void main(String[] args) {
		
		System.out.println(PayStatusEnum.get(1).getName());
		System.out.println(PayStatusEnum.get("已支付").getName());
		
		System.out.println(PayStatusEnum.getOrdinal("已支付"));
		
		System.out.println(PayStatusEnum.getName(1));
		
		
	}
	
	
}
           
package com.youboy.crm.dto.enums.utils;

import java.sql.CallableStatement;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

import org.apache.ibatis.type.BaseTypeHandler;
import org.apache.ibatis.type.JdbcType;

import com.youboy.crm.dto.enums.PayStatusEnum;

public class PayStaHandler extends BaseTypeHandler<PayStatusEnum> {

	@Override
	public void setNonNullParameter(PreparedStatement ps, int i,
			PayStatusEnum parameter, JdbcType jdbcType) throws SQLException {
		ps.setInt(i, parameter.getOrdinal());
	}

	@Override
	public PayStatusEnum getNullableResult(ResultSet rs, String columnName)
			throws SQLException {
		int i = rs.getInt(columnName);
		if (rs.wasNull()) {
			return null;
		} else {
			return PayStatusEnum.get(i);
		}
	}

	@Override
	public PayStatusEnum getNullableResult(ResultSet rs, int columnIndex)
			throws SQLException {
		int i = rs.getInt(columnIndex);
		if (rs.wasNull()) {
			return null;
		} else {
			return PayStatusEnum.get(i);
		}
	}

	@Override
	public PayStatusEnum getNullableResult(CallableStatement cs, int columnIndex)
			throws SQLException {
		int i = cs.getInt(columnIndex);
		if (cs.wasNull()) {
			return null;
		} else {
			return PayStatusEnum.get(i);
		}
	}
}
           
<!--=========================查詢資料傳回集合 配置====================================================== -->
	<resultMap type="com.youboy.crm.domain.BStoreApply" id="resultMapId">
		<id property="id" column="id" />
		<result property="type" column="type" typeHandler="com.youboy.crm.dto.enums.utils.ProductEnumHandler"/>
	</resultMap>
           
public static ProductEnum get(Object code) {
		for (ProductEnum e : ProductEnum.values()) {
			if ((e.getCode() + "").equals(code.toString())
					|| e.getName().equals(code.toString())) {
				return e;
			}
		}
		return null;
	}
           

轉json 時 用了個笨方法

public String getTypeName() {
		return type.getName();
	}

	public ProductEnum getType() {
		return type;
	}
           

繼續閱讀