spring boot 访问 MySQL
方式二: spring data jpa
为什么使用 jpa :
第一次使用 Spring JPA 的时候, 感觉这东西简直就是神器, 几乎不需要写什么关于数据库访问的代码一个基本的 CURD 的功能就出来了.
如何使用:
在 pom 文件中引入依赖
- <!--jpa -->
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework.data</groupId>
- <artifactId>spring-data-commons</artifactId>
- <version>2.1.6.RELEASE</version>
- </dependency>
- <!-- mysql 驱动 -->
- <dependency>
- <groupId>MySQL</groupId>
- <artifactId>MySQL-connector-java</artifactId>
- </dependency>
配置数据库:
- spring.datasource.url=jdbc:MySQL://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
- spring.datasource.username=root
- spring.datasource.password=root
- spring.datasource.driver-class-name=com.MySQL.jdbc.Driver
- # JPA 相关配置
- spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
- spring.jpa.show-sql=true
- spring.jpa.hibernate.ddl-auto=update
JPA 相关配置
- # 在 SrpingBoot 2.0 版本中, Hibernate 创建数据表的时候, 默认的数据库存储引擎选择的是 MyISAM (之前是 InnoDB). 这个参数是在建表的时候, 将默认的存储引擎切换为 InnoDB 用的.
- spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect
配置在日志中打印出执行的 SQL 语句信息.
spring.jpa.show-sql=true
每次运行程序, 没有表格会新建表格, 表内有数据不会清空, 只会更新
spring.jpa.hibernate.ddl-auto=update
创建 Entity Dao Service Controller 三层文件:
- entity:
- @Entity
- @Table(name = "user")
- public class JpaUser {
- @Id
- @GeneratedValue
- private Long id;
- private String name;
- private int age;
- private String sex;
- public Long getId() {
- return id;
- }
- public void setId(Long id) {
- this.id = id;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- public int getAge() {
- return age;
- }
- public void setAge(int age) {
- this.age = age;
- }
- public String getSex() {
- return sex;
- }
- public void setSex(String sex) {
- this.sex = sex;
- }
- }
- Dao
写一个接口 继承 JpaRepository 简单的 CRUD 可以直接使用了
- @Repository
- public interface JpaUserDao extends JpaRepository<JpaUser,Long> {
- }
- Service
- @Service
- public class JpaUserService {
- @Autowired
- JpaUserDao userDao;
- public JpaUser add(JpaUser user){
- return userDao.save(user);
- }
- public JpaUser update(JpaUser user){
- return userDao.save(user);
- }
- public JpaUser getById(long id){
- return userDao.findById(id).get();
- }
- }
- Controller
- @RestController
- @RequestMapping("/jpaUser")
- public class JpaUserController {
- @Autowired
- JpaUserService userService;
- @RequestMapping(value = "/add",method = RequestMethod.POST)
- public Object addUser(@RequestBody JpaUser user){
- return userService.add(user);
- }
- @RequestMapping(value = "/update",method = RequestMethod.PUT)
- public Object updateUser(@RequestBody JpaUser user){
- return userService.update(user);
- }
- @RequestMapping(value = "/find",method = RequestMethod.GET)
- public Object updateUser(long id){
- return userService.getById(id);
- }
- }
完成 启动 访问测试
jpa 配置说明:
spring.jpa.hibernate.ddl-auto=create ---- 每次运行该程序, 没有表格会新建表格, 有表会删除表重新创建表
spring.jpa.hibernate.ddl-auto=create-drop ---- 每次程序结束的时候会清空表
spring.jpa.hibernate.ddl-auto=update ---- 每次运行程序, 没有表格会新建表格, 表内有数据不会清空, 只会更新表结构
spring.jpa.hibernate.ddl-auto=validate ---- 运行程序会校验数据与数据库的字段类型是否相同, 不同会报错
来源: http://www.bubuko.com/infodetail-3077781.html