Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zmapować typ Enum w mybatis za pomocą typeHandler podczas wstawiania

Dzień roboczy istnieje w tej formie

    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....

Właściwym rozwiązaniem jest oczywiście dodanie enum do tabeli dni roboczych ... i wierzę, że spowoduje to ponowne wykorzystanie przejętej bazy danych.

    <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>   

A teraz usuń tabelę daytaypeI zamiast tego dodaj enum bezpośrednio w tabeli dni roboczych.

    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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela natywna „performance_schema”.'??? ma złą strukturę

  2. mysql zastępuje znaki specjalne html odpowiednikami UTF

  3. Wybierz wiersz i rzędy wokół niego

  4. Usuń wszystkie daty zerowe z bazy danych MySQL we wszystkich tabelach

  5. Mysql:BŁĄD 1005 (HY000):Nie można utworzyć tabeli „receitascakephp.recipes” (errno:150)