實體如下:
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/
