我已经和enum一起努力了一段时间,但它不会按我的方式。 有没有人可以给我提示? 我想在MySql中使用枚举类型,我也在我的代码中使用Enum类。如何使用typeHandler在插入中映射枚举类型在mybatis中
由于现在的代码它会插入MONDAY,但它也会尝试在workdayID上插入MONDAY ...我没有得到workdayID。 我相信我必须以索姆的方式处理DAY_TYPE ...定义一个typeHandler也许? 但我试过,它不会工作,或者它的becouse我不能做到正确?
我也试过org.apache.ibatis.type.EnumTypeHandler但没有成功,这样
#{DAY_TYPE,typeHandler=org.apache.ibatis.type.EnumTypeHandler}
DAY_TYPE.java
package tut.model;
import java.io.Serializable;
public enum DAY_TYPE implements Serializable{
MONDAY(1),TUESDAY(2),WEDNESDAY(3),THURSDAY(4),FRIDAY(5),SATURDAY(6),SUNDAY(7);
private int id; private int workdayID;
private DAY_TYPE(int id) { this.id = id; }
public int getId() { return id; }
public void setId(int id) { this.id = id; }
public int getWorkdayID() { return workdayID; }
public void setWorkdayID(int workdayID) {this.workdayID = workdayID;}
}
DAY_TYPE_Mapper.xml
<insert id="insert" parameterType="DAY_TYPE" useGeneratedKeys="true" keyProperty="iddaytaype">
INSERT INTO daytaype (DAY_TYPE, workdayID)
VALUES (#{DAY_TYPE},#{workdayID})
<selectKey keyProperty="iddaytaype" resultType="long" order="AFTER">
SELECT LAST_INSERT_ID();
</selectKey>
</insert>
<!-- <insert id="insert" parameterMap="insert-params" useGeneratedKeys="true" keyProperty="iddaytaype"> -->
<parameterMap id="insert-params" type="DAY_TYPE">
<parameter property="DAY_TYPE" javaType="DAY_TYPE" typeHandler="mappings.XenumTypeHandler" />
<parameter property="workdayID" javaType="int" />
</parameterMap>
我的数据库表
CREATE TABLE `daytaype` (
`iddaytaype` int(11) NOT NULL AUTO_INCREMENT,
`DAY_TYPE` enum('MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY') NOT NULL,
`workdayID` int(11) unsigned DEFAULT NULL,
PRIMARY KEY (`iddaytaype`),
KEY `fk_workDayID_idWorkDay` (`workdayID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;=InnoDB DEFAULT CHARSET=utf8;
也许你不能使用枚举作为parameterType? 像这样'parameterType =“DAY_TYPE”' – user2279869
好的,任何人? 至少告诉我,如果我很不耐烦,或者没有做我的功课或者还有其他东西丢失了,是的,我知道有些人说,通常不会在代码和数据库中存储枚举值,而只是将ID存储在数据库中。 – user2279869
http://stackoverflow.com/questions/10219253/mybatis-enum-usage – jalopaba