Mybatis中使用Java枚举类型

返回枚举集合JSON

定义枚举

package com.test.model;

import java.util.HashMap;
import java.util.Map;

public enum StyleEnum {
	
	A2("AA"),A3("AAA"),A4("AAAA"),A5("AAAAA");

	private String name = null;
	
	StyleEnum(String name)
	{
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	
	public static Map enum2Json(StyleEnum se)
	{
		Map map = new HashMap();
		map.put("id",se.toString());//A2,A3,A4,A5
		map.put("name",se.getName());
		return map;
	}
}

Controller返回枚举JSON

	@RequestMapping("/loadstyle")
	@ResponseBody
	public List getStyle()
	{
		List rtn = new ArrayList();
		rtn.add(StyleEnum.enum2Json(StyleEnum.A2));
		rtn.add(StyleEnum.enum2Json(StyleEnum.A3));
		rtn.add(StyleEnum.enum2Json(StyleEnum.A4));
		rtn.add(StyleEnum.enum2Json(StyleEnum.A5));
		return rtn;
	}

枚举参与Mybatis操作

定义实体类

package com.test.model;

import java.sql.Timestamp;

import com.fasterxml.jackson.annotation.JsonFormat;

import java.io.Serializable;
import java.sql.Date;

public class StudentInfo implements Serializable{
	private Integer id = null;
	private String name = null;
	private Integer age = null;
	private String province = null;
	private String city = null;
	private String county = null;
	@JsonFormat(pattern="yyyy-MM-dd",timezone = "GMT+8")
	private Date dt = null;
	@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
	private Timestamp ts = null;
	private String provinceName = null;
	private String cityName = null;
	private String countyName = null;
	private String[] cids = null;
	private StyleEnum style = null;
	private String styleString = null;
	
	public Integer getId() {
		return id;
	}
	public void setId(Integer id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getProvince() {
		return province;
	}
	public void setProvince(String province) {
		this.province = province;
	}
	public String getCity() {
		return city;
	}
	public void setCity(String city) {
		this.city = city;
	}
	public String getCounty() {
		return county;
	}
	public void setCounty(String county) {
		this.county = county;
	}	
	public Date getDt() {
		return dt;
	}
	public void setDt(Date dt) {
		this.dt = dt;
	}
	public Timestamp getTs() {
		return ts;
	}
	public void setTs(Timestamp ts) {
		this.ts = ts;
	}
	public String getProvinceName() {
		return provinceName;
	}
	public void setProvinceName(String provinceName) {
		this.provinceName = provinceName;
	}
	public String getCityName() {
		return cityName;
	}
	public void setCityName(String cityName) {
		this.cityName = cityName;
	}
	public String getCountyName() {
		return countyName;
	}
	public void setCountyName(String countyName) {
		this.countyName = countyName;
	}
	public String[] getCids() {
		return cids;
	}
	public void setCids(String[] cids) {
		this.cids = cids;
	}
	public StyleEnum getStyle() {
		return style;
	}
	public void setStyle(StyleEnum style) {
		this.style = style;
	}
	public String getStyleString() {
		return styleString;
	}
	public void setStyleString(String styleString) {
		this.styleString = styleString;
	}
	public String toString()
	{
		return "StudentInfo[name="+name+",age="+age+",province="+province+",city="+city+",county="+county+",style="+style+",styleString="+styleString+"]";
	}
}

定义枚举转化器

package com.test.model;

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; 
  
public class StyleHandler extends BaseTypeHandler{ 
	private Class type; 
	  
	private StyleEnum[] enums; 
	  
	/** 
	* 设置配置文件设置的转换类以及枚举类内容,供其他方法更便捷高效的实现 
	* @param type 配置文件中设置的转换类 
	*/
	public StyleHandler(Class type) { 
		if (type == null) 
			throw new IllegalArgumentException("Type argument cannot be null"); 
		this.type = type; 
		this.enums = type.getEnumConstants(); 
		if (this.enums == null) 
			throw new IllegalArgumentException(type.getSimpleName() 
			+ " does not represent an enum type."); 
	} 
	  
	@Override
	public StyleEnum getNullableResult(ResultSet rs, String columnName) throws SQLException { 
		// 根据数据库存储类型决定获取类型,本例子中数据库中存放String类型 
		String str = rs.getString(columnName); 
		if (rs.wasNull()) { 
			return null; 
		} else { 
			// 根据数据库中的value值,定位PersonType子类 
			return StyleEnum.valueOf(str); 
		} 
	} 
	  
	@Override
	public StyleEnum getNullableResult(ResultSet rs, int columnIndex) throws SQLException { 
		// 根据数据库存储类型决定获取类型,本例子中数据库中存放String类型 
		String str = rs.getString(columnIndex); 
		if (rs.wasNull()) { 
			return null; 
		} else { 
			// 根据数据库中的value值,定位PersonType子类 
			return StyleEnum.valueOf(str); 
		} 
	} 
	  
	@Override
	public StyleEnum getNullableResult(CallableStatement cs, int columnIndex) throws SQLException { 
		// 根据数据库存储类型决定获取类型,本例子中数据库中存放String类型 
		String str = cs.getString(columnIndex); 
		if (cs.wasNull()) { 
			return null; 
		} else { 
			// 根据数据库中的value值,定位PersonType子类 
			return StyleEnum.valueOf(str); 
		} 
	} 
	  
	@Override
	public void setNonNullParameter(PreparedStatement ps, int i, StyleEnum parameter, JdbcType jdbcType) 
	throws SQLException { 
		// baseTypeHandler已经帮我们做了parameter的null判断 
		ps.setString(i, parameter.toString()); 
	}
}

通过Mybatis全局配置文件设置转化器

 
 
 
	 
		 
	 


SpringBoot配置文件设置Mybatis全局配置文件

mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.config-locations=classpath:mybatis-cfg.xml

ElementUI VUE前端网页设计

  
    
      
      
    
  


你可能感兴趣的:(Mybatis)