Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách ánh xạ kiểu Enum trong mybatis bằng cách sử dụng typeHandler khi chèn

Ngày làm việc tồn tại như sau

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

Tất nhiên, giải pháp chính xác là thêm enum trong bảng ngày làm việc ... và nó sẽ sử dụng lại cơ sở dữ liệu mà tôi tin tưởng rất nhiều.

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

Và bây giờ hãy xóa bảng daytaype và thêm enum trực tiếp vào bảng ngày làm việc.

    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. Các cách thay thế để tránh giới hạn mã địa lý với Google Maps

  2. MySQL. Chọn phạm vi năm

  3. Truy cập cơ sở dữ liệu mysql từ máy chủ / ip bên ngoài? (ví dụ:bàn làm việc mysql)

  4. Sử dụng hàm password_hash và password_verify của PHP 5.5

  5. mysql_num_rows ():đối số được cung cấp không phải là tài nguyên kết quả MySQL hợp lệ