返回枚举集合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<Map> getStyle()
{
List<Map> rtn = new ArrayList<Map>();
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<StyleEnum>{
private Class<StyleEnum> type;
private StyleEnum[] enums;
/**
* 设置配置文件设置的转换类以及枚举类内容,供其他方法更便捷高效的实现
* @param type 配置文件中设置的转换类
*/
public StyleHandler(Class<StyleEnum> 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全局配置文件设置转化器
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<typeHandlers>
<typeHandler handler="com.test.model.StyleHandler"
javaType="com.test.model.StyleEnum" jdbcType="CHAR"/>
</typeHandlers>
</configuration>
SpringBoot配置文件设置Mybatis全局配置文件
mybatis.mapper-locations=classpath:mapper/*.xml
mybatis.config-locations=classpath:mybatis-cfg.xml
ElementUI VUE前端网页设计
<el-form-item label="景区风格">
<el-select v-model="student.style" placeholder="景区风格" style="width: 100%;">
<el-option v-for="c in stylelist" :label="c.name" :value="c.id">
</el-option>
</el-select>
</el-form-item>
<script>
import axios from 'axios'
export default {
data() {
return {
courseList:[],//所有课程
provincelist:[],//所有省份集合
citylist:[],//选中省份之后对应地区集合
countylist:[],//选中地区之后对应县市集合
stylelist:[],//选中地区之后对应县市集合
student:{//添加或修改时用到的学生对象
id:'',//学生ID
name:'',//学生姓名
age:'12',//学生年龄
province:'',//省份代码
city:'',//地区代码
county:'',//县市代码
dt:'',//日期
ts:'',//时间,
cids:[1,2], //选中的课程,
style:''
}
}
},
mounted() {
var id = this.$route.params.id;
this.openbyid(id);
this.doloadaddress();
this.loadcourse();
this.loadstyle();
},
methods: {
onSubmit() {
console.log('submit!');
this.dosave();
},
//加载课程
loadcourse:function()
{
var _this = this;
axios.get('http://localhost:6060/loadcourse')
.then(function(result){
//alert(result.data);
_this.courseList=result.data;
})
},
//加载景区风格
loadstyle:function()
{
var _this = this;
axios.get('http://localhost:6060/loadstyle')
.then(function(result){
//alert(result.data);
_this.stylelist=result.data;
})
},
//通过学生ID,获取学生对象
openbyid:function(id)
{
var _this = this;
axios.get('http://localhost:6060/findstudbyid?id='+id)
.then(function(result){
_this.student=result.data;
//调用VUE方法,初始化三级联动地址
_this.doloadaddress(_this.student.province,_this.student.city,
_this.student.county);
})
},
dosave:function()
{
console.log('dosave...');
var _this = this;
//将VUE对象student提交到后台
axios.post('http://localhost:6060/savestudent',_this.student)
.then(function(result){
if(result.data)
{
alert('Successfully');
_this.$router.push('/list');
}
else
alert('Failure');
})
},
selectprovince:function()//省份下列框选择事件
{
//选择地区,只输入省份Code
this.doloadaddress(this.student.province);
},
selectcity:function()//地区下列框选择事件
{
//选择县市,输入省份Code,地区Code
this.doloadaddress(this.student.province,this.student.city);
},
//初始化三级联动地址下列框
//province 省份代码 可空
//city 地区代码 可空
//county 县市代码 可空
doloadaddress:function(province,city,county)
{
console.log('doloadaddress...');
//定义_this记录VUE实例,应用axios中this代表
var _this = this;
//加载省份列表
axios.get('http://localhost:6060/getprovice')
.then(function(result){
_this.provincelist = result.data;
if(province != '' && province != null)
{
console.log('province...'+province);
_this.student.province = province;
}
else
{
//如果没有省份初始值,选择第一省份作为初始值
_this.student.province = result.data[0].code;
}
//根据省份Code,加载地区列表,发起请求,在下面语句中捕捉返回数据
return axios.get('http://localhost:6060/getcity?code='+_this.student.province);
})
.then(function(cityResult){
//捕捉地区列表数据
_this.citylist = cityResult.data;
if(city != '' && city != null)
{
console.log('city...'+city);
_this.student.city = city;
}
else
{
//如果没有地区初始值,选择第一地区作为初始值
_this.student.city = cityResult.data[0].code;
}
//根据地区Code,加载县市列表,发起请求,在下面语句中捕捉返回数据
return axios.get('http://localhost:6060/getcounty?code='+_this.student.city);
})
.then(function(countyResult){
//捕捉县市列表数据
_this.countylist = countyResult.data;
console.log('county...'+countyResult.data);
if(county != '' && county != null)
{
console.log('county...'+county);
_this.student.county = county;
}
else
{
//如果没有县市初始值,选择第一县市作为初始值
_this.student.county = countyResult.data[0].code;
}
})
}
}
}
</script>