创建项目:
以下四个地方一般需要改动
勾选上lombok、jpa、mysql驱动包即可
以上环境准备好之后,开始编写代码。
第一步:
编写配置文件
spring:
# 连接mysql的四参数
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/test
username: root
password: root
jpa:
# 告诉jpa连接哪种数据库类型
database: mysql
# ddl-auto有四个值,详情看一下资料
hibernate:
ddl-auto: update
# 是否显示sql语句
show-sql: true
# 懒加载,这里不写,调用getById方法时会出现问题
properties:
hibernate:
enable_lazy_load_no_trans: true
第二布:
创建实体类
package com.huangxin.entity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import javax.persistence.*;
import java.io.Serializable;
/**
* jpa里面的,有个name值,对应底层数据库的表名
*/
@Entity(name = "user")
/**
* 以下三个注解是lombok里面的注解。
*/
@Data
@NoArgsConstructor
@AllArgsConstructor
public class UserDo implements Serializable {
/**
* id注解声明为数据库的主键
* GeneratedValue注解是代表自增
*/
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
/**
* @Column代表表中的字段
*/
@Column
private String uname;
@Column
private String sex;
@Column
private int age;
public UserDo(String uname, String sex, int age) {
this.uname = uname;
this.sex = sex;
this.age = age;
}
}
创建test文件测试:这里会显示表已经创建成功了,可以进入MySQL中查看
@Test
void contextLoads() {
System.out.println("建表成功了");
}
实现CRUD操作
编写dao层接口,实现jpa中核心接口-->JpaRepository<T,TD>
T代表实体类,TD代表数据库主键的数据类型
例如:
package com.huangxin.dao;
import com.huangxin.entity.UserDo;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
@Repository
public interface UserDao extends JpaRepository<UserDo,Integer> {
}
创建测试类进行操作:
package com.huangxin;
import com.huangxin.dao.UserDao;
import com.huangxin.entity.UserDo;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.List;
@SpringBootTest
class Jpademo01ApplicationTests {
@Autowired
private UserDao userDao;
// 进行建表操作,正向工程
@Test
void contextLoads() {
System.out.println("建表成功了");
}
@Test
void insertUser(){
UserDo userDo = new UserDo("石头人","未知",21);
userDao.save(userDo);
System.out.println("添加成功");
}
@Test
void findAllUser(){
List<UserDo> users = userDao.findAll();
for (UserDo user : users) {
System.out.println(user);
}
}
//会出现懒加载异常
// 加上以下配置
// spring.jpa.properties.hibernate.enable_lazy_load_no_trans=true
@Test
void findUserById(){
UserDo userDo = userDao.getById(1);
System.out.println(userDo);
}
@Test
void updateUserById(){
UserDo userDo = new UserDo(1,"青钢影","男",22);
// 此方法是修改方法,不是update
userDao.saveAndFlush(userDo);
}
@Test
void deleteUserById(){
userDao.deleteById(1);
System.out.println("删除成功");
}
}