创建数据库
使用数据库工具创建数据库
配置依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.46</version>
</dependency>
application.yml 配置数据源
server:
port: 10087
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
url: jdbc:mysql://localhost:3306/demo?CharacterEncoding=utf8
jpa:
database: mysql
hibernate:
ddl-auto: update
show-sql: true
创建数据库实体:
@Data
@AllArgsConstructor
@NoArgsConstructor
@Entity //数据实体
@Table(name = "t_user") //数据库表名称
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private Integer age;
private String city;
}
解释:@Data @AllArgsConstructor @NoArgsConstructor是Lombok插件中的注解方法,@Data可以生成getter,setter,重写tostring,equals,hashcode,@AllArgsConstructor @NoArgsConstructor无参构造,有参构造等方法,减少样板代码,增加可读性。
Dao层编码:
public interface UserRepository extends JpaRepository<User, Integer> {
}
通过继承链可以看到:
Repository 是一个普通是声明接口
CrudRepository 添加增删改查的相关方法
PagingAndSortingRepository 添加分页及排序的功能
JpaRepository 扩展了常用方法
UserRepository 自定义Repository
新建一个Dao层测试类:
@RunWith(SpringRunner.class)
@SpringBootTest
public class UserRepositoryTest{
@Autowired
private UserRepository userRepository;
@Test
public void save() {
User user = new User();
user.setName("zyf");
user.setAge(26);
user.setCity("北京");
userRepository.save(user);
//Hibernate: insert into t_user (age, city, name) values (?, ?, ?)
Assert.assertNotNull(user.getId());
}
@Test
public void find(){
User user = userRepository.findOne(1);
//Hibernate: select user0_.id as id1_0_0_, user0_.age as age2_0_0_, user0_.city as city3_0_0_, user0_.name as name4_0_0_ from t_user user0_ where user0_.id=?
Assert.assertEquals("zyf", user.getName());
}
@Test
public void delete() {
userRepository.delete(2);
//Hibernate: delete from t_user where id=?
}
}
通过测试看到控制台打印的sql语句,证明执行成功。