mybatis/tk mybatis下實體字段是關鍵字/保留字,執行報錯


實體如下:

import com.fasterxml.jackson.annotation.JsonFormat;
import com.xxx.web.bean.PagesStatic;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.persistence.Column;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Transient;
import java.time.LocalDateTime;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
/***
 * app圖標
 */
@JsonFormat
public class ApiCertificate{
    @Id
    @GeneratedValue(generator = "JDBC")
    @Transient
    private Integer id;

    private String url;

    @Column(name = "`order`") private Integer order;

    private Integer creatorId;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8")
    private LocalDateTime createTime;
}

tk mybatis使用動態sql語句的insert方法報錯:

### SQL: INSERT INTO api_certificate  ( url,order,creator_id,create_time ) VALUES( ?,?,?,? )
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order,creator_id,create_time ) VALUES( 'certificate/6c38dea0-3450-4bdf-8cd4-f42b' at line 1
; bad SQL grammar []; nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order,creator_id,create_time ) VALUES( 'certificate/6c38dea0-3450-4bdf-8cd4-f42b' at line 1
    at org.springframework.jdbc.support.SQLErrorCodeSQLExceptionTranslator.doTranslate(SQLErrorCodeSQLExceptionTranslator.java:234)
    at org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java:72)
    at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:73)

解決方法,在sql關鍵字字段上加@Column注解,注意不同數據下關鍵字轉義字符的不同,以上是mysql

 

springmvc下可以通過xml文件配置。可以到網上去搜 mybatis beginningDelimiter endingDelimiter

 

參考來源:https://vladmihalcea.com/escape-sql-reserved-keywords-jpa-hibernate/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM