依赖
<dependency >
<groupId > org.springframework.boot</groupId >
<artifactId > spring-boot-starter-data-jpa</artifactId >
</dependency >
.yml文件
server:
port: 8080
context-path: /
helloWorld: spring Boot\u5927\u7237\u4F60\u597D
msyql:
jdbcName: com .mysql .jdbc .Driver
dbUrl: jdbc:mysql://localhost:3306 /wj33
userName: root
password:
spring:
datasource:
driver-class-name: com .mysql .jdbc .Driver
url: jdbc:mysql://localhost:3306 /wj33?useUnicode=true&characterEncoding=utf-8 &useSSL=false
username: root
password:
jpa:
hibernate.ddl -auto: update
show-sql: true
database-platform: com .lunwen .wangjie .config .MySQL 5DialectUTF8
thymeleaf:
cache: false
实体类
实体类的注解 会根据注解自动生成表字段, @Table指定表名,不填,默认为类名 @Column指定字段名,不填,默认为属性名 其他注解指定字段的规则
import javax.persistence.*;
@Entity
@Table (name = "user" )
public class User {
@Id
@GeneratedValue (strategy = GenerationType.IDENTITY)
private Integer id;
/** 姓名 */
@Column (name = "name" )
private String name;
/** 密码 */
@Column (name = "password" )
private String password;
/** email */
@Column (name = "email" )
private String email;
/** level 用于判断学生0 教师1 管理员2*/
@Column (name = "level" )
private int level;
/** 学号 工号 */
@Column (name = "number" , unique = true )
private String number;
public String getName () {
return name;
}
public void setName (String name) {
this .name = name;
}
public String getPassword () {
return password;
}
public void setPassword (String password) {
this .password = password;
}
public String getEmail () {
return email;
}
public void setEmail (String email) {
this .email = email;
}
public int getLevel () {
return level;
}
public void setLevel (int level) {
this .level = level;
}
public String getNumber () {
return number;
}
public void setNumber (String number) {
this .number = number;
}
}
数据访问层
操作数据访问的接口,支持三种查询,hql, sql, 方法名语义分析。 下列代码是通过hql查询,也就是通过类名,属性名
import com.lunwen.wangjie.model.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
public interface UserDao extends JpaRepository<User, Long>{
/**
* 通过名字 查找用户
* @param name 姓名
* @return User
*/
@Query ("from User u where u.name=:name" )
User findUser(@Param ("name" ) String name);
/**
* 通过email查找用户
* @param email
* @return
*/
@Query ("from User u where u.email=:email" )
User findUserByEmail(@Param ("email" ) String email);
/**
* 通过学号/工号查找用户
* @param number number
* @return User
*/
@Query ("from User u where u.number=:number" )
User findUserByNumber(@Param ("number" ) String number);
}
也可能过原生的sql查询@Query(“原生sql”) 也可通过方法名拼接如下 findAllByWno,会语义分析为查找所有的当前类,通过wno字段,从数据库中去捞数据,一般Idea会自动告诉你如何拼接可行的方法名。 还可以继承分页的数据访问Repository,现在继承的是JpaRepository,里面指定类名,就会关联的数据库中的表。
import com.lunwen.wangjie.model.StudentWork;
import org.springframework.data.jpa.repository.JpaRepository;
import java.util.List ;
public interface StudentWorkDao extends JpaRepository <StudentWork , Long >{
List <StudentWork> findAllByWno(Long wno);
List <StudentWork> findAllBySno(String sno);
StudentWork findStudentWorkBySnoAndWno(String sno, Long wno);
}
高级内容,一对一,一对多,多对多,懒延迟等,后续说。