知識點:在Java中,使用枚舉類,當遇到實例類型有限的類時,並且數據庫中用狀態碼代表一種含義時,如星期,性別,員工登陸某系統的狀態等等,
可以考慮使用枚舉類
本例子可以仿照,也可以使用自定義的類型處理器,處理枚舉類型,使用方法參考另一篇博客:https://www.cnblogs.com/shuaifing/p/9330913.html
(1)枚舉類
EmpsStatus.java一種狀態碼代碼一種登錄狀態,如100代表用戶已登錄,其中getEmpStatusByCode,getEmpEnum都是根據用戶的狀態碼獲取對應的枚舉類,實際中可以調用作用一致
/*
*
* 保存數據庫100,200,狀態嗎,不是默認的0,或者枚舉名
* */
public enum EmpsStatus {
LOGIN(100,"用戶登錄"),LOGINOUT(200,"用戶退出"),REMOVE(300,"用戶不存在");
private Integer code;
private String msg;
private EmpsStatus(Integer code,String msg) {
this.code=code;
this.msg=msg;
}
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
//按照狀態碼返回枚舉對象
public static EmpsStatus getEmpStatusByCode(Integer code){
switch (code) {
case 100:
return LOGIN;
case 200:
return LOGINOUT;
case 300:
return REMOVE;
default:
return LOGINOUT;
}
}
public static EmpsStatus getEmpEnum(int code) { //使用int類型
for(EmpsStatus sourceEnum: EmpsStatus.values()) {
if(sourceEnum.getCode() == code) return sourceEnum;
}
return null;
}
}
(2)實體類
Employee.java
public class Employee {
private Integer id;
private String lastName;
private String email;
private String gender;
//員工狀態
private EmpsStatus empStatus=EmpsStatus.LOGINOUT;
private String empstsus;//改字段為員工狀態碼字段,與數據中的字段對應
public Employee() {
// TODO Auto-generated constructor stub
}
public Employee(String lastName, String email, String gender) {
super();
this.lastName = lastName;
this.email = email;
this.gender = gender;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public EmpsStatus getEmpsStatus() {
return empStatus;
}
public void setEmpsStatus(EmpsStatus empsStatus) {
this.empStatus = empsStatus;
}
public String getEmpstsus() {
return empstsus;
}
public void setEmpstsus(String empstsus) {
this.empstsus = empstsus;
}
@Override
public String toString() {
return "Employee [id=" + id + ", lastName=" + lastName + ", email="
+ email + ", gender=" + gender +", empstsus=" + empstsus+ "]";
}
}
(3)測試方法調用
@Test
public void testEnumStaus()throws IOException{
SqlSessionFactory sqlSessionFactory= getSqlSessionFactory();
SqlSession openSession= sqlSessionFactory.openSession();
try{
EmployeeMapper mapper=openSession.getMapper(EmployeeMapper.class);
List<Employee> emplist= mapper.getEmps();
Employee emp=new Employee();
//利用枚舉類,對員工登錄狀態類型字段進行翻譯
EmpsStatus empsStatus=null;
for(int i=0;i<emplist.size();i++){
emp=emplist.get(i);
empsStatus= empsStatus.getEmpEnum(Integer.parseInt(emp.getEmpstsus()));
System.out.println("code"+Integer.parseInt(emp.getEmpstsus()));
System.out.println("msg1"+empsStatus.getMsg());
if(empsStatus!=null) {
emp.setEmpstsus(empsStatus.getMsg());//數據庫,查詢emp對象后,根據員工狀態字段調用getEmpEnum枚舉類,方法,得到相應含義,再次賦值給emp對象的相應字段
System.out.println("msg2"+empsStatus.getMsg());
}
}
for (Employee employee : emplist) {
System.out.println(employee);
}
/*openSession.commit();*/
}finally{
openSession.close();
}
}
源碼:https://github.com/shuaishuaihand/enumdemo.git
