sql >> データベース >  >> RDS >> Mysql

挿入時にtypeHandlerを使用してmybatisの列挙型をマップする方法

    Workdayはこのように存在します

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

    正しい解決策はもちろん、就業日テーブルに列挙型を追加することです...そしてそれはデータベースを再利用して私が信じている多くのことをつかみます。

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

    そして、daytaypeテーブルを削除し、代わりにworkdayテーブルに列挙型を直接追加します。

        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. PostgreSQLbytea列の16進数をrのint16/uint16にデコードする方法は?

    2. 有用なOracleAppsプリンタークエリのトップ9

    3. MySQLエラーを解決する方法FROM句で更新するターゲットテーブルXを指定できませんか?

    4. SQLServerで複合主キーを作成する