今天要做一个新系统,想着用下Jpa,以前都是在别人搭好的框架上整的,网上看了一顿教程,感觉很简单我就开始了,没想到花了我漫长的五小时,直到下班也没有解决问题,我一回到家,我就在家里的电脑上开整了,三分钟一个demo就出来了,虽然到现在我依然不知道公司的为啥会失败,但是把这次在家的过程记录下来,留作参考。
pom文件引入jpa
配置文件里配置数据库
# 数据库的配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/mytest
spring.datasource.username=root
spring.datasource.password=123456
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.max-idle=10
spring.datasource.max-wait=10000
spring.datasource.min-idle=5
spring.datasource.initial-size=5
然后来一个绑定了数据库表的实体
package com.wudiqiang.entity;
import javax.persistence.*;
/**
* @Author: 着凉的皮皮虾
* @Date: 2019/7/31 22:57
*/
@Table(name = "user")
@Entity
public class User {
@Id
@GeneratedValue
private Long id;
private String username;
private String password;
public User() {
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
这里据说是需要一个无参的构造函数的,具体为啥目前不是很清楚
接下来,继承Repository
package com.wudiqiang.dao;
import com.wudiqiang.entity.User;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;
/**
* @Author: 着凉的皮皮虾
* @Date: 2019/7/31 23:00
*/
@Repository
public interface UserDao extends JpaRepository<User, Long> {
User findFirstById(Long id);
}
紧接着,注入刚才写的接口
package com.wudiqiang.controller;
import com.wudiqiang.dao.UserDao;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @Author: 着凉的皮皮虾
* @Date: 2019/7/31 23:01
*/
@RequestMapping("/jpa")
@RestController
public class JpaTest {
@Autowired
private UserDao userDao;
@GetMapping("/get")
public String get() {
return userDao.findFirstById(1L).toString();
}
}
配置到这里就算完成了,启动程序,打开浏览器
在公司折磨了我四五个小时的问题,就这么解决了?
没有一丝一毫的波澜就解决了。
但是这种感觉让我非常不爽,我甚至不清楚它内部到底是怎么运行的,这种没有掌控的感觉,是最让人难受又无助的。我决定花时间研究一下SpringDataJpa,争取从根本上理解为啥子会出现类似于entityManagerFactory这个BeanCreatException的异常的情况,以及最终解决公司的系统上发生的问题。
当然,在家本地写的这个东西就是用来测试的,大家不要在意没配置数据库连接池这些个细节。