sql >> Database teknologi >  >> RDS >> Mysql

Sådan kortlægges Enum-type i mybatis ved hjælp af typeHandler på indstik

Arbejdsdagen eksisterer som denne

    public class Workday implements Serializable{
        private long idWorkDay;
        private Date start;
        private Date end;
        private List<Workbreak> workBreaks;
        private DAY_TYPE DAY_TYPE;
        private long workweekID;
        getter setter....

Den korrekte løsning er selvfølgelig at tilføje enum i arbejdsdagstabellen ... og det vil efter min mening reducere databasebeslaglæggelsen.

    <insert id="insert" parameterType="workday" useGeneratedKeys="true" keyProperty="idWorkDay">
      INSERT INTO workday 
        ( start , end , workweekID , DAY_TYPE )
      VALUES (
        #{start},
        #{end},
        #{workweekID},
        #{DAY_TYPE, typeHandler=org.apache.ibatis.type.EnumTypeHandler}
      )
        <selectKey keyProperty="idWorkDay" resultType="long" order="AFTER">
            SELECT LAST_INSERT_ID();
        </selectKey>
    </insert>   

Og slet nu daytaype tableOg tilføj enum direkte i workday table i stedet for.

    CREATE TABLE `workday` (
      `idworkday` int(11) NOT NULL AUTO_INCREMENT,
      `start` time DEFAULT '08:00:00',
      `end` time DEFAULT '17:00:00',
      `workweekID` int(11) DEFAULT NULL,
      `DAY_TYPE` enum('MONDAY','TUESDAY','WEDNESDAY','THURSDAY','FRIDAY','SATURDAY','SUNDAY') DEFAULT NULL,
      PRIMARY KEY (`idworkday`),
      KEY `fk_workweek_workweekID` (`workweekID`),
      CONSTRAINT `fk_workweek_workweekID` FOREIGN KEY (`workweekID`) REFERENCES `workweek` (`idworkweek`) ON DELETE CASCADE ON UPDATE NO ACTION
    ) ENGINE=InnoDB AUTO_INCREMENT=139 DEFAULT CHARSET=utf8 ;


  1. Mysql fjern det specifikke ord i kommasepareret streng

  2. PHP-forbindelse mislykkedes:SQLSTATE[HY000] [2002] Forbindelsen blev afvist

  3. hvad betyder slet fra tabel hvor NULL =NULL betyder?

  4. Hvordan kan jeg oprette forbindelse til en ekstern databaseserver, der kræver en SSH-tunnel?