1.dao 字段名字没映射好
...
Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.
2020-09-03 19:39:23.978 ERROR 28777 --- [ main] o.s.boot.SpringApplication : Application run failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userDao': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: Validation failed for query for method public abstract com.gdp.demo3.entity.User com.gdp.demo3.dao.UserDao.findByUsername(java.lang.String)!
...
大概这样一段报错,实际是我数据库和实体类字段没对应上。
package com.xxx.xxx.entity
import java.util.*
import javax.persistence.*
import javax.validation.constraints.NotEmpty
import javax.validation.constraints.Size
@Table(name = "user")
@Entity
class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
var id: Long = -1
@Column(unique = true)
@NotEmpty(message = "用户名不能为空")
@Size(message = "用户名长度在1~20之间", max = 100, min = 1)
var userName: String = ""
@NotEmpty(message = "密码不能为空")
@Size(message = "密码长度在6~100之间", max = 100, min = 6)
var password: String = ""
}
数据库中 userName 是全部小写,没有任何分割符的,改成 username 就好了。
2.Freemarker 页面老是 404
Spring Boot 2.3.3 的时候发现的,Freemarker 的默认后缀发生了变化,以前可能是 .ftl
,现在是 .ftlh
。可能是这个造成不能找的模板的。
application.properties
文件设置 spring.freemarker.suffix=.ftlh
可以自己随意设置后缀。